通过CSS3的3D变换和jQuery Transit插件实现了一个3D旋转的图片轮播效果
HTML部分:
-
div id=“banner”:定义了一个id为"banner"的div标签,作为图片轮播的容器。
-
ul: 在"banner"中定义了一个无序列表,每个列表项li包含一张图片,这些图片将在页面上以3D旋转的方式展示。
CSS部分:
-
#banner:设置了"banner"的宽度、高度、边框、背景颜色等属性,并设置了透视距离和观察者的位置,这两个属性是实现3D效果的关键。
-
ul:设置了无序列表的宽度、高度、位置等属性,特别地,设置了transform-style: preserve-3d;来保留3D转换效果,transform-origin: center center -520px;来设置旋转的原点。
-
ul>li:设置了列表项的宽度、高度、位置等属性,且每个列表项都被设定了固定的旋转角度,使得它们在3D空间中呈现出环形排列。
JavaScript部分:
-
使用了jQuery库和jQuery Transit插件。jQuery是一个快速、简洁的JavaScript库,jQuery Transit是一个用于创建CSS3 transformations和transitions的jQuery插件。
-
setInterval(function(){…}, 2000);:每2000毫秒(即2秒)执行一次匿名函数。在这个匿名函数中,使用了jQuery Transit的transition()方法对
- 元素进行操作,使其沿Y轴旋转60度,达到了图片轮播的效果。
-
引入的js文件
- jQuery.js https://jquery.com/
- jquery.transit.js https://github.com/rstacruz/jquery.transit
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> *{ margin: 0; padding:0; list-style: none; } #banner{ width:1000px; height: 500px; border: 1px solid red; margin: 0 auto; background:#000; perspective: 1000px; /*景深属性*/ perspective-origin: top; /*观察着观看的位置*/ } ul{ width:600px; height:300px; margin: 100px 200px; position: relative; transform-style: preserve-3d; transform-origin: center center -520px; } ul>li{ width:600px; height:300px; position: absolute; left:0; top:0; background: #ccc; overflow: hidden; transform-origin: center center -520px; opacity: 0.8; } ul>li:first-child{ transform: rotateY(60deg); } ul>li:nth-child(2){ transform: rotateY(120deg); } ul>li:nth-child(3){ transform: rotateY(180deg); } ul>li:nth-child(4){ transform: rotateY(240deg); } ul>li:nth-child(5){ transform: rotateY(300deg); } ul>li:nth-child(6){ transform: rotateY(360deg); } ul>li>img{ width:600px; height:auto; } </style> </head> <body> <div id="banner"> <ul> <li><img src="img/banner1.jpg" alt=""></li> <li><img src="img/banner2.jpg" alt=""></li> <li><img src="img/banner3.jpg" alt=""></li> <li><img src="img/banner4.jpg" alt=""></li> <li><img src="img/banner5.jpg" alt=""></li> <li><img src="img/banner6.jpg" alt=""></li> </ul> </div> <script src="js/jQuery.js"></script> <script src="js/jquery.transit.js"></script> <script> setInterval(function(){ $("ul").transition({rotateY:"-=60deg"},"linear"); },2000); </script> </body> </html>
复制