日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

鼠标拖拽吸附效果

發布時間:2023/11/30 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 鼠标拖拽吸附效果 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

JavaScript鼠標拖動+自動吸附實例

學了幾天的JavaScript,自己動手做了一個簡單的鼠標拖動的實例,拖動過程中科自動檢測與目標容器的距離,在一定的距離范圍內可以自動將被拖動的元素加入到目標容器中,希望對開始學習javascript的童鞋有用……

先看看效果圖(Chrome、FireFox、Opera、Safari測試通過):

效果圖(虛線框:目標對象 ? ?藍色填充透明框:臨時拖動對象 ? 紅色填充框:被拖動對象)

主要思路:首先給要拖動的div添加一個鼠標按下(mousedown)事件、給document對象添加鼠標移動(mousemove)事件和鼠標彈起(mouseup)事件。鼠標開始移動的時候創建一個臨時的拖動對象(temp),移動過程中改變臨時拖動目標的位置,鼠標釋放時將被拖動的div(elem)的位置設置為臨時拖動目標temp的位置,然后移出臨時拖動目標。移動過程中,同時還檢測了拖動的對象和目標div的位置關系,如果碰撞(可以設置吸附的范圍),則自動吸附(將被拖動的對象加入到目標對象中),需要說明的是:這里簡單起見,并沒有真正的把被拖動對象加入到目標對象中,只是設置了被拖動對象的位置。

鼠標按下時:獲取被拖動元素的位置和鼠標按下的位置,設置拖動的標志(isDrag)值為true。

