将更多图像添加到纯CSS滑块

时间:2018-02-02 15:36:37

标签: css

我试图理解这个纯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>

3 个答案:

答案 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%; }
}