На просторах интернета существует множество методов, которые могут быть использованы для создания интересных взаимодействий, но самый простой и прекрасный — это CSS , и в частности, дополнения, которые пришли с CSS3. Еще в старые времена нам приходилось полагаться на JavaScript для такого рода эффектов, но благодаря постоянно увеличивающийся поддержки CSS3 во всех браузерах, теперь возможны такие эффекты без скриптов. Есть, к сожалению, до сих пор браузеры ( Internet Explorer 9 и ниже), которые не поддерживают CSS3.
Сегодня мы посмотрим как можно применить классные hover-эффекты к изображениям, чтобы показать и скрыть описания к изображениям.Если Вы предпочитаете следовать за кодом, можете скачать файлы здесь.
Демо 1
Первое демо самое простое: изображение отлетит вправо, раскрыв описание.
HTML Разметка
Для первого демо мы будем использовать неупорядоченный список, затем внутри списка обернем заголовок и изображение. Обратите внимание, что мы также добавляем класс «demo-1» и «effect» внутри неупорядоченного списка тегов. Разметка будет выглядеть следующим образом:
<ul class="demo-1 effect">
<li>
<h2>This is a cool title!</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit,
sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nost.</p>
</li>
<li><img class="top" src="images/image1.jpg" alt=""/></li>
</ul>
CSS стили
В стилях мы установим относительное позиционирование для класса «demo-1», а затем выставим ширину и высоту. Мы также скроем выходящие за край элементы. Я также прописал некоторые основные стили для заголовка «h2» и тегов «р» , а также тегу «img» . Теперь для класса «effect» укажем абсолютное позиционирование и укажем «margin: -15px» сверху и снизу. Мы будем использовать CSS3 свойство «transition» для плавности. Наши стили выглядят следующим образом:
.demo-1 {
position:relative;
width:300px;
height:200px;
overflow:hidden;
float:left;
margin-right:20px;
background-color:rgba(26,76,110,0.5);
}
.demo-1 p,.demo-1 h2 {
color:#fff;
padding:10px;
left:-20px;
top:20px;
position:relative;
}
.demo-1 p {
font-family:'Lato';
font-size:12px;
line-height:18px;
margin:0;
}
.demo-1 h2 {
font-family:'Lato';
font-size:20px;
line-height:24px;
margin:0;
}
.effect img {
position:absolute;
margin:-15px 0;
right:0;
top:0;
cursor:pointer;
-webkit-transition:top .4s ease-in-out,right .4s ease-in-out;
-moz-transition:top .4s ease-in-out,right .4s ease-in-out;
-o-transition:top .4s ease-in-out,right .4s ease-in-out;
transition:top .4s ease-in-out,right .4s ease-in-out;
}
.effect img.top:hover {
top:-230px;
right:-330px;
padding-bottom:200px;
padding-left:300px;
}
Демо 2
В нашем втором демо изображение будет сползать вниз и при наведении курсора на изображение будет видно описание.
HTML Разметка
Для второго демо будет почти такая же разметка как выше. Но тут мы добавим еще классы «demo-2» и «zero»:
<ul class="demo-2 effect">
<li>
<h2 class="zero">This is a cool title!</h2>
<p class="zero">Lorem ipsum dolor sit amet.</p>
</li>
<li><img class="top" src="images/image1.jpg" alt=""/></li>
</ul>
CSS стили
Стили будут почти такими же как и в первом демо, за исключением того, что на этот раз мы перемещаем изображение вниз указав «bottom: 96px » . Мы также используем здесь CSS3 свойство «transition» для плавности:
.demo-2 {
position:relative;
width:300px;
height:200px;
overflow:hidden;
float:left;
margin-right:20px;
background-color:rgba(26,76,110,0.5);
}
.demo-2 p,.demo-2 h2 {
color:#fff;
padding:10px;
left:-20px;
top:20px;
position:relative;
}
.demo-2 p {
font-family:'Lato';
font-size:12px;
line-height:18px;
margin:0;
}
.demo-2 h2 {
font-size:20px;
line-height:24px;
margin:0;
font-family:'Lato';
}
.effect img {
position:absolute;
left:0;
bottom:0;
cursor:pointer;
margin:-12px 0;
-webkit-transition:bottom .3s ease-in-out;
-moz-transition:bottom .3s ease-in-out;
-o-transition:bottom .3s ease-in-out;
transition:bottom .3s ease-in-out;
}
.effect img.top:hover {
bottom:-96px;
padding-top:100px;
}
h2.zero,p.zero {
margin:0;
padding:0;
}
Демо 3
Для нашего последнего демо мы создадим эффект перелистывания. Это означает, что при наведении курсора на изображение, оно будет вращаться вокруг своей оси, раскрывая описание.
HTML Разметка
Для нашей последней демо-разметки мы будем использовать другую структуру. Во-первых, мы будем использовать тэг «figure» из HTML5 вместе с «figcaption» . Также укажем класс «demo-3» для нашего неупорядоченного списка:
<ul class="demo-3">
<li>
<figure>
<img src="images/image1.jpg" alt=""/>
<figcaption>
<h2>This is a cool title!</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit,
sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nost.</p>
</figcaption>
</figure>
</li>
</ul>
CSS стили
В стилях мы укажем изображению относительное положение, а затем спрячем, указав «backface-visibility». Мы также используем «rotateY transform: —180 degrees» для «figcaption» , а затем изменим его на 180 градусов для hover- эффекта изображения и описания:
.demo-3 {
position:relative;
width:300px;
height:200px;
overflow:hidden;
float:left;
margin-right:20px;
}
.demo-3 figure {
margin:0;
padding:0;
position:relative;
cursor:pointer;
margin-left:-50px;
}
.demo-3 figure img {
display:block;
position:relative;
z-index:10;
margin:-15px 0;
}
.demo-3 figure figcaption {
display:block;
position:absolute;
z-index:5;
-webkit-box-sizing:border-box;
-moz-box-sizing:border-box;
box-sizing:border-box;
}
.demo-3 figure h2 {
font-family:'Lato';
color:#fff;
font-size:20px;
text-align:left;
}
.demo-3 figure p {
display:block;
font-family:'Lato';
font-size:12px;
line-height:18px;
margin:0;
color:#fff;
text-align:left;
}
.demo-3 figure figcaption {
top:0;
left:0;
width:100%;
height:100%;
padding:29px 44px;
background-color:rgba(26,76,110,0.5);
text-align:center;
backface-visibility:hidden;
-webkit-transform:rotateY(-180deg);
-moz-transform:rotateY(-180deg);
transform:rotateY(-180deg);
-webkit-transition:all .5s;
-moz-transition:all .5s;
transition:all .5s;
}
.demo-3 figure img {
backface-visibility:hidden;
-webkit-transition:all .5s;
-moz-transition:all .5s;
transition:all .5s;
}
.demo-3 figure:hover img,figure.hover img {
-webkit-transform:rotateY(180deg);
-moz-transform:rotateY(180deg);
transform:rotateY(180deg);
}
.demo-3 figure:hover figcaption,figure.hover figcaption {
-webkit-transform:rotateY(0);
-moz-transform:rotateY(0);
transform:rotateY(0);
}
Оригинал статьи: тут.
Перевод: dev-tricks.ru