【问题标题】:How to make this css3 slider responsive如何使这个 css3 滑块响应
【发布时间】:2017-06-13 19:26:59
【问题描述】:

我发现纯 css3 幻灯片的这个流畅而简单的代码...问题是,它没有响应,因为当图像变小而屏幕尺寸变小时,父 div“滑块”保持在 470 像素。添加宽度时,图像已经像魅力一样响应:100%。有人出主意吗?有没有可能?

HTML:

<div class='slider'>
<div class='slide1'><img src="../lp-pic-first.png"></div>
<div class='slide2'><img src="../lp-pic-second.png"></div>
<div class='slide3'><img src="../lp-pic-four.png"></div>
</div>

CSS:

.slider {
max-width: 1175px;
height: 470px;
position: relative;
width: 94%;
margin: 0 auto;
}
.slide1,.slide2,.slide3,.slide4,.slide5 {
position: absolute;
width: 100%;
height: 100%;
}
.slide1 {

animation:fade 16s infinite;
-webkit-animation:fade 16s infinite;

}
.slide2 {

animation:fade2 16s infinite;
-webkit-animation:fade2 16s infinite;
}

.slide3 {

animation:fade3 16s infinite;
-webkit-animation:fade3 16s infinite;
}



@keyframes fade
{
0%   {opacity:1}
33.333% { opacity: 0}
66.666% { opacity: 0}
100% { opacity: 1}
}
@keyframes fade2
{
0%   {opacity:0}
33.333% { opacity: 1}
66.666% { opacity: 0 }
100% { opacity: 0}
}
@keyframes fade3
{
0%   {opacity:0}
33.333% { opacity: 0}
66.666% { opacity: 1}
100% { opacity: 0}
}

【问题讨论】:

    标签: css slider responsive


    【解决方案1】:

    假设您尝试在幻灯片变大或变小时时保持其纵横比,有几种方法可以做到这一点。

    一种是使用 vw 单位来表示容器的宽度和高度。例如:

    .slider {
      height: 48vw; /* 48/27 = 1.777 (16:9 aspect ratio) */
      height: 27vw;
      position: relative;
      margin: 0 auto;
    }
    

    另一种方法是在整个事物周围添加另一个包装器,并为内部部分提供一个 padding-bottom 值,该值设置为您想要的纵横比。例如:

    HTML:

    <div id="wrapper">
    <div class='slider'>
    <div class='slide1'><img src="../lp-pic-first.png"></div>
    <div class='slide2'><img src="../lp-pic-second.png"></div>
    <div class='slide3'><img src="../lp-pic-four.png"></div>
    </div>
    </div>
    

    CSS:

    #wrapper {
        height: 470px;
        width: 94%;
        max-width: 1175px;
        margin: 0 auto;
    }
    .slider {
        position: relative;
        padding-bottom: 56.25%; /* 9/16 = 0.5625 (16:9 aspect ratio) */
    }
    

    【讨论】:

    • 嘿,谢谢你的帮助,但也许我解释错了 - 图像不是问题,滑块 div 保持在 470 像素(或 29.375em 或其他),而图像适应屏幕尺寸。结果是,有一个高度为 470px 的 div 显示的图像是高尺寸图像的一半。测试了你的解决方案,但没有一个解决这个问题:/.
    【解决方案2】:

    您需要将img-responsive 类添加到img 标记。您的其余代码保持不变。这将根据您的屏幕尺寸更改图像的尺寸。

    .slider {
    max-width: 1175px;
    height: 470px;
    position: relative;
    width: 94%;
    margin: 0 auto;
    }
    .slide1,.slide2,.slide3,.slide4,.slide5 {
    position: absolute;
    width: 100%;
    height: 100%;
    }
    .slide1 {
    
    animation:fade 16s infinite;
    -webkit-animation:fade 16s infinite;
    
    }
    .slide2 {
    
    animation:fade2 16s infinite;
    -webkit-animation:fade2 16s infinite;
    }
    
    .slide3 {
    
    animation:fade3 16s infinite;
    -webkit-animation:fade3 16s infinite;
    }
    @keyframes fade
    {
    0%   {opacity:1}
    33.333% { opacity: 0}
    66.666% { opacity: 0}
    100% { opacity: 1}
    }
    @keyframes fade2
    {
    0%   {opacity:0}
    33.333% { opacity: 1}
    66.666% { opacity: 0 }
    100% { opacity: 0}
    }
    @keyframes fade3
    {
    0%   {opacity:0}
    33.333% { opacity: 0}
    66.666% { opacity: 1}
    100% { opacity: 0}
    }
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
      <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
    
    <div class="container"> 
    <div class='slider'>
    <div class='slide1'><img class="img-responsive" src="http://www.menucool.com/slider/prod/image-slider-2.jpg"></div>
    <div class='slide2'><img class="img-responsive" src="http://www.menucool.com/slider/prod/image-slider-5.jpg"></div>
    <div class='slide3'><img class="img-responsive" src="http://wowslider.com/sliders/demo-5/data/images/sur.jpg"></div>
    </div>
      </div>

    【讨论】:

    • 嘿,谢谢你的帮助,但也许我解释错了 - 图像不是问题,滑块 div 保持在 470 像素(或 29.375em 或其他),而图像适应屏幕尺寸。
    • 你想根据屏幕大小减小div的高度吗?
    • 是的,没错,但是当我给它一个相对高度时,绝对定位的子 div 不再适合了。
    • 您已将 height:100% 分配给幻灯片 1、2 和 3。将其删除并添加 display:inline-block。这将起作用。详情:【链接】(stackoverflow.com/questions/20242962/…)
    • 谢谢你!
    猜你喜欢
    • 1970-01-01
    • 2021-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-11
    相关资源
    最近更新 更多