幻灯片/轮播

jQuery+CSS3带倒影3D万花筒旋转动画

面包多

jQuery+CSS3带倒影3D万花筒旋转动画-创客云
这是一款使用 jQuery 和 CSS3 来制作的炫酷的带倒影的 3D 万花筒旋转动画特效。该 3D 万花筒特效通过简单的 CSS transform 和 jquery 代码来实现在用户鼠标按下时,万花筒图片可以跟随鼠标进行 3D 旋转动画。

使用方法:

在页面底部,标签结束之前,引入 jquery 文件。

也想出现在这里?联系我们
创客主机
  1. <script src="path/to/js/jquery.min.js"></script>

HTML 结构:

该 3D 万花筒旋转动画特效的基本 HTML 结构如下:

  1. <div class="pic">
  2.   <img src="img/1.jpg"/>
  3.   <img src="img/2.jpg" />
  4.   <img src="img/3.jpg"/>
  5.   <img src="img/4.jpg"/>
  6.   <img src="img/5.jpg"/>
  7.   <img src="img/6.jpg"/>
  8.   <img src="img/7.jpg"/>
  9.   <img src="img/8.jpg"/>
  10.   <img src="img/9.jpg"/>
  11.   <img src="img/10.jpg"/>
  12.   <p></p>
  13. </div>

CSS 样式:

设置全局样式如下:

  1. *{margin:0;padding: 0;}
  2. body{background-color: #000;overflow:hidden;}

为 3D 万花筒容器元素.pic 设置固定的宽度和高度,然后通过 transform 属性来依次设置透视效果 perspective 为 800 像素,绕 X 轴旋转 rotateX()-10 度,绕 Y 轴旋转 rotateY()0 度。

  1. .pic{
  2.   width: 120px;
  3.   height: 180px;
  4.   margin: 150px auto 0;
  5.   position: relative;
  6.   /*transform 旋转元素*/
  7.   transform-style:preserve-3d;
  8.   transform:perspective(800px) rotateX(-10deg) rotateY(0deg);
  9. }

然后为每一张图片设置 box-shadow 阴影效果,以及使用-webkit-box-reflect 属性来制作阴影效果。

  1. .pic img{
  2.   position: absolute;
  3.   width: 100%;
  4.   height: 100%;
  5.   border-radius: 5px;
  6.   box-shadow: 0px 0px 10px #fff;
  7.   /*倒影的设置*/
  8.   -webkit-box-reflect:below 10px -webkit-linear-gradient(top,rgba(0,0,0,0) 50%,rgba(0,0,0,.5) 100%);
  9. }

容器中空的<p>元素用于制作一个椭圆形渐变效果。

  1. .pic p{
  2.   width: 1200px;
  3.   height: 1200px;
  4.   background: -webkit-radial-gradient(center center,600px 600px,rgba(255,255,255,.5),rgba(0,0,0,0));
  5.   position: absolute;
  6.   top:100%;left:50%;
  7.   margin-top: -600px;
  8.   margin-left: -600px;
  9.   border-radius:600px;
  10.   transform:rotateX(90deg);
  11. }

JavaScript:

在页面 DOM 元素加载完毕之后,使用下面的方法来初始化该 3D 万花筒特效。

  1. $(function(){
  2.  
  3.   var imgL=$(".pic img").size();
  4.   var deg=360/imgL;
  5.   var roY=0,roX=-10;
  6.   var xN=0,yN=0;
  7.   var play=null;
  8.  
  9.   $(".pic img").each(function(i){
  10.     $(this).css({
  11.       <!--translateZ 定义2d旋转沿着z轴-->
  12.       "transform":"rotateY("+i*deg+"deg) translateZ(300px)" });
  13.       <!--防止图片被拖拽-->
  14.       $(this).attr('ondragstart','return false');
  15.     });
  16.  
  17.     $(document).mousedown(function(ev){
  18.     var x_=ev.clientX;
  19.     var y_=ev.clientY;
  20.     clearInterval(play);
  21.       console.log('我按下了');
  22.       $(this).bind('mousemove',function(ev){
  23.         /*获取当前鼠标的坐标*/
  24.         var x=ev.clientX;
  25.         var y=ev.clientY;
  26.               /*两次坐标之间的距离*/
  27.                 xN=x-x_;
  28.           yN=y-y_;
  29.  
  30.          roY+=xN*0.2;
  31.         roX-=yN*0.1;
  32.         console.log('移动');
  33.  
  34.         $('.pic').css({
  35.           transform:'perspective(800px) rotateX('+roX+'deg) rotateY('+roY+'deg)'
  36.         });
  37.         /*之前的鼠标坐标*/
  38.            x_=ev.clientX;
  39.            y_=ev.clientY;
  40.  
  41.       });
  42.     }).mouseup(function(){
  43.             $(this).unbind('mousemove');
  44.             var play=setInterval(function(){
  45.  
  46.              xN*=0.95;
  47.              yN*=0.95
  48.              if(Math.abs(xN)<1 && Math.abs(yN)<1){
  49.                 clearInterval(play);
  50.              }
  51.               roY+=xN*0.2;
  52.         roX-=yN*0.1;
  53.         $('.pic').css({
  54.           transform:'perspective(800px) rotateX('+roX+'deg) rotateY('+roY+'deg)'
  55.         });
  56.  
  57.       },30);
  58.     });
  59.   });
(0)

本文由 创客云 作者:PetitQ 发表,转载请注明来源!

阿里云

热评文章

发表评论

精彩推荐

Supro - 极简电商WordPress汉化主题

钻石珠宝奢侈品DedeCMS织梦模板

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

Hi, 如果您有主题插件代购(30-600元)汉化等建站相关业务,可以 跟我联系 哦!
欢迎投稿
嘿,欢迎咨询!