CSS 动画滑块

Posted

技术标签:

【中文标题】CSS 动画滑块【英文标题】:CSS Animation slider 【发布时间】:2017-03-11 12:47:53 【问题描述】:

我正在尝试仅使用 CSS 制作动画滑块。我有 3 张图片要水平滑动。我的问题是我可以添加它们转换,但没有动画动画必须在每张图像上停止几秒钟。任何人都知道如何管理它?我用萨斯。

代码:

.slider 
  position: relative;
  height: 100vh;
  // width: 100vw;
  overflow: hidden;
  display: block;
  .slides 
    position: absolute;
    top: 0;
    left: 0;
    overflow: hidden;
    display: flex;
    transition-timing-function: ease-out;
    animation: slide 3s steps(2) infinite;
    .slide 
      height: 100vh;
      width: 100vw;
      padding: 100px;
      margin: 0 auto;
      float: left;
      text-align: center;
      img 
        margin: 0 auto;
        border-radius: 50%;
        height: 250px;
      
      h1 
        color: #323232;
        font-size: 32px;
        line-height: 42px;
        letter-spacing: 1px;
        padding-bottom: 12px;
      
      h4 
        font-weight: 200;
        line-height: 32px;
        letter-spacing: 0.9px;
        display: flex;
      
    
    //end .slide
    &:after 
      content: "";
      clear: both;
      display: block;
    
  
  //end .slides
  @keyframes slide 
    to 
      transform: translateX(-300vw);
    
  

<section class="slider">
  <div class="slides">
    <div class="slide">
      <img src="images/testimonial-img-1.jpg"  />
      <h1>TANYA - Architect</h1>
      <h4>Lorem ipsum dolor sit amet, maecenas eget vestibulum justo imperdiet, wisi risus purus augue vulputate voluptate neque, curabitur dolor libero sodales vitae elit massa.</h4>
    </div>

    <div class="slide">
      <img src="images/testimonial-img-2.jpg"  />
      <h1>LINDA - City planner</h1>
      <h4>Lorem ipsum dolor sit amet, maecenas eget vestibulum justo imperdiet, wisi risus purus augue vulputate voluptate neque, curabitur dolor libero sodales vitae elit massa.</h4>
    </div>

    <div class="slide">
      <img src="images/testimonial-img-3.jpg"  />
      <h1>SANDAR - Developer</h1>
      <h4>Lorem ipsum dolor sit amet, maecenas eget vestibulum justo imperdiet, wisi risus purus augue vulputate voluptate neque, curabitur dolor libero sodales vitae elit massa.</h4>
    </div>
  </div>
</section>

【问题讨论】:

你的代码有几件事,首先,你的代码有错误数量的括号19。其次,您的代码有很多不需要的嵌套。无需将.slide 嵌套在.slider.slides 中。您可以通过在顶层编写它来完成同样的事情。将嵌套级别保持在最低水平总是一个好主意 【参考方案1】:

您的 CSS,已修复:

.slider
      position: relative;
      height: 100vh;
      // width: 100vw;
      overflow: hidden;
      display: block;
    
    .slides
        position: absolute;
        top: 0;
        left: 0;
        overflow: hidden;
        display: flex;
        animation: slide 3s ease-out infinite;    
    
    .slide
        height: 100vh;
        width: 100vw;
        padding: 100px;
        margin: 0 auto;
        float: left;
        text-align: center;
    
    img
        margin: 0 auto;
        border-radius: 50%;
        height: 250px;
    

    h1
        color: #323232;
        font-size: 32px;
        line-height: 42px;
        letter-spacing: 1px;
        padding-bottom: 12px;
    

    h4
        font-weight: 200;
        line-height: 32px;
        letter-spacing: 0.9px;
        display: flex;
    

    &:after
      content: ""; 
      clear: both; 
      display: block; 
    

结束 是错误的。你不能在另一个里面有一个css规则。 此外,如果您使用动画,过渡时间也没有做任何事情,您可以将其添加到动画声明中。过渡和动画是两个不同的东西。两者都有计时功能,您可以在一行或单独声明。

【讨论】:

感谢您的回答。我想括号没问题,我使用 sass 来管理 css。其次,我知道那个解决方案,但是——我的错误——我并不准确。我想改变那三张照片,但在每张照片上我也想停几秒钟。在你写的那种情况下,图像会浮动,并且不会停止三次。【参考方案2】:

试试这个:-

#outerbox
	width:700px;
	overflow:hidden;
	
	
#sliderbox
	position:relative;
	width:2800px;
	animation:animation 20s infinite;
	
	
#sliderbox img
	float:left;
	 
@keyframes animation
	0%
		left:0px;
		
	100%
		left:-2800px;	
			
	
		
<div id="outerbox">
<div id="sliderbox">
<img src="http://labs.qnimate.com/slider/1.jpg"/> 
<img src="http://labs.qnimate.com/slider/2.jpg"/>
<img src="http://labs.qnimate.com/slider/3.jpg"/>
好的,试试这个
#outerbox
	width:700px;
	
#sliderbox
	position:relative;
	width:2800px;
	animation:animation 20s infinite;
	
#sliderbox img
	float:left;
	 
@keyframes animation
	0%
		left:0px;
		
	20%
		left:0px;	
			
	25%
		left:-700px;	
			
	45%
		left:-700px;	
			
	50%
		left:-1400px;	
			
	70%
		left:-1400px;	
			
	
		
<div id="outerbox">
<div id="sliderbox">
<img src="http://labs.qnimate.com/slider/1.jpg"/> 
<img src="http://labs.qnimate.com/slider/2.jpg"/>
<img src="http://labs.qnimate.com/slider/3.jpg"/>
 </div>
 </div>

【讨论】:

感谢您的回答,但我希望在每张图片上,动画都会停止几秒钟。我的错误我之前没有添加它。

以上是关于CSS 动画滑块的主要内容,如果未能解决你的问题,请参考以下文章

css 禁用全角滑块内容的动画

css 禁用全角滑块内容的动画

css 禁用全角滑块内容的动画

css 禁用全角滑块内容的动画

css Bootstrap淡化旋转木马触摸滑块与文本动画

将动态文本动画添加到 nivo 滑块