主要的思想是运行一个超高速图像幻灯片在悬停和显示当前图像捕鼠。它只是一个花哨的效果玩和我Contain.r得到的想法。我们会使用CSS动画幻灯片和控制与animation-play-state暂停运行。
这是我们简单的结构:
<div class="hs-wrapper">
<img src="images/1.jpg" alt="image01"/>
<img src="images/2.jpg" alt="image02"/>
<img src="images/3.jpg" alt="image03"/>
<img src="images/4.jpg" alt="image04"/>
<img src="images/5.jpg" alt="image05"/>
<img src="images/6.jpg" alt="image06"/>
<img src="images/7.jpg" alt="image07"/>
<img src="images/8.jpg" alt="image08"/>
<div class="hs-overlay">
<span>Summer <strong>2012</strong></span>
</div>
</div>
我们将使用一个动画显示和隐藏图像:
.hs-wrapper img{
top: 0px;
left: 0px;
position: absolute;
animation: showMe 0.8s linear infinite 0s forwards;
animation-play-state: paused;
}
动画将停了下来,我们就运行它徘徊:
.hs-wrapper:hover img{
animation-play-state: running;
}
动画会使图像可见,把它的“堆栈”:
@keyframes showMe {
0% { visibility: visible; z-index: 100; }
12.5% { visibility: visible; z-index: 100; }
25% { visibility: hidden; z-index: 0; }
100% { visibility: hidden; z-index: 0; }
}
正如你所看到的,每个形象都有相同的动画,但是我们将开始为每个图像动画延迟。我们也想反向图像的叠加顺序通过设置相应的z - index。因为我们将整个动画为0.8秒,我们会延迟开始为每个图像0.1秒(除了第一个):
.hs-wrapper img:nth-child(1){
z - index:9;
}
.hs-wrapper img:nth-child(2){
animation-delay:0.1秒;
z - index:8;
}
.hs-wrapper img:nth-child(3){
animation-delay:0.2秒;
z - index:7;
}
。hs-wrapper img:nth-child(4){
animation-delay:0.3秒;
z - index:6;
}
动画的百分比计算如下:以100%的动画时间间隔和分发8图像。每一个运行0.1秒这意味着我们希望第二图像显示12.5%。第二个图像将显示,将当前的(虽然他们有相同的z - index),因为它是在HTML结构。在尝试一些其他的可能性(即不捉弄z - index,设置12.6%,下一步,等等)看来
覆盖,这将显示在盘旋,将有一个绝对的位置,因为我们想淡入淡出效果和动画盒阴影,我们将添加一个转变:
.hs-overlay{
position: absolute;
width: 100%;
height: 100%;
opacity: 0;
z-index: 500;
background: rgba(0,0,0,0.6);
box-shadow: 0 0 0 0 rgba(255,255,255,0.3) inset;
pointer-events: none;
transition: all 0.3s linear;
}
在徘徊,幻灯片开始运行时,我们将展示覆盖:
.hs-wrapper:hover .hs-overlay{
opacity: 1;
box-shadow: 0 0 0 5px rgba(255,255,255,0.3) inset;
}
你可以增加透明度水平的背景颜色叠加为了使效果更加微妙。注意,图片有相同的背景,使这种影响seizure-inducing比如果你想使用一个不同的颜色。黑白图像中含有这样的一个不透明的覆盖。