elem.onmousedown = function(event){//鼠標按下isDrag = true;startX = parseInt(this.style.left||getCSSValue(this,'left'));startY = parseInt(this.style.top||getCSSValue(this,'top'));mX = event.pageX;mY = event.pageY;};

鼠標移動時:如果isDrag為true,并且temp對象不存在,則創建temp對象,并根據鼠標的位置計算并設置temp的位置。

document.onmousemove = function(event){//鼠標移動this.innerHTML = 'Mouse Position('+event.pageX+','+event.pageY+')';if(isDrag){//當前正在移動if(temp == undefined){//temp臨時拖動目標不存在temp = document.createElement('div');temp.id = 'drag';temp.className = 'temp';document.body.appendChild(temp);//將temp臨時拖動目標添加到頁面中}//改變位置temp.style.left = (startX + event.pageX - mX) + 'px';temp.style.top = (startY + event.pageY - mY) + 'px';//檢測是否在目標范圍內if(checkIntersect(temp,$('target'),20)){//在范圍內$('target').style.border = '2px #F00 dashed';$('target').style.webkitAnimationName = 'light';//閃爍動畫$('target').style.webkitAnimationDuration = '1s';$('target').style.webkitAnimationDelay = '0.5s';$('target').style.webkitAnimationIterationCount = '100';}else{//不在范圍內$('target').style.border = '2px #09F dashed';$('target').style.webkitAnimationName = '';}}};

說明:這里的mousemove事件并不是添加到被拖動對象(elem)上面,如果添加到elem上面,那么鼠標如果移動太快一旦鼠標離開了elem對象,那么就會出現問題。

鼠標釋放時:檢測碰撞結果,根據情況設置被拖動對象(elem)的位置,如果以碰撞,則根據目標div的位置設置被拖動對象(elem)的位置,否則根據temp的位置來設置被拖動對象(elem)的位置;

document.onmouseup = function(){//鼠標釋放isDrag = false;if(checkIntersect(temp,$('target'),20)){elem.style.left=$('target').offsetLeft+'px';elem.style.top=$('target').offsetTop+'px';}else{elem.style.left=temp.offsetLeft+'px';elem.style.top=temp.offsetTop+'px';}document.body.removeChild(temp);//移出臨時拖動目標temp = null;$('target').style.border = '2px #09F dashed';$('target').style.webkitAnimationName = '';//取消閃爍};

=======================================================

用到的其他函數:在設計過程中,我們需要或許某個元素樣式的一些值,如果我們采用行內式(即將樣式寫在元素標簽里面的style屬性里面),我們可以采用“obj.style.left”類似這樣的語法來或許,但是如果我們的樣式采用了內嵌式(將CSS寫在<head>與</head>之間,并且用<style>和</style>標記進行聲明)或者鏈接式(用類似這樣的<link href="css.css" type="text/css" rel="stylesheet">方式導入外部樣式表)、導入式(采用import語句),我們就無法從上面的方式中獲取樣式的相關值,但是我們可以用其他的方法:IE下元素有currentStyle對象,其他瀏覽器采用document.defaultView.getComputedStyle()方法,這樣可以獲取樣式屬性的值。代碼如下:

function getCSSValue(obj,key){//獲取元素CSS值if(obj.currentStyle){//IEreturn obj.currentStyle[key]; }else{//!IEreturn document.defaultView.getComputedStyle(obj,null)[key];}}

另外,檢測碰撞的函數;

function checkIntersect(obj1,obj2,distance){//檢測碰撞,distance為吸附的范圍var left1 = obj1.offsetLeft;var top1 = obj1.offsetTop;var left2 = obj2.offsetLeft;var top2 = obj2.offsetTop;var width1 = obj1.offsetWidth;var height1 = obj1.offsetHeight;var width2 = obj2.offsetWidth;var height2 = obj2.offsetHeight;return (((left1-left2>=0&&left1-left2<width2+distance)||(left2-left1>=0&&left2-left1<width1+distance))&&((top1-top2>=0&&top1-top2<height2+distance)||(top2-top1>=0&&top2-top1<height1+distance)));}

?

總結:這里面主要用到了javascript鼠標事件,簡單的DOM節點操作,還有css3的一些新的東西,比如動畫(animation)、圓角(border-radius)、陰影(box-shadow)等知識。

轉載于:https://www.cnblogs.com/wu-hou/p/6739498.html

總結

以上是生活随笔為你收集整理的鼠标拖拽吸附效果的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 91精品人妻一区二区三区蜜桃欧美 | 91精品又粗又猛又爽 | 久久三级网 | 插插插网站 | 国产一级淫片a视频免费观看 | 被室友玩屁股(h)男男 | 丰满秘书被猛烈进入高清播放在 | a色视频 | 亚洲精品码| jizz91| 玩弄丰满少妇xxxxx性多毛 | 成人字幕| 四虎影视网 | 国产又粗又猛又爽又黄的网站 | 婷婷射 | 在线小视频你懂的 | 欧美日韩在线视频免费观看 | 男人天堂一区 | 亚洲一区二区三区电影在线观看 | 成人激情开心 | 91区国产| 成人在线视频网 | 公侵犯一区二区三区四区中文字幕 | 亚洲第1页 | 国产二页 | 蜜桃做爰免费网站 | 专干中国老太婆hd | 精品久久久久久无码中文野结衣 | 深夜视频一区二区三区 | 在线观看免费人成视频 | 亚洲午夜精品一区二区三区他趣 | 午夜影院在线播放 | 99久久久无码国产精品性色戒 | 中文在线免费看视频 | 9l蝌蚪porny中文自拍 | 日本我不卡 | 天天射影院 | 性一交一乱一透一a级 | 娇小的粉嫩xxx极品 国产精品人人爽人人爽 | 一区二区三区在线看 | 91大神小宝寻花在线观看 | 91毛片视频 | 日韩一二三四五区 | 都市激情 自拍偷拍 | 亚洲免费黄色网 | 免费看黄在线网站 | 亚洲最大在线 | 欧美肥老妇视频九色 | 欧美性猛交xxxx乱大交退制版 | 黄色一区二区三区四区 | 日韩精品在线观看一区二区三区 | 国产一区二区三区四区五区在线 | 用力抵着尿进去了h | 激情av在线 | 污污视频在线播放 | 日韩精品人妻一区二区三区免费 | 亚洲三级av | 久久久久人妻一区精品 | 国产一在线观看 | 国产精品免费看久久久无码 | 亚洲激情图 | 夜夜天天操 | 99久久婷婷国产综合精品草原 | 五月六月丁香 | 成人h视频在线观看 | 日韩黄色网址 | 国产一区二区三区在线免费观看 | 91超薄丝袜肉丝一区二区 | 久草视频在线免费看 | 一区三区在线观看 | 欧美男女动态图 | 中国 免费 av | 亚洲综合av网 | 黄色大尺度视频 | 国产搞逼视频 | 91九色视频 | 亚洲精品一区二区18漫画 | 偷拍亚洲精品 | 成年人免费网 | 国产69精品久久久久久久久久 | 国内一区二区三区 | 99国产超薄肉色丝袜交足 | 1级黄色大片 | 精品成人免费一区二区在线播放 | 91一二区 | 国产精品免费av | 男人插女人网站 | 成人黄色片在线观看 | 日本xxxx人 | 麻豆视频污 | 快色视频在线观看 | 91久久精品国产91久久 | av不卡在线播放 | 91久色视频 | 欧美又粗又长又爽做受 | av网站免费观看 | 欧美一区不卡 | 波多野结衣av无码 | 亚洲精品视屏 |