效果:
http://demo.shanhubei.com/demo/css3hover/
这是一款使用CSS3实现的百叶窗式鼠标滑过hover图片动画效果。该CSS3百叶窗式鼠标hover图片动画效果当鼠标移动到图片上时,通过伪元素来制作方块移动效果,形成百叶窗组合运动效果。
准备
示例基于bootstrap3,所以在页面中引入bootstrap和font-awesome字体图标文件。
<link rel="stylesheet" href="path/to/bootstrap.min.css">
<link rel="stylesheet" href="path/to/font-awesome.min.css">
HTML结构
该CSS3百叶窗式鼠标hover图片动画效果的HTML结构如下:
<div class="container>
<div class="row>
<div class="col-md-4 col-sm-6>
<div class="box>
<img src="images/img-1.jpg>
<div class="box-content>
<div class="inner-content>
<h3 class="title>Williamson</h3>
<span class="post>Web Developer</span>
</div>
<ul class="icon>
<li><a href="#><i class="fa fa-search></i></a></li>
<li><a href="#><i class="fa fa-link></i></a></li>
</ul>
</div>
</div>
</div>
<div class="col-md-4 col-sm-6>
<div class="box>
<img src="images/img-2.jpg>
<div class="box-content>
<div class="inner-content>
<h3 class="title>Kristiana</h3>
<span class="post>Web Designer</span>
</div>
<ul class="icon>
<li><a href="#><i class="fa fa-search></i></a></li>
<li><a href="#><i class="fa fa-link></i></a></li>
</ul>
</div>
</div>
</div>
</div>
</div>
CSS样式
然后通过下面的CSS代码来实现百叶窗式鼠标hover图片动画效果,直接上代码。
.box{
text-align: center;
overflow: hidden;
position: relative;
}
.box img{
width: 100%;
height: auto;
transform: scale(1.6);
transition: all 0.3s ease 0s;
}
.box:hover img{
filter: grayscale(100%);
transform: scale(1.2);
}
.box .box-content{
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
z-index: 2;
transition: all 0.2s ease 0s;
}
.box:before,
.box:after,
.box .box-content:before,
.box .box-content:after{
content: "";
width: 100%;
height: 25%;
background: linear-gradient(to right,rgba(0,0,0,0.9),rgba(0,0,0,0.7),transparent,rgba(0,0,0,0.7),rgba(0,0,0,0.9));
z-index: 1;
position: absolute;
top: 0;
left: 0;
transition: all 0.3s ease 0s;
}
.box:before{ transform: translateX(100%); }
.box:after{
height: 25.1%;
top: 25%;
transform: translateX(-100%);
transition-delay: 0.05s;
}
.box .box-content:before{
top: 50%;
transform: translateX(100%);
transition-delay: 0.1s;
}
.box .box-content:after{
top: 75%;
transform: translateX(-100%);
transition-delay: 0.15s;
}
.box:hover:before,
.box:hover:after,
.box:hover .box-content:before,
.box:hover .box-content:after{ transform: translateX(0); }
.box .inner-content{
padding: 7px 0;
text-align: right;
position: absolute;
bottom: 10px;
right: 20px;
z-index: 2;
transition: all 0.3s ease 0s;
}
.box .title{
font-size: 22px;
font-weight: 700;
color: #faac01;
letter-spacing: 1px;
text-transform: uppercase;
margin: 0 0 3px 0;
opacity: 0;
transform: translateY(150px);
transition: all 0.4s ease 0s;
}
.box .post{
display: inline-block;
padding: 0 5px;
font-size: 16px;
font-style: italic;
color: #fff;
opacity: 0;
transform: translateY(50px);
transition: all 0.4s ease 0s;
}
.box:hover .title,
.box:hover .post{
opacity: 1;
transform: translate(0, 0);
}
.box .icon{
padding: 0;
margin: 0;
list-style: none;
position: absolute;
top: -200px;
left: 10px;
z-index: 2;
transition: all 0.4s ease 0.2s;
}
.box:hover .icon{ top: 15px; }
.box .icon li a{
display: block;
width: 40px;
height: 40px;
line-height: 40px;
background: #faac01;
font-size: 20px;
color: #fff;
margin-bottom: 10px;
position: relative;
transition: all 0.3s ease 0s;
}
.box .icon li a:hover{
text-decoration: none;
border-radius: 30%;
background: #fff;
color: #faac01;
}
@media only screen and (max-width:990px){
.box{ margin-bottom: 30px; }
}
@media only screen and (max-width:479px){
.box .title{ font-size: 18px }
}