jquery+CSS3實(shí)現(xiàn)3D拖拽相冊(cè)效果
很久之前練習(xí)過(guò)的一個(gè)實(shí)踐,復(fù)習(xí)完漸變、圓角、3D變形、拖拽等等來(lái)看源碼,估計(jì)還不會(huì)太凌亂(◎﹏◎)哈哈哈
效果圖:
HTML:
<!doctype html> <html onselectstart="return false;" lang="en"><!-- !important --> <head> <meta charset="UTF-8"> <title>3D拖拽相冊(cè)</title> <link rel="stylesheet" href="css/style.css"> </head> <body> <!-- html上阻止默認(rèn)行為onselectstart --> <div class="pic"> <img src="images/1.jpg" /> <img src="images/2.jpg"/> <img src="images/3.jpg" /> <img src="images/4.jpg" /> <img src="images/5.jpg" /> <img src="images/6.jpg" /> <img src="images/7.jpg" /> <img src="images/8.jpg" /> <img src="images/9.jpg" /> <img src="images/10.jpg" /> <img src="images/11.jpg" /> <p></p> </div> <script type="text/javascript" src="js/jquery.js"></script> <script type="text/javascript" src="js/index.js"></script> </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;/*設(shè)置3D環(huán)境*/ /*perspective:800px;不用這個(gè)*/ 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%; /*往回移動(dòng)位置*/ margin-left:-600px; margin-top:-600px; transform:rotateX(90deg); border-radius:600px; }
JQ:
$(function(){ var imgL=$("div.pic img").size();//獲取到圖片總數(shù) // alert(imgL); var deg=360/imgL;//每張圖片需要旋轉(zhuǎn)的角度 var roY=0,roX=0;//定義父盒子旋轉(zhuǎn)初始值 var xN,yN;//定義當(dāng)前點(diǎn)擊處的坐標(biāo)和前一坐標(biāo)的距離差 var play;//定義定時(shí)器 $("div.pic img").each(function(i){ //設(shè)置每張圖片 的3D位置 $(this).css({"transform":"rotateY("+i*deg+"deg) translateZ(350px)"}); $(this).attr("ondragstart","return false");//每張圖片都禁止拖拽 }); $(document).mousedown(function(ev){ //每次都先清除定時(shí)器,防止混亂 clearInterval(play); //獲取當(dāng)前點(diǎn)擊處的坐標(biāo) var x_=ev.clientX; var y_=ev.clientY; $(this).bind("mousemove",function(ev){ //獲取移動(dòng)后的坐標(biāo) var x=ev.clientX; var y=ev.clientY; //獲取移動(dòng)后,當(dāng)前坐標(biāo)和前一坐標(biāo)的距離差 xN=x-x_; yN=y-y_; //將距離差轉(zhuǎn)變?yōu)槿萜餍D(zhuǎn)的數(shù)值 roY+=xN*0.2; roX-=yN*0.1; /*$("body").append("<div style='background:red;width:5px;height:5px;position:absolute;top:"+y+"px;left:"+x+"px;'></div>"); 此處為方便看到效果*/ $("div.pic").css({ "transform":"perspective(800px) rotateY("+roY+"deg) rotateX("+roX+"deg)" }); //將移動(dòng)后的點(diǎn)設(shè)為前一點(diǎn)存放到x_,y_變量中 x_=ev.clientX; y_=ev.clientY; }) }).mouseup(function(){ //鼠標(biāo)抬起時(shí),解綁鼠標(biāo)移動(dòng)事件 $(this).unbind("mousemove"); //鼠標(biāo)抬起時(shí)候,實(shí)現(xiàn)慣性緩沖效果 play=setInterval(function(){ //將距離插值慢慢變小,實(shí)現(xiàn)慣性緩沖 xN*=0.95; yN*=0.95; //向左拖動(dòng)的時(shí)候,當(dāng)前點(diǎn)與前一點(diǎn)的距離差是負(fù)值的,要取絕對(duì)值 //停止慣性 if(Math.abs(xN)<1&&Math.abs(yN)<1){ clearInterval(play); } //將距離差轉(zhuǎn)為旋轉(zhuǎn)角度 roY+=xN*0.2; roX-=yN*0.1; $("div.pic").css({ "transform":"perspective(800px) rotateY("+roY+"deg) rotateX("+roX+"deg)" }); },30); }) })
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- jQuery實(shí)現(xiàn)鼠標(biāo)懸停3d菜單展開(kāi)動(dòng)畫效果
- 酷炫jQuery全屏3D焦點(diǎn)圖動(dòng)畫效果
- jQuery+CSS3實(shí)現(xiàn)3D立方體旋轉(zhuǎn)效果
- 基于jquery的3d效果實(shí)現(xiàn)代碼
- jquery實(shí)現(xiàn)的3D旋轉(zhuǎn)木馬特效代碼分享
- jquery實(shí)現(xiàn)疊層3D文字特效代碼分享
- jQuery實(shí)現(xiàn)3D文字特效的方法
- jQuery實(shí)現(xiàn)圖像旋轉(zhuǎn)動(dòng)畫效果
- jQuery實(shí)現(xiàn)的產(chǎn)品自動(dòng)360度旋轉(zhuǎn)展示特效源碼分享
- jQuery實(shí)現(xiàn)炫麗的3d旋轉(zhuǎn)星空效果
相關(guān)文章
jQuery時(shí)間戳和日期相互轉(zhuǎn)換操作示例
這篇文章主要介紹了jQuery時(shí)間戳和日期相互轉(zhuǎn)換操作,結(jié)合實(shí)例形式分析了jQuery針對(duì)日期與時(shí)間戳的轉(zhuǎn)換、運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下2018-12-12jQuery實(shí)現(xiàn)簡(jiǎn)單的手風(fēng)琴效果
這篇文章主要為大家詳細(xì)介紹了jQuery實(shí)現(xiàn)簡(jiǎn)單的手風(fēng)琴效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06jQuery+css+html實(shí)現(xiàn)頁(yè)面遮罩彈出框
面遮罩彈出框已經(jīng)不是一個(gè)陌生的話題了,實(shí)現(xiàn)的方法大同小異多種多樣,今天用jQuery實(shí)現(xiàn)頁(yè)面遮罩彈出框,主要用的技術(shù)有JQuery,css和html,感興趣的朋友可以參考下哈2013-03-03關(guān)于HTML5的data-*自定義屬性的總結(jié)
大家總是習(xí)慣使用HTML標(biāo)簽添加自定義屬性來(lái)存儲(chǔ)和操作數(shù)據(jù),所以才在HTML5規(guī)范里增加了一個(gè)自定義data屬性,這樣使用更便捷,一起跟隨小編過(guò)來(lái)看看吧2018-05-05ajax與json 獲取數(shù)據(jù)并在前臺(tái)使用簡(jiǎn)單實(shí)例
這篇文章主要介紹了ajax與json 獲取數(shù)據(jù)并在前臺(tái)使用簡(jiǎn)單實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-01-01jquery中dom操作和事件的實(shí)例學(xué)習(xí) 下拉框應(yīng)用
jquery中dom操作和事件的實(shí)例學(xué)習(xí) 下拉框應(yīng)用實(shí)現(xiàn)代碼,需要的朋友可以參考下。2011-12-12js中獲取 table節(jié)點(diǎn)各tr及td的內(nèi)容簡(jiǎn)單實(shí)例
下面小編就為大家?guī)?lái)一篇js中獲取 table節(jié)點(diǎn)各tr及td的內(nèi)容簡(jiǎn)單實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-10-10jquery animate實(shí)現(xiàn)鼠標(biāo)放上去顯示離開(kāi)隱藏效果
本文為大家介紹下使用jquery animate實(shí)現(xiàn)鼠標(biāo)放上去顯示,離開(kāi)就隱藏的效果,感興趣的朋友可以參考下哈,希望對(duì)大家有所幫助2013-07-07