jquery CSS3实现3D拖拽相册效果 下载本文

这篇文章主要为大家详细介绍了jquery+CSS3实现3D拖拽相册效果的具体代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 效果图: HTML:

<!doctype html>

<html onselectstart=\ <head>

  <meta charset=\

  <title>3D拖拽相册</title>

  <link rel=\ </head> <body>

 <!-- html上阻止默认行为onselectstart -->   <div class=\

    <img src=\     <img src=\     <img src=\     <img src=\     <img src=\     <img src=\     <img src=\     <img src=\     <img src=\     <img src=\     <img src=\     <p></p>   </div>

  <script type=\   <script type=\ </body> </html> CSS:

*{margin:0;padding:0;}

body,html{background:#000;} .pic{

  width:120px;height:180px;   margin:150px auto 0;   border:1px solid red;   position:relative;

  transform-style:preserve-3d;/*设置3D环境*/   /*perspective:800px;不用这个*/

  transform:perspective(800px) rotateX(-10deg) rotateY(0deg);

}

.pic img{

  position:absolute;

  height:100%;width:100%;   border-radius:5px;

  box-shadow:0 0 10px #fff;   /*背景渐变效果!important*/   -webkit-box-reflect:below 10px

  -webkit-linear-gradient(top,rgba(0,0,0,0) 80%,rgba(0,0,0,1) 100%); }

.pic p{

  width:1200px;height:1200px;   /*放射性背景渐变*/   background:   -webkit-radial-gradient(center center,400px 400px,rgba(255,255,255,0.2),rgba(0,0,0,0));   position:absolute;   left:50%;top:100%;   /*往回移动位置*/   margin-left:-600px;   margin-top:-600px;

  transform:rotateX(90deg);   border-radius:600px; } JQ:

$(function(){

  var imgL=$(\获取到图片总数   // alert(imgL);

  var deg=360/imgL;//每张图片需要旋转的角度   var roY=0,roX=0;//定义父盒子旋转初始值

  var xN,yN;//定义当前点击处的坐标和前一坐标的距离差   var play;//定义定时器

  $(\     //设置每张图片 的3D位置

    $(this).css({\     $(this).attr(\每张图片都禁止拖拽   });

  $(document).mousedown(function(ev){     //每次都先清除定时器,防止混乱     clearInterval(play);

    //获取当前点击处的坐标     var x_=ev.clientX;     var y_=ev.clientY;

    $(this).bind(\

      //获取移动后的坐标       var x=ev.clientX;       var y=ev.clientY;

      //获取移动后,当前坐标和前一坐标的距离差       xN=x-x_;       yN=y-y_;

      //将距离差转变为容器旋转的数值       roY+=xN*0.2;       roX-=yN*0.1;       /*$(\style='background:red;width:5px;height:5px;position:absolute;top:\/div>\

此处为方便看到效果*/

      $(\

        \rotateY(\rotateX(\

      });

      //将移动后的点设为前一点存放到x_,y_变量中       x_=ev.clientX;       y_=ev.clientY;     })

  }).mouseup(function(){

    //鼠标抬起时,解绑鼠标移动事件     $(this).unbind(\

    //鼠标抬起时候,实现惯性缓冲效果     play=setInterval(function(){

      //将距离插值慢慢变小,实现惯性缓冲       xN*=0.95;       yN*=0.95;

      //向左拖动的时候,当前点与前一点的距离差是负值的,要取绝对值

      //停止惯性

      if(Math.abs(xN)<1&&Math.abs(yN)<1){         clearInterval(play);       }

      //将距离差转为旋转角度       roY+=xN*0.2;       roX-=yN*0.1;       $(\

        \rotateY(\rotateX(\

      });     },30);   })