首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >向纯CSS滑块添加更多图像

向纯CSS滑块添加更多图像
EN

Stack Overflow用户
提问于 2018-02-02 23:36:37
回答 3查看 157关注 0票数 0

我正在尝试理解这个纯CSS滑块背后的数学原理?https://codepen.io/dudleystorey/pen/kFoGw?limit=all&page=1&q=image+slider

我的目标是把它变成一个7图像滑块。

例如,每次我将另一个图像添加到旋转中时,它会使滑块变得混乱(两个图像堆叠在一起)。我想了解计算,以便每个将显示在滑块的完整宽度为30秒。

代码语言:javascript
运行
复制
@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; 
}
代码语言:javascript
运行
复制
<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>

EN

回答 3

Stack Overflow用户

发布于 2018-02-02 23:52:22

如果要向滑块添加更多图像,请向滑块类添加更多<figures></figures>标签。例如:

代码语言:javascript
运行
复制
<figure>
    <img src="YOUR_IMAGE_HERE.jpg" alt>
    <figcaption>NEW IMAGE, FOUND IN YOUR FOLDER</figcaption>
</figure>

只需记住将其保存在<figure class="slider"> </figure>中。在CSS中,您还可以找到动画应该使用的秒数的代码。这就是如何扩展/减少每张幻灯片的限制。

票数 0
EN

Stack Overflow用户

发布于 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元素(最好放在中间的某个位置),就可以了。

(我将标题移到了顶部,并输入了数字。现在,您可以清楚地看到带有六个不同图像的滑块。)

票数 0
EN

Stack Overflow用户

发布于 2018-02-02 23:54:14

这是我的分析。有5个相同宽度的图像将在30秒内显示。将100%的动画时间除以5个图像: 100%/5 = 20%。你也会注意到有5%的跳跃。我不确定,但我认为这只是为了得到一个更平滑的动画(即从20%到25%,图像“稳定下来”)。所以可以说,如果你需要6张图片,那么每张图片之间应该有100%/6 = 16.67%的跳变。

代码语言:javascript
运行
复制
@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%; }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48586031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档