我正在尝试理解这个纯CSS滑块背后的数学原理?https://codepen.io/dudleystorey/pen/kFoGw?limit=all&page=1&q=image+slider
我的目标是把它变成一个7图像滑块。
例如,每次我将另一个图像添加到旋转中时,它会使滑块变得混乱(两个图像堆叠在一起)。我想了解计算,以便每个将显示在滑块的完整宽度为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>
发布于 2018-02-02 23:52:22
如果要向滑块添加更多图像,请向滑块类添加更多<figures></figures>标签。例如:
<figure>
<img src="YOUR_IMAGE_HERE.jpg" alt>
<figcaption>NEW IMAGE, FOUND IN YOUR FOLDER</figcaption>
</figure>只需记住将其保存在<figure class="slider"> </figure>中。在CSS中,您还可以找到动画应该使用的秒数的代码。这就是如何扩展/减少每张幻灯片的限制。
发布于 2018-02-02 23:52:31
首先,原始版本只有四个(不同!)图片,你需要五个数字(第一个和最后一个是一样的)才能达到永不停止滑动的效果。
然后,您需要将figure.slider的宽度设置为700% (7位数而不是5位数),并在滑动动画中添加4个额外的关键帧。现在,四个图像中的每一个在动画的20%时间内都保持可见,而每个过渡占5% (乘以4= 20%);这给出了100%的动画长度。你需要把它分成六个不同的图像,例如0,13,17,30,34,47,51,64,68,81,85,97,100 (注意:它不是完全均匀的,但足够接近)。最后,调整百分比偏移量。
现在,在滑块中添加两个额外的figure元素(最好放在中间的某个位置),就可以了。
(我将标题移到了顶部,并输入了数字。现在,您可以清楚地看到带有六个不同图像的滑块。)
发布于 2018-02-02 23:54:14
这是我的分析。有5个相同宽度的图像将在30秒内显示。将100%的动画时间除以5个图像: 100%/5 = 20%。你也会注意到有5%的跳跃。我不确定,但我认为这只是为了得到一个更平滑的动画(即从20%到25%,图像“稳定下来”)。所以可以说,如果你需要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%; }
}https://stackoverflow.com/questions/48586031
复制相似问题