幻灯片/轮播

jQuery+CSS3全屏缩放切换幻灯片特效

阿里云


这是一款使用 jQuery 和 CSS3 来制作的超酷响应式缩放切换幻灯片特效。该幻灯片在切换的时候,当前 slide 会平滑缩小并移动,下一个 slide 会从缩小状态逐渐放大并移动到屏幕中间,效果非常的炫酷。

HTML 结构:

该幻灯片的 HTML 结构非常简单,使用多个[div]来分别包裹需要的放置的内容即可。前后导航按钮使用 2 个 svg 元素来制作。

也想出现在这里?联系我们
创客主机
  1. <div class="one">
  2.   <h1>Awesome Content Goes Here!</h1>
  3. </div>
  4. <div class="two">
  5.   <h1>Awesome Content Goes Here!</h1>
  6. </div>
  7. <div class="three">
  8.   <h1>Awesome Content Goes Here!</h1>
  9. </div>
  10. <div class="four">
  11.   <h1>Awesome Content Goes Here!</h1>
  12. </div>
  13. <!-- 前后导航按钮 -->
  14. <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" enable-background="new 0 0 32 32" id="previous" version="1.1" viewBox="0 0 32 32" xml:space="preserve">
  15.   <path d="M7.701,14.276l9.586-9.585c0.879-0.878,2.317-0.878,3.195,0l0.801,0.8c0.878,0.877,0.878,2.316,0,3.194  L13.968,16l7.315,7.315c0.878,0.878,0.878,2.317,0,3.194l-0.801,0.8c-0.878,0.879-2.316,0.879-3.195,0l-9.586-9.587  C7.229,17.252,7.02,16.62,7.054,16C7.02,15.38,7.229,14.748,7.701,14.276z" fill="#FFFFFF"/>
  16. </svg>
  17.  
  18. <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" enable-background="new 0 0 32 32" id="next" version="1.1" viewBox="0 0 32 32" xml:space="preserve">
  19.   <path d="M24.291,14.276L14.705,4.69c-0.878-0.878-2.317-0.878-3.195,0l-0.8,0.8c-0.878,0.877-0.878,2.316,0,3.194  L18.024,16l-7.315,7.315c-0.878,0.878-0.878,2.317,0,3.194l0.8,0.8c0.878,0.879,2.317,0.879,3.195,0l9.586-9.587  c0.472-0.471,0.682-1.103,0.647-1.723C24.973,15.38,24.763,14.748,24.291,14.276z" fill="#FFFFFF"/>
  20. </svg>

CSS 样式:

在该幻灯片特效中,所有的幻灯片 slide 都使用 flex 布局,元素垂直居中。并为它的所有属性设置 1 秒钟的 ease 效果的过渡动画效果。

  1. div.slider {
  2.   display: flex;
  3.   -webkit-display: flex;
  4.   -webkit-align-items: center;
  5.   align-items: center;
  6.   justify-content: center;
  7.   -webkit-justify-content: center;
  8.   width: 100%;
  9.   height: 100%;
  10.   position: absolute;
  11.   transition: all 1s ease;
  12.   -moz-transition: all 1s ease;
  13.   -ms-transition: all 1s ease;
  14.   -webkit-transition: all 1s ease;
  15.   -o-transition: all 1s ease;
  16. }

然后分别为每一个滑动 slide 设置不同的背景颜色。

  1. .one {
  2.   background-color: #63E89D;
  3. }
  4. .two {
  5.   background-color: #65BEFF;
  6. }
  7. .three {
  8.   background-color: #EF4264;
  9. }
  10. .four {
  11.   background-color: #8F70FD;
  12. }

.zoomout 是一个预置的缩放动画 class 类,在 jQuery 代码中会动态为幻灯片 slide 添加这个 class。

  1. .zoomout {
  2.   transform: scale(0.7);
  3.   -moz-transform: scale(0.7);
  4.   -webkit-transform: scale(0.7);
  5.   -o-transform: scale(0.7);
  6.   -ms-transform: scale(0.7);
  7. }

作为前后导航按钮的 svg 元素使用绝对定位,分别定位在屏幕的左侧中部和右侧中部位置。开始是向前导航按钮是不可见的。

  1. svg {
  2.   position: absolute;
  3.   top: 50%;
  4.   height: 5em;
  5.   width: 5em;
  6.   margin-top: -2.5em;
  7.   cursor: pointer;
  8. }
  9.  
  10. svg#next {
  11.   right: 1em;
  12. }
  13.  
  14. svg#previous {
  15.   display: none;
  16.   left: 1em;
  17. }

JavaScript:

在 JavaScript 代码中,提供了几个方法来控制幻灯片。initialiseSlider()是幻灯片的初始化方法,slideRight()是向右移动的方法,slideLeft()是向左移动的方法。另外还有一个 removeZoom()方法用于移除.zoomoutclass 类。

  1. var timer = 0;
  2. var elementCount = 0;
  3. var firstPos = 0;
  4. var lastPos = 0;
  5.  
  6. $(function() {
  7.   initialiseSlider();
  8.   $("#next").click(function() {
  9.     slideRight();
  10.   });
  11.  
  12.   $("#previous").click(function() {
  13.     slideLeft();
  14.   });
  15. });
  16.  
  17. function initialiseSlider() {
  18.   $("div.slider").each(function(value) {
  19.     elementCount += 1;
  20.     var position = -100 * value;
  21.     $(this).css("left", position + "%");
  22.   });
  23.  
  24.   if (elementCount === 1)
  25.     $("#next").hide();
  26. }
  27.  
  28. function slideRight() {
  29.   $("div.slider").each(function(value) {
  30.     $(this).addClass("zoomout");
  31.     var position = parseInt($(this)[0].style.left) + 100;
  32.  
  33.     if (value === 0)
  34.       firstPos = position;
  35.  
  36.     $(this).css("left", position + "%");
  37.     timer = setTimeout(removeZoom, 1000);
  38.   });
  39.  
  40.   console.log(firstPos);
  41.  
  42.   if (firstPos !== ((elementCount - 1) * 100)) {
  43.     $("#next").show();
  44.     $("#previous").show();
  45.   } else
  46.     $("#next").hide();
  47. }
  48.  
  49. function slideLeft() {
  50.   $("div.slider").each(function(value) {
  51.     $(this).addClass("zoomout");
  52.     var position = parseInt($(this)[0].style.left) - 100;
  53.  
  54.     if (value === (elementCount - 1))
  55.       lastPos = position;
  56.  
  57.     $(this).css("left", position + "%");
  58.     timer = setTimeout(removeZoom, 1000);
  59.   });
  60.  
  61.   console.log(lastPos);
  62.  
  63.   if (lastPos !== ((elementCount - 1) * -100)) {
  64.     $("#previous").show();
  65.     $("#next").show();
  66.   } else
  67.     $("#previous").hide();
  68. }
  69.  
  70. function removeZoom() {
  71.   $("div.slider").each(function() {
  72.     $(this).removeClass("zoomout");
  73.   });
  74. }

jQuery+CSS3 全屏缩放切换幻灯片特效

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

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

发表回复

热销模板

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

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