纯CSS全屏轮播滑块

所属分类:媒体-幻灯片和轮播图

 49270  404  查看评论 (15)
分享到微信朋友圈
X
纯CSS全屏轮播滑块 ie兼容10

我们要创建基于CSS的动画滑块,这个滑块的工作没有任何JavaScript的使用。对于基于CSS的滑块控件一样,分页,下一步,上一步,我们使用单选按钮和标签”属性。

首先我们创建HTML CSS滑块结构。需要一个div和应用类的名称如“css-slider-wrapper”所有元素都将放在这个结构中

<div  class="css-slider-wrapper"></div>

这样的div css 其具有全屏幻灯片,所以我们设置位置绝对

.css-slider-wrapper  {
  display: block;
  background: #FFF;
  overflow: hidden;
  position:absolute; 
  left:0; 
  right:0; 
  top:0; 
  bottom:0;
}

我们创建了外层div,接下来我们要创建4个内部轮播滑块,html和css如下所示

<div class="css-slider-wrapper">
    <div class="slider slide1">
        <div>
            <h2>Css Based slider</h2>
        </div>
    </div>
    <div class="slider slide2">
        <div>
            <h2>CSS Slider without use of any javascript or jQuery</h2>
        </div>
    </div>
    <div class="slider slide3">
        <div>
            <h2>Full screen animation slider</h2>
        </div>
    </div>
    <div class="slider slide4">
        <div>
            <h2>css3 slider</h2>
        </div>
    </div>
</div>

每个幻灯片创建4个类,CSS如下

.slider {
    width: 100%;
    height: 100%;
    background: red;
    position: absolute;
    left: 0;
    top: 0;
    opacity: 1;
    z-index: 0;
    
    display: flex;
    display: -webkit-flex;
    display: -ms-flexbox;
    flex-direction: row;
    flex-wrap: wrap;
    
    -webkit-flex-align: center;
    -webkit-align-items: center;
    align-items: center;
    justify-content: center;
    align-content: center;
    
    -webkit-transition: -webkit-transform 1600ms;
    transition: -webkit-transform 1600ms, transform 1600ms;
    -webkit-transform: scale(1);
    transform: scale(1);
}
/* each slide background color */ 
.slide1 {
    background: #00bcd7;
    left: 0;
}
.slide2 {
    background: #009788;
    left: 100%
}
.slide3 {
    background: #ff5608;
    left: 200%
}
.slide4 {
    background: #607d8d;
    left: 300%;
}

我们已经做了滑块的CSS和HTML。接下来要创建控制分页,上下按钮,滑块。滑块控件的HTML和CSS如下。

/* slider-pagination */ 
.slider-pagination {
    position: absolute;
    bottom: 20px;
    width: 100%;
    left: 0;
    text-align: center;
    z-index: 1000;
}
.slider-pagination label {
    width: 10px;
    height: 10px;
    border-radius: 50%;
    display: inline-block;
    background: rgba(255,255,255,0.2);
    margin: 0 2px;
    border: solid 1px rgba(255,255,255,0.4);
    cursor: pointer;
}
 
/* Next and previous button*/
.control {
  position: absolute;
  top: 50%;
  width: 50px;
  height: 50px;
  margin-top: -25px;
  z-index: 55;
}
.control label {
  z-index: 0;
  display: none;
  text-align: center;
  line-height: 50px;
  font-size: 50px;
  color: #FFF;
  cursor: pointer;
  opacity: 0.2;
}
.control label:hover {
  opacity: 0.5;
}
.next {
  right: 1%;
}
.previous {
  left: 1%;
}
<div  class="slider-pagination">
      <label for="slider_1"  class="page1"></label>
      <label for="slider_2"  class="page2"></label>
      <label for="slider_3"  class="page3"></label>
      <label for="slider_4"  class="page4"></label>
</div>
<div class="next control">
    <label for="slider_1" class="numb1"><i class="fa fa-arrow-circle-right"></i></label>
    <label for="slider_2" class="numb2"><i class="fa fa-arrow-circle-right"></i></label>
    <label for="slider_3" class="numb3"><i class="fa fa-arrow-circle-right"></i></label>
    <label for="slider_4" class="numb4"><i class="fa fa-arrow-circle-right"></i></label>
</div>
<div class="previous control">
    <label for="slider_1" class="numb1"><i class="fa fa-arrow-circle-left"></i></label>
    <label for="slider_2" class="numb2"><i class="fa fa-arrow-circle-left"></i></label>
    <label for="slider_3" class="numb3"><i class="fa fa-arrow-circle-left"></i></label>
    <label for="slider_4" class="numb4"><i class="fa fa-arrow-circle-left"></i></label>
</div>

完成控制元素的HTML和CSS后,我们要创建单选按钮。因为我们使用此单选按钮主要功能为移动滑块这个单选按钮,把我们在第一位置像下面的HTML结构主滑块容器div

<div class="css-slider-wrapper">
    
    <input type="radio" name="slider" class="slide-radio1" checked id="slider_1">
    <input type="radio" name="slider" class="slide-radio2" id="slider_2">
    <input type="radio" name="slider" class="slide-radio3" id="slider_3">
    <input type="radio" name="slider" class="slide-radio4" id="slider_4">

对于CSS或单选按钮我们隐藏浏览器,因为我们不想显示在浏览器中,我们将使用属性标签

现在我们做滑动控制CSS,当你点击“下一步”,以前和分页按钮。我们使用:检查伪类来控制滑动。

为控制滑动效果的CSS这样

/* Slider control sliding effect */
.slide-radio1:checked ~ .slider {
  -webkit-transform: translateX(0%);
  transform: translateX(0%);
}
.slide-radio2:checked ~ .slider {
  -webkit-transform: translateX(-100%);
  transform: translateX(-100%);
}
.slide-radio3:checked ~ .slider {
  -webkit-transform: translateX(-200%);
  transform: translateX(-200%);
}
.slide-radio4:checked ~ .slider {
  -webkit-transform: translateX(-300%);
  transform: translateX(-300%);
}
  
/* next and previous will be  active when slider moving*/
.slide-radio1:checked ~ .next .numb2, 
.slide-radio2:checked ~ .next .numb3, 
.slide-radio3:checked ~ .next .numb4, 
.slide-radio2:checked ~ .previous .numb1, 
.slide-radio3:checked ~ .previous .numb2, 
.slide-radio4:checked ~ .previous .numb3 {
  display: block;
  z-index: 1
}
 
/* css for active current pagination */
.slide-radio1:checked ~ .slider-pagination .page1, 
.slide-radio2:checked ~ .slider-pagination .page2, 
.slide-radio3:checked ~ .slider-pagination .page3, 
.slide-radio4:checked ~ .slider-pagination .page4 {
  background: rgba(255,255,255,1)
}

最后的HTML和css的滑块代码是如下

<div class="css-slider-wrapper">
    
    <input type="radio" name="slider" class="slide-radio1" checked id="slider_1">
    <input type="radio" name="slider" class="slide-radio2" id="slider_2">
    <input type="radio" name="slider" class="slide-radio3" id="slider_3">
    <input type="radio" name="slider" class="slide-radio4" id="slider_4">
    
    
    <div class="slider-pagination">
        
        <label for="slider_1" class="page1"></label> 
        <label for="slider_2" class="page2"></label>
        <label for="slider_3" class="page3"></label>
        <label for="slider_4" class="page4"></label>
    </div>
    
    <div class="next control">
        <label for="slider_1" class="numb1"><i class="fa fa-arrow-circle-right"></i></label>
        <label for="slider_2" class="numb2"><i class="fa fa-arrow-circle-right"></i></label>
        <label for="slider_3" class="numb3"><i class="fa fa-arrow-circle-right"></i></label>
        <label for="slider_4" class="numb4"><i class="fa fa-arrow-circle-right"></i></label>
    </div>
    <div class="previous control">
        <label for="slider_1" class="numb1"><i class="fa fa-arrow-circle-left"></i></label>
        <label for="slider_2" class="numb2"><i class="fa fa-arrow-circle-left"></i></label>
        <label for="slider_3" class="numb3"><i class="fa fa-arrow-circle-left"></i></label>
        <label for="slider_4" class="numb4"><i class="fa fa-arrow-circle-left"></i></label>
    </div>
    
    
    <div class="slider slide1">
        <div>
            <h2>Css Based slider</h2>
            <a href="#" class="button">Download</a> 
        </div>
    </div>
    <div class="slider slide2">
        <div>
            <h2>CSS Slider without use of any javascript or jQuery</h2>
            <a href="#" class="button">Download</a> 
        </div>
    </div>
    <div class="slider slide3">
        <div>
            <h2>Full screen animation slider</h2>
            <a href="#" class="button">Download</a>
        </div>
    </div>
    <div class="slider slide4">
        <div>
            <h2>css3 slider</h2>
            <a href="#" class="button">Download</a> 
        </div>
    </div>
</div>

最后的CSS如下

/* Slider wrapper*/
  .css-slider-wrapper {
      display: block;
      background: #FFF;
      overflow: hidden;
      position: absolute;
      left: 0;
      right: 0;
      top: 0;
      bottom: 0;
  }
  /* Slider */
  .slider {
      width: 100%;
      height: 100%;
      background: red;
      position: absolute;
      left: 0;
      top: 0;
      opacity: 1;
      z-index: 0;
      
      display: flex;
      display: -webkit-flex;
      display: -ms-flexbox;
      flex-direction: row;
      flex-wrap: wrap;
      -webkit-flex-align: center;
      -webkit-align-items: center;
      align-items: center;
      justify-content: center;
      align-content: center;
      
      -webkit-transition: -webkit-transform 1600ms;
      transition: -webkit-transform 1600ms, transform 1600ms;
      -webkit-transform: scale(1);
      transform: scale(1);
      }
  /* each slide background color */ 
  .slide1 {
      background: #00bcd7;
      left: 0;
  }
  .slide2 {
      background: #009788;
      left: 100%
  }
  .slide3 {
      background: #ff5608;
      left: 200%
  }
  .slide4 {
      background: #607d8d;
      left: 300%;
  }
  .slider > div {
    text-align: center;
  }
  /* Slider inner content */
  .slider h2 {
      color: #FFF;
      font-weight: 900;
      text-transform: uppercase;
      font-size: 45px;
      line-height: 120%;
      opacity: 0;
      -webkit-transform: translateX(500px);
      transform: translateX(500px);
  }
  .slider .button {
      color: #FFF;
      padding: 5px 50px;
      background: rgba(255,255,255,0.3);
      text-decoration: none;
      opacity: 0;
      font-size: 15px;
      line-height: 30px;
      display: inline-block;
      -webkit-transform: translateX(-500px);
      transform: translateX(-500px);
  }
  .slider h2, .slider .button {
      -webkit-transition: opacity 800ms, -webkit-transform 800ms;
      transition: transform 800ms, opacity 800ms;
      -webkit-transition-delay: 1s; /* Safari */
      transition-delay: 1s;
  }
  /* Next and previous button */ 
  .control {
      position: absolute;
      top: 50%;
      width: 50px;
      height: 50px;
      margin-top: -25px;
      z-index: 55;
  }
  .control label {
      z-index: 0;
      display: none;
      text-align: center;
      line-height: 50px;
      font-size: 50px;
      color: #FFF;
      cursor: pointer;
      opacity: 0.2;
  }
  .control label:hover {
     opacity: 0.5;
  }
  .next {
    right: 1%;
  }
  .previous {
    left: 1%;
  }
  
  /* Slider pagination */ 
  .slider-pagination {
      position: absolute;
      bottom: 20px;
      width: 100%;
      left: 0;
      text-align: center;
      z-index: 1000;
  }
  .slider-pagination label {
      width: 10px;
      height: 10px;
      border-radius: 50%;
      display: inline-block;
      background: rgba(255,255,255,0.2);
      margin: 0 2px;
      border: solid 1px rgba(255,255,255,0.4);
      cursor: pointer;
      }
      
  /* Slider control active css */
  .slide-radio1:checked ~ .next .numb2, 
  .slide-radio2:checked ~ .next .numb3, 
  .slide-radio3:checked ~ .next .numb4, 
  .slide-radio2:checked ~ .previous .numb1, 
  .slide-radio3:checked ~ .previous .numb2, 
  .slide-radio4:checked ~ .previous .numb3 {
      display: block;
      z-index: 1
  }
  /* Slider pagination active css */
  .slide-radio1:checked ~ .slider-pagination .page1, 
  .slide-radio2:checked ~ .slider-pagination .page2, 
  .slide-radio3:checked ~ .slider-pagination .page3, 
  .slide-radio4:checked ~ .slider-pagination .page4 {
      background: rgba(255,255,255,1)
  }
  
  /* css for sliding  effect when you click on control button*/
  .slide-radio1:checked ~ .slider {
      -webkit-transform: translateX(0%);
      transform: translateX(0%);
  }
  .slide-radio2:checked ~ .slider {
      -webkit-transform: translateX(-100%);
      transform: translateX(-100%);
  }
  .slide-radio3:checked ~ .slider {
      -webkit-transform: translateX(-200%);
      transform: translateX(-200%);
  }
  .slide-radio4:checked ~ .slider {
      -webkit-transform: translateX(-300%);
      transform: translateX(-300%);
  }
  
  .slide-radio1:checked ~ .slide1 h2, 
  .slide-radio2:checked ~ .slide2 h2, 
  .slide-radio3:checked ~ .slide3 h2, 
  .slide-radio4:checked ~ .slide4 h2, 
  .slide-radio1:checked ~ .slide1 .button, 
  .slide-radio2:checked ~ .slide2 .button, 
  .slide-radio3:checked ~ .slide3 .button, 
  .slide-radio4:checked ~ .slide4 .button {
      -webkit-transform: translateX(0);
      transform: translateX(0);
      opacity: 1
  }
  
