我试图理解这个纯CSS滑块背后的数学运算方式是什么? https://codepen.io/dudleystorey/pen/kFoGw?limit=all&page=1&q=image+slider
我的目标是将其变成七个图像滑块。
例如,每次我向旋转添加另一个图像时,它会使滑块向上混淆(两个图像堆叠在一起。)我想了解计算结果,因此每个图像都会显示在滑块的整个宽度上30秒。
@import url(https://fonts.googleapis.com/css?family=Istok+Web);
@keyframes slidy {
0% { left: 0%; }
20% { left: 0%; }
25% { left: -100%; }
45% { left: -100%; }
50% { left: -200%; }
70% { left: -200%; }
75% { left: -300%; }
95% { left: -300%; }
100% { left: -400%; }
}
* {
box-sizing: border-box;
}
body, figure {
margin: 0; background: #101010;
font-family: Istok Web, sans-serif;
font-weight: 100;
}
div#captioned-gallery {
width: 100%; overflow: hidden;
}
figure.slider {
position: relative; width: 500%;
font-size: 0; animation: 30s slidy infinite;
}
figure.slider figure {
width: 20%; height: auto;
display: inline-block; position: inherit;
}
figure.slider img { width: 100%; height: auto; }
figure.slider figure figcaption {
position: absolute; bottom: 0;
background: rgba(0,0,0,0.4);
color: #fff; width: 100%;
font-size: 2rem; padding: .6rem;
}
<base href="https://s3-us-west-2.amazonaws.com/s.cdpn.io/4273/">
<div id="captioned-gallery">
<figure class="slider">
<figure>
<img src="hobbiton-lake.jpg" alt>
<figcaption>Hobbiton, New Zealand</figcaption>
</figure>
<figure>
<img src="wanaka-drowned-tree.jpg" alt>
<figcaption>Wanaka, New Zealand</figcaption>
</figure>
<figure>
<img src="utah-peak.jpg" alt>
<figcaption>Utah, United States</figcaption>
</figure>
<figure>
<img src="bryce-canyon-utah.jpg" alt>
<figcaption>Bryce Canyon, Utah, United States</figcaption>
</figure>
<figure>
<img src="hobbiton-lake.jpg" alt>
<figcaption>Hobbiton, New Zealand</figcaption>
</figure>
</figure>
</div>
答案 0 :(得分:0)
如果要向滑块添加更多图像,请在滑块类中添加更多<figures></figures>
个标记。例如:
<figure>
<img src="YOUR_IMAGE_HERE.jpg" alt>
<figcaption>NEW IMAGE, FOUND IN YOUR FOLDER</figcaption>
</figure>
请记住将其保留在<figure class="slider"> </figure>
内。在CSS中,您还可以找到动画应该使用多少秒的代码。这就是你如何扩展/减少每张幻灯片的限制。
答案 1 :(得分:0)
首先,原版只有四个(不同的!)图像,你需要五个数字(第一个和最后一个是相同的)才能达到永无止境的滑动效果。
然后,您需要将figure.slider
的宽度设置为700%(7而不是5个数字),并为滑动动画添加四个额外的关键帧。现在,四个图像中的每一个都保持20%的动画可见,而转换每个占5%(四次= 20%);这给出了总动画长度的100%。
您需要将其划分为六个不同图像的好段,例如0,13,17,30,34,47,51,64,68,81,85,97,100(注意:它不是完全均匀但足够接近)。最后,调整百分比偏移量。
现在,在滑块中添加两个额外的图形元素(最好在中间的某个位置),然后就可以了。
DEMO (我将标题移到顶部并输入数字。现在您可以清楚地看到带有六个不同图像的滑块。)
答案 2 :(得分:0)
这是我的分析。有超过30秒的5个相同宽度的图像。将100%的动画时间除以5张图像:100%/ 5 = 20%。你也会注意到有5%的跳跃。我不确定,但我认为这只是为了获得更平滑的动画(即从20%到25%,图像和#34;稳定下来&#34;)。因此,如果您需要6张图像,那么每张图像之间应该有100%/ 6 = 16.67%的跳跃。
@keyframes slidy {
0% { left: 0%; }
20% { left: 0%; } // +20%
25% { left: -100%; }
45% { left: -100%; } // +20%
50% { left: -200%; }
70% { left: -200%; } // +20%
75% { left: -300%; }
95% { left: -300%; } // +20%
100% { left: -400%; }
}