幻灯片/轮播

Material Design风格内容幻灯片特效

阿里云


这是一款效果非常炫酷的 Material Design 风格内容幻灯片特效。该幻灯片使用 js 和 CSS3 来制作,在点击分页圆点按钮时,按钮有非常酷的弹性 gooey 变形动画效果。

HTML 结构:

该 Material Design 风格内容幻灯片的基本 HTML 结构如下:

也想出现在这里?联系我们
创客主机
  1. <div class="center">
  2.   <div class="slider" data-pos="0">
  3.     <div class="slider__slides">
  4.       <div class="slider__slide"></div>
  5.       <div class="slider__slide"></div>
  6.       <div class="slider__slide"></div>
  7.       <div class="slider__slide"></div>
  8.     </div>
  9.     <div class="slider__dots">
  10.       <a href="#" class="slider__indicator"></a>
  11.       <a href="#" class="slider__dot" data-pos="0"></a>
  12.       <a href="#" class="slider__dot" data-pos="1"></a>
  13.       <a href="#" class="slider__dot" data-pos="2"></a>
  14.       <a href="#" class="slider__dot" data-pos="3"></a>
  15.     </div>
  16.   </div>
  17. </div>

CSS 样式:

为幻灯片添加以下一些基本的 CSS 样式。

  1. .slider {
  2.   position: relative;
  3.   width: 100%;
  4.   height: 100%;
  5.   overflow: hidden;
  6. }
  7.  
  8. .slider__slides {
  9.   position: relative;
  10.   width: 400%;
  11.   height: 100%;
  12.   -webkit-transition: -webkit-transform 0.3s cubic-bezier(0.51, 0.92, 0.24, 1);
  13.   transition: -webkit-transform 0.3s cubic-bezier(0.51, 0.92, 0.24, 1);
  14.   transition: transform 0.3s cubic-bezier(0.51, 0.92, 0.24, 1);
  15.   transition: transform 0.3s cubic-bezier(0.51, 0.92, 0.24, 1), 
  16.                   -webkit-transform 0.3s cubic-bezier(0.51, 0.92, 0.24, 1);
  17.   will-change: transform;
  18. }
  19.  
  20. .slider[data-pos="0"] .slider__slides {
  21.   -webkit-transform: translateX(0%);
  22.   transform: translateX(0%);
  23. }
  24.  
  25. .slider[data-pos="1"] .slider__slides {
  26.   -webkit-transform: translateX(-25%);
  27.   transform: translateX(-25%);
  28. }
  29.  
  30. .slider[data-pos="2"] .slider__slides {
  31.   -webkit-transform: translateX(-50%);
  32.   transform: translateX(-50%);
  33. }
  34.  
  35. .slider[data-pos="3"] .slider__slides {
  36.   -webkit-transform: translateX(-75%);
  37.   transform: translateX(-75%);
  38. }
  39.  
  40. .slider__slide {
  41.   float: left;
  42.   width: 25%;
  43.   height: 100%;
  44. }
  45.  
  46. .slider__dots {
  47.   display: -webkit-box;
  48.   display: -webkit-flex;
  49.   display: -ms-flexbox;
  50.   display: flex;
  51.   position: absolute;
  52.   bottom: 1.5em;
  53.   left: 50%;
  54.   -webkit-transform: translateX(-50%);
  55.   transform: translateX(-50%);
  56. }
  57.  
  58. .slider__dot, .slider__indicator {
  59.   display: block;
  60.   margin: 0 0.5em;
  61.   width: 1em;
  62.   height: 1em;
  63.   background: rgba(255, 255, 255, 0.5);
  64.   border-radius: 100px;
  65. }
  66.  
  67. .slider__indicator {
  68.   position: absolute;
  69.   background: white;
  70.   width: auto;
  71. }
  72.  
  73. .slider__indicator--left {
  74.   -webkit-transition: left 0.3s cubic-bezier(0.51, 0.92, 0.24, 1.15),
  75.                                right 0.3s 0.1s cubic-bezier(0.51, 0.92, 0.24, 1.15);
  76.   transition: left 0.3s cubic-bezier(0.51, 0.92, 0.24, 1.15),
  77.                   right 0.3s 0.1s cubic-bezier(0.51, 0.92, 0.24, 1.15);
  78. }
  79.  
  80. .slider__indicator--right {
  81.   -webkit-transition: left 0.3s 0.1s cubic-bezier(0.51, 0.92, 0.24, 1.15),
  82.                                right 0.3s cubic-bezier(0.51, 0.92, 0.24, 1.15);
  83.   transition: left 0.3s 0.1s cubic-bezier(0.51, 0.92, 0.24, 1.15),
  84.                   right 0.3s cubic-bezier(0.51, 0.92, 0.24, 1.15);
  85. }
  86.  
  87. .slider[data-pos="0"] .slider__indicator {
  88.   left: 0em;
  89.   right: 6em;
  90. }
  91.  
  92. .slider[data-pos="1"] .slider__indicator {
  93.   left: 2em;
  94.   right: 4em;
  95. }
  96.  
  97. .slider[data-pos="2"] .slider__indicator {
  98.   left: 4em;
  99.   right: 2em;
  100. }
  101.  
  102. .slider[data-pos="3"] .slider__indicator {
  103.   left: 6em;
  104.   right: 0em;
  105. }

JavaScript:

特效中使用 JavaScript 代码来遍历所有的圆点导航按钮,并为它们分别附加 click 事件,然后根据当前圆点按钮的位置来判断是该向前还是向后移动幻灯片,并为相应的元素添加或移除相应的 class 类。

  1. 'use strict';
  2. var dots = 4;
  3. var sliderElem = document.querySelector('.slider');
  4. var dotElems = sliderElem.querySelectorAll('.slider__dot');
  5. var indicatorElem = sliderElem.querySelector('.slider__indicator');
  6.  
  7. Array.prototype.forEach.call(dotElems, function (dotElem) {
  8.  
  9.   dotElem.addEventListener('click', function (e) {
  10.  
  11.     var currentPos = parseInt(sliderElem.getAttribute('data-pos'));
  12.     var newPos = parseInt(dotElem.getAttribute('data-pos'));
  13.  
  14.     var newDirection = newPos > currentPos ? 'right' : 'left';
  15.     var currentDirection = newPos < currentPos ? 'right' : 'left';
  16.  
  17.     indicatorElem.classList.remove('slider__indicator--' + currentDirection);
  18.     indicatorElem.classList.add('slider__indicator--' + newDirection);
  19.     sliderElem.setAttribute('data-pos', newPos);
  20.   });
  21. });

Material Design 风格内容幻灯片特效

已有 303 人购买
查看演示升级 VIP立刻购买

演示地址 下载地址
收藏
(1)

发表回复

热销模板

Ashade - 作品展示摄影相册WordPress汉化主题
LensNews

本站承接 WordPress / PbootCMS / DedeCMS 等
系统建站、仿站、开发、定制等业务!