CSS3 позволил делать много новых эффектов, не прибегая к помощи JavaScript-библиотек. В этой статье расскажу о том, как реализовать с помощью css3 плавное появление любого элемента.
Смотрим на примере
Допустим, у нас есть два одинаковых блока. В html разметке я предлагаю обозначить их так:
Каждый элемент получил два стилевых класса. Зачем это нужно? Первым классом мы зададим общие правила внешнего вида, блоки же одинаковые, так что их можно описать совместно. В реальном примере, скорее всего, будет по-другому. Также каждый элемент получил собственный уникальный стилевой класс. Он тоже пригодится.
Block{ font-size: 50px; width: 200px; height: 120px; background: green; margin-bottom: 30px; transition: 1s }
Этими правилами мы прописали обоим блокам одинаковый внешний вид: высоту, ширину, размер шрифта, отступ и зеленый фон. Последнее свойство transition как раз и является относительно новым и входит в версию CSS3 . Оно обозначает задержку, после которой выполняются определенные правила. По сути, именно это дает плавное появление.
В примере я прописал 1 секунду, по желанию можно поставить больше или меньше. Когда вы увидите свойство в действии, то сами сможете отрегулировать его значение.
Как реализовать в css3 плавное появление?
Дальше есть два варианта действий. Допустим, нам нужно пока скрыть второй блок, а при наведении на первый плавно выводить его. Наиболее часто для скрытия элемента применяют правило display: none , но оно не даст именно того, чего нужно – плавного появления. Элемент появится резко.
Поэтому мы поступим по-другому. Смотрите этот код:
Block2{ opacity: 0; } .block1:hover + .block2{ opacity: 1 }
Мы использовали еще одно CSS3-свойство – opacity . Оно задает прозрачность элемента, которая прописывается от 0 (полностью прозрачный) до 1 (полностью непрозрачный) элемент.
Сначала полностью убираем второй блок от глаз, делая его прозрачным. Теперь нужно сделать так, чтобы при наведении мышки на первый блок плавно появлялся второй. Для этого используется такой вот интересный комбинированный селектор.block1:hover + .block2
То есть само изменение стилей происходит при наведении на первый блок, а изменяется непосредственно второй. Благодаря прописанному ранее transition он появится не резко, а плавно, что нам с вами и нужно. Изменяя значение transition можно сделать появление более резким или наоборот еще больше замедлить его.
В сегодняшнем уроке мы будем реализовывать эффект, который в основном подойдет для изображений. Результатом урока будет появляющееся описание при наведение на изображение.
Данный эффект немного напоминает эффект, который реализован в Яндкес.Картинки . Может и большого сходства нет, но что-то похожее наблюдается.
Шаг 1. HTML-разметка
HTML-разметка очень простая. Состоит из основного блока, картинки и блока с описанием:
Wattie Buchan
The Exploited
Шаг 2. Стили основного блока
В данном шаге мы напишем стили для основного блока. Для этого создадим класс и назовем его columns :
Columns { position: relative; width: 200px; display: inline; float: left; margin: 10px; padding: 0; }
Здесь мы указали ширину блока, установили способ позиционирования элемента, внешние отступы также установили выравнивание.
Шаг 3. Стили для изображения
В данном шаге мы напишем стили для изображения, которое находится внутри блока item :
Item img { position: relative; }
Шаг 4. Стили для блока с описанием
В этом шаге мы напишем стили для блока с описанием, который имеет класс info :
Info { position: absolute; left: -10px; top: -10px; padding: 210px 12px 5px 8px; width: 200px; background: #fff; display: none; box-shadow: 0px 0px 6px #7d7d7d; } .info p {font-family: Tahoma; font-size: 13px;}
Здесь мы указали ширину блока, фоновый цвет, тени, внешние и внутренние отступы, а также скрыли блок с описанием. Т. е. он будет появляться только при наведение на него мышью.
Шаг 4. Псевдоэлемент:hover
На данном шаге мы пропишем стили для псевдоэлемента:hover. Т.е. действие, которое будет совершаться при наведении курсора на блок с картинкой:
Item:hover .info { display: block; z-index: 99; } .item:hover { z-index: 99; }
Здесь мы указали свойство display: block; . Это нужно для того, чтобы элемент появлялся при наведении на него мышью. Также мы указали значение z-index: 99.
Если на данном шаге посмотреть результат, то мы увидим, что при наведении появляется блок с описанием. Но, при этом картинка уходит на задний план. Чтобы решить данную проблему нам нужно прописать следующие стили:
Item:hover img { z-index: 999; }
Мы придали свойству z-index значение 999 . Это говорит о том, что теперь картинка находится выше всех остальных элементов. Поэтому, ее теперь будет видно при наведении мышью.
Полный код стилей
Columns { position: relative; width: 200px; display: inline; float: left; margin: 10px; padding: 0; } .item img { position: relative; } .info { position: absolute; left: -10px; top: -10px; padding: 210px 12px 5px 8px; width: 200px; background: #fff; display: none; box-shadow: 0px 0px 6px #7d7d7d; } .info p {font-family: Tahoma; font-size: 13px;} .item:hover .info { display: block; z-index: 99; } .item:hover { z-index: 99; } .item:hover img { z-index: 999; }
На этом данный урок закончен. Спасибо за внимание.
Салютики!
Мне на ушко прошептал wordstat.yandex.ru, что вы ищите эффект, когда при наведении на текст появляется
скрытый текст или картинка
. В этой статье я не только выложу код этого эффекта, но и покажу, как сделать, чтобы при наведении текст или картинка появлялись и исчезали. Код не сложный, написан на обычном HTML+CSS.
Этот эффект можно использовать:
Если нужно вставить скрытую подсказку к слову;
Если нужно показать ответ на загадку;
Если нужно показать вариант ответа на тест;
И другие варианты
○ При наведении на текст, появляется скрытый текст
В HTML вставьте вот этот код: