用JS指令碼做乙個可拖動的對話方塊

2021-04-12 20:48:18 字數 2092 閱讀 4586

js指令碼做乙個可拖動的對話方塊

左直拳一、

可拖動

關鍵是能跟蹤滑鼠座標的變化,從而不斷修正對話方塊的座標。

假設待移動的對話方塊為

objmove

,則有

px = event.x - objmove.style.pixelleft;

py = event.y - objmove.style.pixeltop;

其中pixelleft

、pixeltop是對話方塊左邊緣、頂邊緣與document左邊緣、頂邊緣的距離,event

.x、event

.y是滑鼠按下(未鬆開)的座標值。

因此可得到滑鼠抓緊點與對話方塊邊緣的座標差px,py。只要在滑鼠移動過程中,保持這一座標差恆定不變,月亮走我也走,滑鼠送阿框到村口,即可實現對話方塊的拖動:

objmove.style.left = event.x - px;

objmove.style.top = event.y - py;

這只是原理,還需要一些函式進行支撐。

設定三個函式:

mdown()//

滑鼠按下時觸發,得到px,py的值,放在對話方塊的onmousedown呼叫

mmove()//

滑鼠移動時觸發,拖動,document.onmousemove

mup()//

滑鼠鬆開時觸發,釋放,document.onmouseup,當然放在對話方塊的onmouseup呼叫也是可以的

注意這個對話方塊要用絕對定位。

二、

對話方塊內的文字框等可正常編輯

如果對話方塊內有文字框、下拉框等可供使用者進行編輯的控制項,如果不進行特別處理,則游標在這些控制項內拖動同樣會引起對話方塊的移動,這跟我們平時使用的習慣不符,給框內的編輯帶來麻煩。

怎麼辦呢?

如果知道滑鼠抓緊時落在哪種型別的控制項上就好了。

嘿,這位老闆,你好運了!可以用

event.srcelement

來獲取這個控制項

var hitpoint = event.srcelement;

if( hitpoint.tagname == "input"

|| hitpoint.tagname == "textarea"

|| hitpoint.tagname == "select" )

三、

半透明

這個對話方塊還要有點透明,拖動時下面的元素若隱若現,這樣才讓人夠興奮,浮想聯翩。

主要是css裡實現。

style

="filter:alpha(opacity=90);position:absolute;left:60%;

……不過這好象在ie系的瀏覽器裡才有用,對firefox這些則沒效果。

附錄:drag.js

varobjmove = null;

varpx = 0;

varpy = 0;

document.onmouseup = mup;

document.onmousemove = mmove;

function

mdown(objmoveid)

objmove = document.getelementbyid(objmoveid);

if( objmove == null )

objmove.style.cursor = "move";

//objmove.setcapture();

px = event.x - objmove.style.pixelleft;

py = event.y - objmove.style.pixeltop;

}

function

mmove()

} function

mup()

}  

用JS指令碼做乙個可拖動的對話方塊

用js指令碼做乙個可拖動的對話方塊 左直拳一 可拖動 關鍵是能跟蹤滑鼠座標的變化,從而不斷修正對話方塊的座標。假設待移動的對話方塊為objmove,則有 px event.x objmove.style.pixelleft py event.y objmove.style.pixeltop 其中pi...

用原生js寫乙個簡單的資訊對話方塊

因為要實現兩個對話方塊效果,所以我們這邊設定的是自我對話,無聊的同學可以用這個來打發時間,說不定能找到更多靈感 var obtn document.getelementbyid btn var omsg document.getelementbyid text var ochat document....

彈出乙個對話方塊

showmodaldialog 開啟獨佔方式網頁對話方塊 window.showmodaldialog 開啟乙個獨佔方式網頁對話方塊 話法 syntax variant object.showmodaldialog surl varguments sfeatures 引數 描述 surl 指點url...