JQ实现3D拖拽效果

 1 <!DOCTYPE HTML>
 2 <html onselectstart=‘return false‘>
 3     <head>
 4         <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
 5         <meta name="keywords" content="" />
 6         <meta name="description" content="" />
 7         <title>3D拖拽效果</title>
 8         <style type="text/css">
 9             *{ margin:0; padding:0;}
10             body{ background:#000; width:100%; height:100%; overflow:hidden}
11             #wrap{ width:133px; height:200px; margin:200px auto 0;
12                 position:relative;
13                 transform-style:preserve-3d;
14                 transform:perspective(800px) rotateX(-10deg) rotateY(0deg);
15                 }
16             #wrap ul li{
17                 list-style:none;
18                 width:120px;
19                 height:180px;
20                 position:absolute;
21                 top:0;left:0;
22                 border-radius:3px;
23                 box-shadow:0 0 10px #fff;
24                 background-size:100%;
25
26                 transform:rotateY(0deg) translateZ(0px);
27                 -webkit-box-reflect:below 10px -webkit-linear-gradient(top,rgba(0,0,0,0) 40%,rgba(0,0,0,.5) 100%);
28             }
29             #wrap p{ width:700px; height:700px; position:absolute; border-radius:100%;
30                 left:50%; top:100%; margin-left:-350px; margin-top:-350px;
31                 background:-webkit-radial-gradient(center,rgba(50,50,50,1),rgba(0,0,0,0));
32                 transform:rotateX(90deg);}
33         </style>
34
35     </head>
36     <body>
37         <div id="wrap">
38             <ul>
39                 <li style="background-image:url(img/1.jpg);"></li>
40                 <li style="background-image:url(img/2.jpg);"></li>
41                 <li style="background-image:url(img/3.jpg);"></li>
42                 <li style="background-image:url(img/4.jpg);"></li>
43                 <li style="background-image:url(img/5.jpg);"></li>
44                 <li style="background-image:url(img/6.jpg);"></li>
45                 <li style="background-image:url(img/7.jpg);"></li>
46                 <li style="background-image:url(img/8.jpg);"></li>
47                 <li style="background-image:url(img/9.jpg);"></li>
48                 <li style="background-image:url(img/10.jpg);"></li>
49                 <li style="background-image:url(img/11.jpg);"></li>
50             </ul>
51             <p></p>
52         </div>
53
54         <script src="js/jquery-1.11.3.min.js"></script>
55         <script>
56         $(function(){
57             var oL = $(‘#wrap ul li‘).size();
58             var Deg = 360/oL;
59             var xDeg = 0,yDeg = -10,xs,ys,p=null;
60
61             for (var i=oL-1;i>=0;i--)
62             {
63
64                 $(‘#wrap ul li‘).eq(i).css({
65                     transition:"1s "+(oL-i)*0.15+"s transform,.5s "+(1+oL*0.15)+"s opacity",
66                     ‘transform‘:‘rotateY(‘+Deg*i+‘deg) translateZ(350px)‘
67                 });
68             }
69
70
71             $(document).mousedown(function(e){
72                 clearInterval(p);
73                 var x1 = e.clientX;
74                 var y1 = e.clientY;
75                 $(this).bind(‘mousemove‘,function(e){
76                     xs = e.clientX - x1;
77                     ys = e.clientY - y1;
78                     x1 = e.clientX;
79                     y1 = e.clientY;
80                     xDeg += xs*0.3;
81                     yDeg -= ys*0.1;
82                     $(‘#wrap‘).css(‘transform‘,"perspective(800px) rotateX("+yDeg+"deg) rotateY("+xDeg+"deg)");
83                 });
84             }).mouseup(function(){
85                 $(this).unbind(‘mousemove‘);
86                 p = setInterval(function(){
87                     if(Math.abs(xs)<0.5&&Math.abs(ys)<0.5){clearInterval(p)};
88                     xs = xs*0.95;
89                     ys = ys*0.95
90                     xDeg += xs*0.3;
91                     yDeg -= ys*0.1;
92                     $(‘#wrap‘).css(‘transform‘,"perspective(800px) rotateX("+yDeg+"deg) rotateY("+xDeg+"deg)");
93                 },30);
94             });
95
96         });
97         </script>
98     </body>
99 </html>

效果图:

时间: 2024-11-13 23:17:58

JQ实现3D拖拽效果的相关文章

WEB前端开发学习----11. JQuery 实现简单的拖拽效果

拖拽效果在网页中很常见.实现起来也不难.记录一下今天实现的简单效果. 拖拽演示 快速拖动时,会出现问题,以后修改. 说白了,就是3个点击事件. 1. 按下鼠标左键, 触发点击事件,此时记录下可以得到鼠标相对于拖动控件的位置(当前鼠标位置-控件位置): 2. 拖动鼠标,触发移动事件,可以计算出鼠标移动的距离(当前鼠标位置-之前算出的相对位置),也就是拖拽控件所移动的距离: 3. 鼠标抬起,结束拖动. 在JQ中,event.pageX    event.pageY可以获取鼠标的位置,相对于文档左上角

简单的鼠标拖拽效果(原生js实现)

之前在聊天群里看到有人说面试的时候被问到了怎样实现一个拖拽效果,当时看到后在心里默默思考了下,结果发现好像我也写不出来啊.本着遇到一个解决一个的思想,就亲自敲了一个,看到张鑫旭大神写的代码,真的很厉害,多多学习了,(感觉随便搜一个关于前端方面的问题都能看到他的网站,真是太佩服了,写了那么多文章,十分感谢.)好了,接下来就进入正题了.想实现一个效果首先得明白其中的逻辑,知道了实现逻辑后,就可以码代码了.首先我实现的效果是: 鼠标按下后,才可以执行后续效果 鼠标已经按下,然后鼠标移动,需要拖拽的元素

js拖拽效果实现

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"><head>    <meta

Createjs学习心得之使用EaselJs实现拖拽效果

寒假时跟着老师在做一个createjs+angularjs的html5应用app,因为在这之前完全没了解过createjs这个框架,所以在查找资料时发现,国外官网(http://www.createjs.com)API文档虽是详细,但对于一些英语不太好的童鞋(其实我也是一枚英语渣渣)就比较难理解了.而国内中文社区做的并不好,用户不多,资料翻译准确度不够.所以在这里,我就把我学习Createjs的一些心得体会向大家分享下: 一.什么是CreateJS? createjs是一个轻量级的javascr

jQuery的DOM操作实例(2)——拖拽效果&amp;&amp;拓展插件

一.原生JavaScript编写拖拽效果 二.jQuery编写的拖拽效果 三.在jQuery中拓展一个拖拽插件

用JS实现版面拖拽效果

类似于这样的一个版面,点击标题栏,实现拖拽效果. 添加onmousedown事件 通过获取鼠标的坐标(clientX,clientY)来改变面板的位置 注意:面板使用绝对定位方式,是以左上角为参考点,所以我们还需要获取鼠标在面板的位置,也就是以鼠标所在位置为参考点. // 光标按下时光标和面板之间的距离 disX=event.clientX-oDrag.offsetLeft, disY=event.clientY-oDrag.offsetTop; 添加onmousemove事件 在获取了鼠标相对

拖拽效果

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>拖拽效果</title> </head> <style> body { background: skyblue; } #wrap { margin: 50px auto; width: 400px; height: 400px; bo

学习笔记---Javascript事件Event、IE浏览器下的拖拽效果

学习笔记---Javascript事件Event.IE浏览器下的拖拽效果     1. 关于event常用属性有returnValue(是否允许事件处理继续进行, false为停止继续操作).srcElement(触发事件的事件源对象)和attachEvent("onclick",function(){...}); 2. a. 实现拖放(Drag and Drop): 目前支支持IE, 若定制某对象为可拖放对象, 则必须覆盖目标对象的dragenter和dragover事件, 可以用e

拖拽效果的实现原理分析2

拖拽效果的实现原理分析2 上文对html5支持的浏览器的拖拽效果进行了分析,本文不采用任何库,来分析下拖拽的过程 先想想我们平时拖拽是怎么操作的,大致可以分为几下几个步骤: 鼠标按下,鼠标移动,拖拽,被拖动的物件跟着走 鼠标松开,物件停止,无拖动了 计算距离,拖拽的距离(鼠标移动) 对应在事件上就是 onmousedown,onmousemove ,开始拖拽 onmouseup ,停止拖拽 计算相对的拖拽距离 下面我们按照这种思路,写一个拖拽效果,假设我们拖动标题,这块的内容就跟着走. 首先我们