幻灯片/轮播

jQuery+CSS3单页倾斜分割布局幻灯片特效

阿里云

这是一款非常有创意的 jQuery 和 CSS3 单页倾斜分割布局幻灯片特效。该幻灯片特效将整个屏幕倾斜分割为两个部分,一部分用于展示图片,另一部分用于描述文本。在鼠标向下滚动时,图片部分和文本部分会相互切换,效果非常的炫酷。

HTML 结构:

每个单页的 HTML 结构使用一个 div.skw-page 元素进行包裹,在其内部 div.skw-page__half--left 是页面的左侧部分,div.skw-page__half--right 是页面的右侧部分。

也想出现在这里?联系我们
创客主机
  1. <div class="skw-page skw-page-1">
  2.   <div class="skw-page__half skw-page__half--left">
  3.     <div class="skw-page__skewed">
  4.       <div class="skw-page__content">
  5.         <h2 class="skw-page__heading">Page 1</h2>
  6.         <p class="skw-page__description">......</p>
  7.       </div>
  8.     </div>
  9.   </div>
  10.   <div class="skw-page__half skw-page__half--right">
  11.     <div class="skw-page__skewed">
  12.       <div class="skw-page__content"></div>
  13.     </div>
  14.   </div>
  15. </div>

CSS 样式:

首先整个幻灯片的包裹元素设置高度为 100vh,即整个视口的高度。每个单独页面的宽度设置为 100%,采用绝对定位,位置在屏幕的左上角。

  1. .skw-pages {
  2.   overflow: hidden;
  3.   position: relative;
  4.   height: 100vh;
  5. }
  6. .skw-page {
  7.   position: absolute;
  8.   left: 0;
  9.   top: 0;
  10.   width: 100%;
  11. }

页面中的两个部分分别占屏幕的 50%宽度,高度为 100vh,并为 transform 属性设置动画过渡效果。

  1. .skw-page__half {
  2.   position: absolute;
  3.   top: 0;
  4.   width: 50%;
  5.   height: 100vh;
  6.   -webkit-transition: -webkit-transform 1s;
  7.           transition: transform 1s;
  8. }

接下来是制作左右两个部分的倾斜效果。这实际上是通过倾斜函数将左右两侧的矩形转换为一个梯形,然后对它们进行尺寸放大和重新定位,组合为单页斜切的布局效果。

  1. <img src="https://static.22vd.com/wp-content/uploads/2018/11/2018110214444494.jpg" alt="" width="600" height="300" class="aligncenter wp-image-33033" />
  2. .skw-page__half--left {
  3.   left: 0;
  4.   -webkit-transform: translate3d(-32.4vh, 100%, 0);
  5.           transform: translate3d(-32.4vh, 100%, 0);
  6. }
  7. .skw-page__half--right {
  8.   left: 50%;
  9.   -webkit-transform: translate3d(32.4vh, -100%, 0);
  10.           transform: translate3d(32.4vh, -100%, 0);
  11. }
  12. .skw-page.active .skw-page__half {
  13.   -webkit-transform: translate3d(0, 0, 0);
  14.           transform: translate3d(0, 0, 0);
  15. }
  16. .skw-page__skewed {
  17.   overflow: hidden;
  18.   position: absolute;
  19.   top: 0;
  20.   width: 140%;
  21.   height: 100%;
  22.   -webkit-transform: skewX(-18deg);
  23.       -ms-transform: skewX(-18deg);
  24.           transform: skewX(-18deg);
  25.   background: #000;
  26. }
  27. .skw-page__half--left .skw-page__skewed {
  28.   left: -40%;
  29. }
  30. .skw-page__half--right .skw-page__skewed {
  31.   right: -40%;
  32. }

完整代码请参考下载文件。

JavaScript:

在 jQuery 代码中,分别检测页面的鼠标滚动和键盘上下方向键事件,分别在向上滚动和向下滚动时为相应的元素添加和移除相应的 class。

  1. $(document).ready(function () {
  2.     var curPage = 1;
  3.     var numOfPages = $('.skw-page').length;
  4.     var animTime = 1000;
  5.     var scrolling = false;
  6.     var pgPrefix = '.skw-page-';
  7.     function pagination() {
  8.         scrolling = true;
  9.         $(pgPrefix + curPage).removeClass('inactive').addClass('active');
  10.         $(pgPrefix + (curPage - 1)).addClass('inactive');
  11.         $(pgPrefix + (curPage + 1)).removeClass('active');
  12.         setTimeout(function () {
  13.             scrolling = false;
  14.         }, animTime);
  15.     }
  16.     ;
  17.     function navigateUp() {
  18.         if (curPage === 1)
  19.             return;
  20.         curPage--;
  21.         pagination();
  22.     }
  23.     ;
  24.     function navigateDown() {
  25.         if (curPage === numOfPages)
  26.             return;
  27.         curPage++;
  28.         pagination();
  29.     }
  30.     ;
  31.     $(document).on('mousewheel DOMMouseScroll', function (e) {
  32.         if (scrolling)
  33.             return;
  34.         if (e.originalEvent.wheelDelta > 0 || e.originalEvent.detail < 0) {
  35.             navigateUp();
  36.         } else {
  37.             navigateDown();
  38.         }
  39.     });
  40.     $(document).on('keydown', function (e) {
  41.         if (scrolling)
  42.             return;
  43.         if (e.which === 38) {
  44.             navigateUp();
  45.         } else if (e.which === 40) {
  46.             navigateDown();
  47.         }
  48.     });
  49. });

jQuery+CSS3 单页倾斜分割布局幻灯片特效

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

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

发表回复

热销模板

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

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