jQuery實(shí)現(xiàn)鼠標(biāo)拖動(dòng)圖片功能
本例利用jQuery實(shí)現(xiàn)一個(gè)鼠標(biāo)托動(dòng)圖片的功能。
首先設(shè)一個(gè)wrapper,wrapper內(nèi)的坐標(biāo)即圖片移動(dòng)的坐標(biāo)
#wrapper{ width: 1000px; height:1000px; position:relative; }
設(shè)置圖片div,這個(gè)div即要拖動(dòng)的div
#div1{ position: absolute; left:0px; top:0px; width: 300px; height: 200px; background: url("d:/Pictures/Earth.jpg"); background-size:contain; }
上面設(shè)置了wrapper的定位為relative,div1的定位為absolute。
接下來設(shè)計(jì)拖動(dòng)的算法:
思路如下:
1.鼠標(biāo)點(diǎn)下時(shí)讓div跟隨鼠標(biāo)移動(dòng)
2.鼠標(biāo)松開時(shí)停止跟隨
首先需要一個(gè)函數(shù),他會(huì)將該div的坐標(biāo)改變?yōu)楫?dāng)前鼠標(biāo)的位置:
首先需要定義幾個(gè)變量,保存當(dāng)前鼠標(biāo)的坐標(biāo)以及圖片的坐標(biāo)
var timer; var mouseX=0; var mouseY=0; var pic_width = parseInt($("#div1").css("width")); var pic_height = parseInt($("#div1").css("height"));
那么現(xiàn)在就需要為wrapper添加一個(gè)事件監(jiān)聽器,鼠標(biāo)在wrapper中移動(dòng)時(shí),修改變量mousex,mousey的值
$("#wrapper").mousemove(function(e){ mouseX = e.clientX; mouseY = e.clientY; });
編寫follow函數(shù),并用計(jì)時(shí)器調(diào)用它
$("#div1").mousedown(function(){ timer=setInterval(follow,10); }); $("#div1").mouseup(function(){ clearInterval(timer); }); var follow = function(){ $("#div1").css("left",mouseX-pic_width/2); $("#div1").css("top",mouseY-pic_height/2); };
完整代碼如下所示:
<!doctype html> <html> <head> <script type = "text/javascript" src = "jquery.js"></script> <style type = "text/css"> #wrapper{ width: 1000px; height:1000px; position: relative; background: linear-gradient(lightblue,white); font-size: 40px; } #div1{ position: absolute; left:0px; top:0px; width: 300px; height: 200px; background: url("d:/Pictures/Earth.jpg"); background-size:contain; } </style> </head> <body> <div id = "wrapper"> Lorem, ipsum dolor sit amet consectetur adipisicing elit. Impedit numquam accusamus explicabo praesentium laudantium et accusantium, ab ipsum, excepturi necessitatibus quos iste ad qui deleniti sed debitis reiciendis quam nisi. <div id = "div1"> </div> </div> <script> var timer; var mouseX=0; var mouseY=0; var pic_width = parseInt($("#div1").css("width")); var pic_height = parseInt($("#div1").css("height")); $("#wrapper").mousemove(function(e){ mouseX = e.clientX; mouseY = e.clientY; }); $("#div1").mousedown(function(){ timer=setInterval(follow,10); }); $("#div1").mouseup(function(){ clearInterval(timer); }); var follow = function(){ $("#div1").css("left",mouseX-pic_width/2); $("#div1").css("top",mouseY-pic_height/2); }; </script> </body> </html>
最終效果:
到此這篇關(guān)于jQuery實(shí)現(xiàn)鼠標(biāo)拖動(dòng)圖片功能的文章就介紹到這了,更多相關(guān)jQuery鼠標(biāo)拖動(dòng)圖片內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
getJSON調(diào)用后臺(tái)json數(shù)據(jù)時(shí)函數(shù)被調(diào)用兩次的原因猜想
近期在做前端開發(fā)時(shí)候使用到getJSON調(diào)用后臺(tái)json數(shù)據(jù),發(fā)現(xiàn)后臺(tái)的函數(shù)被調(diào)用兩次,函數(shù)名稱為getMessages,下面是本人的一些猜想,感興趣的朋友可以參考下2013-09-09jQuery Validate 驗(yàn)證,校驗(yàn)規(guī)則寫在控件中的具體實(shí)例
本篇文章主要是對(duì)jQuery Validate 驗(yàn)證,校驗(yàn)規(guī)則寫在控件中的具體實(shí)例進(jìn)行了介紹,需要的朋友可以過來參考下,希望對(duì)大家有所幫助2014-02-02基于jQuery Easyui實(shí)現(xiàn)登陸框界面
本文通過實(shí)例代碼給大家分享了基于jQuery Easyui實(shí)現(xiàn)登陸框界面,代碼簡單易懂,非常不錯(cuò),具有參考借鑒價(jià)值,需要的的朋友參考下吧2017-07-07jQuery實(shí)現(xiàn)的登錄浮動(dòng)框效果代碼
這篇文章主要介紹了jQuery實(shí)現(xiàn)的登錄浮動(dòng)框效果代碼,點(diǎn)擊登陸鏈接可彈出懸浮登錄框,涉及jQuery中show與hide方法的使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09jQuery實(shí)現(xiàn)將頁面上HTML標(biāo)簽換成另外標(biāo)簽的方法
這篇文章主要介紹了jQuery實(shí)現(xiàn)將頁面上HTML標(biāo)簽換成另外標(biāo)簽的方法,實(shí)例說明了兩種實(shí)現(xiàn)html頁面元素替換的技巧,需要的朋友可以參考下2015-06-06使用jQuery加載html頁面到指定的div實(shí)現(xiàn)方法
下面小編就為大家?guī)硪黄褂胘Query加載html頁面到指定的div實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-07-07jQuery+ajax中g(shù)etJSON() 用法實(shí)例
這篇文章主要介紹了jQuery+ajax中g(shù)etJSON() 用法實(shí)例,需要的朋友可以參考下2014-12-12jQuery中bind,live,delegate與one方法的用法及區(qū)別解析
本篇文章主要是對(duì)jQuery中bind,live,delegate與one方法的用法及區(qū)別進(jìn)行了詳細(xì)的介紹,需要的朋友可以過來參考下,希望對(duì)大家有所幫助2013-12-12jQuery拖動(dòng)元素并對(duì)元素進(jìn)行重新排序
這篇文章主要介紹了jQuery拖動(dòng)元素并對(duì)元素進(jìn)行重新排序的實(shí)現(xiàn)方法,感興趣的小伙伴們可以參考一下2015-12-12