@media only screen and (max-width: 767px) {
  .slider h2 {
      font-size: 20px;
  }
  .slider > div {
      padding: 0 2%
  }
  .control label {
      font-size: 35px;
  }
  .slider .button {
      padding: 0 30px;
  }
  }

完成您可以查看演示和从下面的链接下载源代码。


相关插件-幻灯片和轮播图

原生js轮播图插件Image Slider

原生js轮播图插件Image Slider 提供8种轮播特效,轻量级只有16k.
  幻灯片和轮播图
 42438  363

vue.js轮播图(原创)

vue的轮播小插件,vue初学者可以借鉴,代码量很少。
  幻灯片和轮播图
 52303  416

jQuery和css3简单实用的背景幻灯片插件

这是一款非常简洁和实用的jQuery和css3 幻灯片插件。
  幻灯片和轮播图
 30853  323

Jquery轮播图

简洁大气轮播图插件,可控制点击切换或者移至切换。代码逻辑清晰,便于学习。授人以鱼不如授人以渔。
  幻灯片和轮播图
 42554  347

讨论这个项目(15)回答他人问题或分享插件使用方法奖励jQ币 评论用户自律公约

    Wind 0
    2019/5/29 10:20:26
    想请教怎么自动播放?能改出来吗? 回复
    0
    2019/4/12 13:23:59
    很好看 。有机会下载下载看看 回复
    天之娇女 0
    2017/10/28 14:41:04
    驴云 0
    2017/10/5 14:31:21

    有没有自动播放?

    回复
    我。都想知道 0
    2017/8/23 10:03:53
    梦幻王子 0
    2017/5/23 2:28:47
    逝去丶青春 0
    2017/3/2 18:42:39
    花儿开不败。 0
    2017/2/27 14:08:02

    怎么自动切啊  

    回复
    深白??月 0
    2017/1/31 11:08:42

    厉害了,我的哥

    回复
    an之若素 0
    2016/10/30 14:10:45
    很棒,我会一直关注和学习。 回复
😃
  • 😀
  • 😉
  • 😥
  • 😵
  • 😫
  • 😘
  • 😡
  • 👍
  • 🌹
  • 👏
  • 🍺
  • 🍉
  • 🌙
  • 💖
  • 💔
😃
  • 😀
  • 😉
  • 😥
  • 😵
  • 😫
  • 😘
  • 😡
  • 👍
  • 🌹
  • 👏
  • 🍺
  • 🍉
  • 🌙
  • 💖
  • 💔
取消回复