使纯css图像滑块响应

时间:2018-01-29 20:57:54

标签: css responsive-design responsive

以下纯css滑块运行良好,但我需要使其响应。我已经尝试用百分比和vw替换基于像素的大小,但它没有排队。我会感激任何想法。

这是html:

<section class="slideshow">
  <div class="slideshow-container slide">
    <img src="images/anim/home-animation1.jpg" alt="pills">
    <img src="images/anim/home-animation2.jpg" alt="scientist"> 
    <img src="images/anim/home-animation3.jpg" alt="chemical structure">
    <img src="images/anim/proudmembermassbio.jpg" alt="proud member of MassBio"> </div>
</section>

和css:

/*general styles*/

html { box-sizing: border-box; }
*, *:before, *:after { box-sizing: inherit; }

/* SLIDESHOW STYLES */
.slideshow-container {
    width: 1400px; /* the entire "stage" */
    font-size: 0;
    transition: 1s ease;
    height: 315px;
}
.slideshow-container:hover { animation-play-state: paused; }
.slideshow { /* the visible "stage" */
    width: 350px;
    margin: 1rem auto -1rem;
    overflow: hidden;
    border: solid 1px white;
}
img, .text-container {
    width: 350px;
    height: auto;
    display: inline-block;
    font-size: 16px;
    text-align: center;
}
.text-container { /* for text slides */
    height: 195px;
    position: relative;
}
.slide { animation: slide 10s ease infinite; }

@keyframes slide {  
    0% { transform: translateX(0%); }
    12.5% { transform: translateX(0%); }
    25% { transform: translateX(-25%); }
    37.5% { transform: translateX(-25%); }
    50% { transform: translateX(-50%); }
    62.5% { transform: translateX(-50%); }
    75% { transform: translateX(-75%); }
    87.5% { transform: translateX(-75%); }
    99% { transform: translateX(-75%); }
    100% { transform: translateX(0); }
}
.p {
    margin-top: 140px;
    text-align: center;
}

1 个答案:

答案 0 :(得分:0)

对于发布此问题的用户来说,这可能为时已晚,但对于想要纯响应CSS滑块的其他人可能会有所帮助。

我创建了一个working example in this CodePen,它按照要求使用宽度和动画百分比来工作,因此,它具有响应能力,并且在每种分辨率下都非常有效。

所有具有响应能力的主要解决方案都在这里:

slider__container {
    display: flex;
    position: relative;
    animation: 30s slide infinite;
    font-size: 0;
    width: 1000%; /* because I am using 10 slides */
}

应该根据滑块中有多少张幻灯片来计算宽度:slides x 100%(幻灯片乘以100%,在我的示例中为1000%)。

相关问题