javascript實(shí)現(xiàn)簡(jiǎn)單的鼠標(biāo)拖動(dòng)效果實(shí)例
本文實(shí)例講述了javascript實(shí)現(xiàn)簡(jiǎn)單的鼠標(biāo)拖動(dòng)效果。分享給大家供大家參考。具體分析如下:
用鼠標(biāo)拖動(dòng)一個(gè)元素,放到網(wǎng)頁(yè)的任意一個(gè)位置上,這是很常見(jiàn)的,例如很多博客模板版塊位置可以自己拖動(dòng)到相應(yīng)位置。
下面先寫(xiě)一個(gè)簡(jiǎn)單的可以實(shí)現(xiàn)鼠標(biāo)拖動(dòng)的效果。
當(dāng)鼠標(biāo)按下的時(shí)候,記錄鼠標(biāo)當(dāng)前位置和元素左邊距離的差值。
當(dāng)鼠標(biāo)移動(dòng)的時(shí)候,給元素的位置賦值,就是鼠標(biāo)的位置,減去剛才的差值。
當(dāng)鼠標(biāo)放開(kāi)的時(shí)候,給鼠標(biāo)移動(dòng)和鼠標(biāo)放開(kāi)賦值null,讓它們不要再有任何動(dòng)作。
要點(diǎn)一:
disx = oevent.clientX - box.offsetLeft;
要確定拖動(dòng)的時(shí)候鼠標(biāo)點(diǎn)在元素的位置,就是鼠標(biāo)位置減去元素的左邊距離。
要點(diǎn)二:
box.style.left = oevent.clientX - disx + "px";
拖動(dòng)時(shí)元素的位置,鼠標(biāo)的當(dāng)前位置減去前面剛計(jì)算的值。
好了,上代碼:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>無(wú)標(biāo)題文檔</title> <style> body{margin:0; padding:0; height:1500px;} #box{width:100px; height:100px; background:#06c; position:absolute;} </style> <script> window.onload = function(){ var box = document.getElementById("box"); var disx =0; var disy = 0; box.onmousedown = function(evt){ var oevent = evt || window.event; disx = oevent.clientX - box.offsetLeft; disy = oevent.clientY - box.offsetTop; document.onmousemove = function(evt){ var oevent = evt || window.event; box.style.left = oevent.clientX - disx + "px"; box.style.top = oevent.clientY - disy + "px"; } document.onmouseup = function(){ document.onmousemove = null; document.onmouseup = null; } return false; } } </script> </head> <body> <h1>鼠標(biāo)拖動(dòng)</h1> <div id="box"></div> </body> </html>
再改進(jìn)一下,上面的鼠標(biāo)拖動(dòng)沒(méi)有限制范圍,有時(shí)會(huì)拖動(dòng)窗口外面看不見(jiàn)了。下面就限制下范圍
要點(diǎn)一:如下,如果元素的左邊位置小于0時(shí),給它賦值為0,如果大于可視窗大小減去元素本身的寬度的,給它賦值為 可視窗大小減元素本身寬度的差值。
var boxl = oevent.clientX - disx; if(boxl < 0){ boxl =0; }else if(boxl > vieww - box.offsetWidth){ boxl = vieww - box.offsetWidth; } <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>無(wú)標(biāo)題文檔</title> <style> body{margin:0; padding:0;} #box{width:100px; height:100px; background:#06c; position:absolute; } </style> <script> window.onload = function(){ var box = document.getElementById("box"); var disx =0; var disy = 0; box.onmousedown = function(evt){ var oevent = evt || window.event; disx = oevent.clientX - box.offsetLeft; disy = oevent.clientY - box.offsetTop; document.onmousemove = function(evt){ var oevent = evt || window.event; var boxl = oevent.clientX - disx; var boxt = oevent.clientY - disy var vieww = document.documentElement.clientWidth || document.body.clientWidth; var viewh = document.documentElement.clientHeight || document.body.clientHeight; if(boxl < 0){ boxl =0; }else if(boxl > vieww - box.offsetWidth){ boxl = vieww - box.offsetWidth; } if(boxt < 0){ boxt =0; }else if(boxt > viewh - box.offsetHeight){ boxt = viewh- box.offsetHeight; } box.style.left = boxl + "px"; box.style.top = boxt + "px"; } document.onmouseup = function(){ document.onmousemove = null; document.onmouseup = null; } return false; } } </script> </head> <body> <h1>鼠標(biāo)拖動(dòng)</h1> <div id="box"></div> </body> </html>
希望本文所述對(duì)大家的javascript程序設(shè)計(jì)有所幫助。
- javascript跟隨鼠標(biāo)x,y坐標(biāo)移動(dòng)的字效果
- javascript跟隨鼠標(biāo)的文字帶滾動(dòng)效果
- javascript表格隔行變色加鼠標(biāo)移入移出及點(diǎn)擊效果的方法
- javascript實(shí)現(xiàn)淡藍(lán)色的鼠標(biāo)拖動(dòng)選擇框?qū)嵗?/a>
- JavaScript實(shí)現(xiàn)鼠標(biāo)點(diǎn)擊后層展開(kāi)效果的方法
- javascript實(shí)現(xiàn)圖片跟隨鼠標(biāo)移動(dòng)效果的方法
- JavaScript實(shí)現(xiàn)鼠標(biāo)滑過(guò)處生成氣泡的方法
- JavaScript實(shí)現(xiàn)文字跟隨鼠標(biāo)特效
相關(guān)文章
jquery和js顯示和隱藏div的幾種方法對(duì)比整理
jQuery是基于JavaScript的一種框架。jQuery封裝js和Ajax的功能,提供函數(shù)接口,簡(jiǎn)化js的操作。使用jquery來(lái)顯示或者隱藏div真的很方便。2023-02-02JavaScript canvas繪制圓形加載進(jìn)度條
這篇文章主要為大家詳細(xì)介紹了JavaScript canvas繪制圓形加載進(jìn)度條,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06js中根據(jù)字?jǐn)?shù)截取字符串,不能截?cái)鄒rl
給一個(gè)文字,對(duì)輸出的文字進(jìn)行截取,保留400個(gè)字符,其中對(duì)url的保留比較麻煩,尤其是有兩個(gè)相同url時(shí)不能采用indexOf獲取其字符位置2012-01-01JavaScript實(shí)現(xiàn)繼承的7種方式總結(jié)
用官方點(diǎn)的話講繼承是面向?qū)ο笕筇卣髦?,可以使得子類具有父類的屬性和方法,同時(shí)還可以在子類中重新定義以及追加屬性和方法。本文整理了JavaScript實(shí)現(xiàn)繼承的7種方式,需要的可以了解一下2023-04-04JavaScript實(shí)現(xiàn)的MD5算法完整實(shí)例
這篇文章主要介紹了JavaScript實(shí)現(xiàn)的MD5算法,以完整實(shí)例形式分析了基于JavaScript實(shí)現(xiàn)MD5算法的具體步驟與相關(guān)技巧,需要的朋友可以參考下2016-02-02JavaScript實(shí)現(xiàn)鼠標(biāo)滑過(guò)處生成氣泡的方法
這篇文章主要介紹了JavaScript實(shí)現(xiàn)鼠標(biāo)滑過(guò)處生成氣泡的方法,涉及鼠標(biāo)事件與頁(yè)面樣式的相關(guān)操作技巧,需要的朋友可以參考下2015-05-05