Псевдокласс :hover позволяет элементам быть менее статичными, изменяя их свойства при наведении мышки.
при наведении мышки
<style>
.blok {
background: #808991;
color: #FFF;
cursor: pointer;
}
.blok:hover {
background: #D0D941;
color: #000;
}
</style>
<div class="blok">при наведении мышки</div>
Благодаря свойству transition (w3.org) можно сделать плавный переход между состояниями элемента.
плавная смена цвета туда-обратно
<style>
.transition {
transition: 3s;
}
</style>
<div class="blok transition">плавная смена цвета туда-обратно</div>
плавная смена при наведении на div
<style>
.transition2:hover {
transition: 3s;
}
</style>
<div class="blok transition2">плавная смена при наведении на div</div>
плавная смена, когда курсор выведен за пределы div
<style>
.transition3:not(:hover) {
transition: 3s;
}
</style>
<div class="blok transition3">плавная смена, когда курсор выведен за пределы div</div>
сохранение положения :hover
<style>
.transition4 {
transition: 0s 9999999s;
}
.transition4:hover {
transition: 3s;
}
</style>
<div class="blok transition4">сохранение положения :hover</div>
| Свойство | Описание |
|---|---|
| transition-property | свойство [список возможных], на которое распространяется трансформация. При необходимости воздействия на несколько свойств, они перечисляются через запятую.
all
width, background
width
none
|
| transition-duration | время, в течении которого происходит трансформация.
0s
0.5s
1s
5s
|
| transition-delay | время, по истечении которого происходит трансформация.
0s
0.5s
1s
5s
|
| transition-timing-function | указывает как должны изменяться промежуточные значения в кривой времени. Например, начинать развиваться медленно, а потом ускоряться. Трансформация может происходить и плавно на протяжении всего участка времени [cubic-bezier], и рывками в заданное количество шагов [steps].
ease
linear
ease-in
ease-out
ease-in-out
cubic-bezier(.1, .9, .9, 1.5)
cubic-bezier(.1, .9, .9, .1)
cubic-bezier(.1, .9, .9, -1.5)
cubic-bezier(.1, -1.5, .1, 2.5)
step-start
step-end
steps(4, end)
steps(4)
steps(4, start)
|
плавная смена цвета CSS
<style>
.transition1 {
transition: background-color 3s cubic-bezier(0.1, 0.8, 0.5, 2), color 3s 1s linear;
/* или */
transition-property: background-color, color;
transition-duration: 3s;
transition-delay: 0s, 1s;
transition-timing-function: cubic-bezier(0.1, 0.8, 0.5, 2), linear;
}
</style>
<div class="blok transition1">плавная смена цвета CSS</div>
Популярные сочетания transition с другими свойствами, например, opacity или transform
изменение ширины width
<div class="transition-width">изменение ширины width</div>
изменение прозрачности opacity
<div class="transition-opacity">изменение прозрачности opacity</div>
кручение CSS
<div class="transition-rotate">кручение transform: rotate(360deg);</div>
увеличивавшие объекта CSS
<div class="transition-scale">увеличивавшие объекта в два раза transform: scale(2);</div>
смещение вниз CSS
<div class="transition-translate">смещение вниз position: relative;</div>

<style>
div.blok6 {
cursor: pointer;
position: relative;
text-align: center;
}
div.blok6:before {
background-color: rgba(255, 255, 255, 0.2);
border-radius: 10px;
box-shadow: 0 0 10px #A0A9B1 inset;
content: attr(data-title);
font-family: Tahoma;
font-size: 32px;
height: 48px;
line-height: 48px;
opacity: 0;
padding: 0 10px;
position: absolute;
right: 50px;
top: 20px;
-moz-transition: all 1s;
-webkit-transition: all 1s;
-o-transition: all 1s;
transition: all 1s;
}
div.blok6:hover:before {
right: 160px;
opacity: 1;
top: 140px;
}
div.blok6 img {
width: 400px;
-moz-transition: all 1s;
-webkit-transition: all 1s;
-o-transition: all 1s;
transition: all 1s;
}
div.blok6:hover img {
width: 500px;
}
div.blok6:after {
content: attr(data-zagolovok);
display: block;
font-weight: bold;
font-family: Helvetica;
font-size: 20px;
text-align: center;
}
</style>
<div class="blok6" data-title="всплывающий текст" data-zagolovok="подпись под изображением">
<img src="адрес_изображения" /></div>
В статье использованы материалы developer.mozilla.org, vagabundia.blogspot.com.

100 комментариев:
Наташа, спасибо.
Применил кручение на картинки.
К сожалению, не встречалась.
только вот последний пример дёргается как контуженый XD
очень порадовало свойство transform >_< не думал, что эти св-ва вместе так применять можно! ^_^
Никак не соберусь написать статью про transform.
Аааааа, я понял, где мы лоханулись!!!!
Вот смотрите тут:
div.blok6:hover img {
width: 500px;
-moz-transition: all 1s;
-webkit-transition: all 1s;
-o-transition: all 1s;
transition: all 1s;
}
Все транзишн нужно перенести в
div.blok6 img {
width: 400px;
}
Тогда они не будут контузиться :)
Ссылко внизу будет :)
Тематика почти такая же, может быть, найдём друг у друга что-нибудь интересное ;)
Мож потом баннерами обменяемся?)
О-па! Конкурент!!!
На самом деле мне приятно, что получается у читателей находить творческую нотку. Обращайся, помогу, чем смогу.
И, конечно, интересно взглянуть на ссылку ;)
ну а вообще я цсс знаю практически вдоль и поперёк, только вот фантазии периодически не хватает :)
А вы Ява-Скрипт хоть немного знаете???
Очень немного и поверхностно. Ээээ... Из скрипта могу удалить ненужные фрагменты, тем самым настроив его под себя. С событием onclick недавно познакомилась.
Всё начинается с просьбы в комментарии и я лезу в дебри. А когда туда часто ходишь, дебри не кажутся такими уж ужасными.
Посмотри, плиз, выплывающую панель вместо футера - http://prilozhenie13.blogspot.com/. Она фиксированная. Вот здесь код - http://shpargalkablog.ru/2011/08/svoya-panel-navigatsii-blogger.html. Где-то с версткой намудрила, возможно с float: _left.
В Firefox нормально, в Хроме кнопка "последние" (в CSS #footer-dva) "плывёт". Добавляю position: absolute, ситуация меняется, теперь в Firefox наблюдается кривобразие. В IE гаджеты друг под другом.
Пока идеи отсутствуют.
посмотрел ваш код......
короче, я в коде окончательно запутался %.% и сотворил свою панель... конструкция гораздо проще, эффект тот же самый :)
Этот казёл не даёт хтмл публиковать, видимо, создал на домашнем форуме для вас страничку: http://city.first-forum.com/h10-page
ну вы через огненную козявку код скопируете :)
Вот такой вопрос у меня: можно ли сделать, чтобы эффект-"увеличивавшие объекта в два раза transform: scale(2)" запускался от клика мышкой???
Если можно, то в какую сторону копать?
Спасибо.
Или сделала что-то вроде
document.write("<style type='text/css'>
");
document.write(".element {} ");
document.write("</style>");
Или :target - http://shpargalkablog.ru/2012/02/psevdoklassy-css.html
Для картинок http://shpargalkablog.ru/2011/05/kak-uvelichit-izobrazhenie.html
.td_men:hover,.catalog_men:hover
{
border-left:3px solid #f7941f;
border-top:3px solid #f7941f;
border-right:3px solid #f7941f;
border-bottom:3px solid white;
-moz-border-radius: 7px 7px 0px 0px;
-webkit-border-radius: 7px 7px 0px 0px;
background-color:white;
z-index:999999;
}
.td_men,.catalog_men
{
border-left:3px solid white;
border-top:3px solid white;
border-right:3px solid white;
border-bottom:0px solid white;
-moz-border-radius: 7px 7px 0px 0px;
-webkit-border-radius: 7px 7px 0px 0px;
background-color:white;
}
{
-moz-transition: all 1s 1s; -webkit-transition: all 1s 1s; -o-transition: all 1s 1s;
}
Хочется применить подобные фишки для своих сайтов, только банер сделать, чтоб не через IE заходили.
Автор вы лучший сколько разбираюсь с css ни где ещё не видел такого подробного описания с нормальными понятными примерами
5 балов
уже даже на костыль согласен из яваскрипта, если кто имеет опыт поделитесь кому не жалко.
Подскажите плз, как связать transition с height:auto ?
по существу оно работает, разворачивает на высоту элемента, но без замедления, как буд-то 0s стоит время.
Нужно, чтобы оба значения были указаны или в процентах или в величинах, например px. Есть ещё calc.
В процентах таже картина, разворачивается, но без задержки.
А не подскажите может какойнить другой способ?
Нужно, чтоб при длинном тексте, часть теста скрывалась (видимая часть должна быть одинаковой), а при наведении курсора раскрывалась, но только на размер элемента (текста)
Спасибо!!!
Спасибо за отзывчивость.
#blok {
opacity: .5;
transition: 1s;
height:30px;
}
#blok:hover {
opacity: 1;
height:auto;
}
фикисированную и оставлю пока, раз все так сложно.
А по поводу других эффектов, какие есть варианты?
...хотя, думаю самый оптимальный и симпотичный вариант это разворачивание...
Спасибо!
http://shopping.mk.ua/catalog/grupa/69
...эт по поводу разворачивания..., оцените, нормально?
http://shopping.mk.ua/catalog/grupa/69
Хотя на мой взгляд абсолютно бессмысленная информация. Для меня как покупателя это просто набор цифр и букв. Особенно когда идёт полное повторение заголовка-ссылки.
Повторение заголовков лишнее, попадается редко (долго редактировать), ну или когда нет описания, а так там обычно краткие характеристики, вроде так проще ориентироваться в отличиях...
Спасибо!, статья очень помогла!.
<style>
.transition-height {
background: #808991;
height: 30px;
transition: 3s linear;
}
.transition-height:hover {
height: 150px;
}
</style>
<div class="transition-height">увеличение высоты</div>
Частично решает проблему max-height.
У меня вопросик.
Вот игрался, экспериментировал. И получилось. Что эффект. Смещение вниз. Вниз и наверх. Всё прекрасно. А вот в право и лево не едет, а перескакивает. Не подскажите почему. И можно ли сделать по диагонали. Например, из угла вытащить на середину.
А сайт Ваш просто замечательная находка для меня. Столько интересного и всё в одном месте. Спасибо Вам большое!
И всё поехало. Только да в ИЕ не хочет, будем думать.
Спасибо Вам за такой хороший сайт. С его помощью становлюсь умнее. Спасибо.
Скажите пожалуйста как в примере с увеличением ДИВа как у Вас здесь в 2 раза.
Как сделать что бы увеличивался толь в одну сторону. Например в право.
Или чтобы. С верху в низ то есть по высоте.
transform: scale(2,1);
Но я хотел бы. Что бы например с права на лево. И правый край оставался на месте а двигался лишь левый край.
position: relative;
left: 0;
z-index: 2;
background: #808991;
color: #FFF;
margin: 0 auto;
padding: 10px;
text-align: center;
max-width: 500px;
font-size: 20px;
border: 4px ridge black;
cursor: pointer;
transition: 3s linear;
}
.transition-scale:hover {
transform: scale(2,1);
left: 262px;
}
А это Вам забавная штучка. Посмотрите. Как обещал, нарою поделюсь. Спасибо.
P.S.
Блин, какая у Вас капча трудная. Еле можно пролезть .
http://codepen.io/rileyjshaw/pen/LIwdc
От Гугла, прорываются только самые настойчивые :) Без капчи, спама стало много.
Извините.
Спам да. Но у Вас зверская.
Спасибо Вам ещё раз.
Спасибо за вашу статью, очень интересна.
Скажите а можно ли сделать чтобы блок появлялся через несколько секунд сам, а не при наведении.
Пример: http://shpargalkablog.ru/2013/06/popup.html
Например можно сделать такую неоновую рамку: http://jsfiddle.net/x8v6wvt5/
Как здесь http://shpargalkablog.ru/2013/12/blink-text.html только с фоном
Подробнее http://shpargalkablog.ru/2012/03/animaciya-css.html
Извините за замечание, аж глаз режет.
Первая:
#uptocall {
border-radius: 50%;
width:110px;
height:110px;
animation: uptocall 1.5s linear infinite;}
@keyframes uptocall {
0% { background: #2fdbfa; }
50% { background: #2fcae6; }
75% { background: #2fa8bd; }
100% { background: #2fcae6; }
}
Вторая:
#uptocall {
border-radius: 50%;
width:110px;
height:110px;
animation: uptocall 1.5s linear infinite;}
@keyframes uptocall {
0% {box-shadow: 0 0 8px 6px rgba(23,167,167, 0), 0 0 0px 0px rgba(0,0,0,0), 0 0 0px 0px rgba(23,167,167, 0);}
10% {box-shadow: 0 0 8px 6px #1affb3, 0 0 12px 10px rgba(0,0,0,0), 0 0 12px 14px #1affb3;}
100% {box-shadow: 0 0 8px 6px rgba(23,167,167, 0), 0 0 0px 40px rgba(0,0,0,0), 0 0 0px 40px rgba(23,167,167, 0);}
}
#uptocall {
animation: uptocall 1.5s linear 3 forwards, uptocall1 1.5s 4.5s linear infinite;
}
#uptocall {
animation: 10s linear infinite;
animation-name: uptocall, uptocall1;
}
http://jsfiddle.net/NeonRain/jfq6zv2g/
Может посоветуете какие приемы анимации здесь нужны?
Это больше похоже на картинку gif или flash
Можно ли реализовать ПЛАВНУЮ смену изображения фона BODY средствами CSS3 без JS?
Благо дарую.
1) анимации (см комментарий 85)
2) background-attachment: fixed; (при прокрутки, см. http://shpargalkablog.ru/2011/08/fon-dlya-saita-html.html#attachment )
Спасибо вам за эту страничку
Устал перевешивать скриптами то что можно сделать на CSS
Kai | www.dogica.com