JavaScript簡單實(shí)現(xiàn)彈出拖拽窗口(一)
本文實(shí)例為大家分享JavaScript彈出拖拽窗口的具體實(shí)現(xiàn)代碼,供大家參考,具體內(nèi)容如下
需求說明:
1、點(diǎn)擊頁面按鈕,彈出窗口;
2、要有半透明背景遮罩;
3、彈出窗口圓角,窗口半透明,但內(nèi)容不透明;帶陰影;
4、窗口可拖動;
5、拖動停止之后,滾動頁面時(shí)窗口位置不動;
6、可以使用jQuery;
7、有關(guān)閉按鈕;
進(jìn)一步功能具體描述:
點(diǎn)按鈕,會有一個(gè)可以拖拽的浮層出來。
有一個(gè)背景遮罩,支持標(biāo)題欄的拖拽,在標(biāo)題欄以外,在標(biāo)題欄區(qū)域之外的區(qū)域拖拽是沒有效果的,拖拽功能限定,他的拖拽功能被限定在可是可視區(qū)域內(nèi)。
拖曳的思路:
獲取鼠標(biāo)的位置,鼠標(biāo)移動的時(shí)候,獲取鼠標(biāo)的位置,獲取x軸y軸,賦給窗口的x軸y軸,窗口弄成絕對定位。鼠標(biāo)松開的時(shí)候把這個(gè)事件取消掉。
拖拽的實(shí)現(xiàn)原理:
鼠標(biāo)移動的時(shí)候,拿鼠標(biāo)移動時(shí)的坐標(biāo)位置不斷更新浮層的position。
1.鼠標(biāo)在浮層元素按下的時(shí)候,把這個(gè)浮層元素標(biāo)記為可以拖動。
2.鼠標(biāo)移動的時(shí)候,我們先檢測一下浮層元素標(biāo)記的波動是不是可以拖動。如果是的話,讓浮層跟著鼠標(biāo)一起移動,不是的話就忽略。
3.鼠標(biāo)松開的時(shí)候標(biāo)記浮層元素不可以拖動
4.js拖拽主要用到了鼠標(biāo)三個(gè)事件:mousedown、mousemove、mouseup。
mousedown:鼠標(biāo)按下
mouseup:鼠標(biāo)松開
mousemove:鼠標(biāo)移動
備注:mousedown和click的區(qū)別:鼠標(biāo)點(diǎn)擊的整個(gè)過程會發(fā)生 mousedown→mouseup→click三個(gè)事件, click在最后鼠標(biāo)松開之后才會發(fā)生。
說到這里,我們就不得不講一下鼠標(biāo)事件。
下面簡單的講一下鼠標(biāo)事件:
(1)click事件
(2)dbclick事件
(3)mousedown事件
(4)mouseup事件
(5)mouseenter事件
(6)mouseover事件
(7)mouseleaver事件
(8)mouseout事件
解釋:(鼠標(biāo)事件的解釋說明選自w3school)
(1)click事件:click事件于用戶在元素敲擊鼠標(biāo)左鍵,并在相同元素上松開左鍵時(shí)觸發(fā)。
(2) dbclick事件:當(dāng)雙擊元素時(shí),會發(fā)生 dblclick 事件。當(dāng)鼠標(biāo)指針停留在元素上方,然后按下并松開鼠標(biāo)左鍵時(shí),就會發(fā)生一次 click。在很短的時(shí)間內(nèi)發(fā)生兩次 click,即是一次 double click 事件。
實(shí)例:
當(dāng)雙擊按鈕時(shí),隱藏或顯示元素:
$(document).ready(function(){
$("button").dblclick(function(){
$("p").slideToggle();
});
});
(3)mousedown事件:當(dāng)鼠標(biāo)指針移動到元素上方,并按下鼠標(biāo)按鍵時(shí),會發(fā)生mousedown 事件。與 click 事件不同,mousedown 事件僅需要按鍵被按下,而不需要松開即可發(fā)生。
$(document).ready(function(){
$("button").mousedown(function(){
$("p").slideToggle();
});
});
(4)mouseup事件:當(dāng)在元素上放松鼠標(biāo)按鈕時(shí),會發(fā)生 mouseup 事件。
與 click 事件不同,mouseup 事件僅需要放松按鈕。當(dāng)鼠標(biāo)指針位于元素上方時(shí),放松鼠標(biāo)按鈕就會觸發(fā)該事件。
$(document).ready(function(){
$("button").mouseup(function(){
$("p").slideToggle();
});
});
(5)mouseenter事件:當(dāng)鼠標(biāo)指針穿過元素時(shí),會發(fā)生 mouseenter 事件。該事件大多數(shù)時(shí)候會與 mouseleave 事件一起使用。
注釋:與 mouseover 事件不同,只有在鼠標(biāo)指針穿過被選元素時(shí),才會觸發(fā) mouseenter 事件。如果鼠標(biāo)指針穿過任何子元素,同樣會觸發(fā) mouseover 事件。
(6)mouseover事件:當(dāng)鼠標(biāo)指針位于元素上方時(shí),會發(fā)生 mouseover 事件。該事件大多數(shù)時(shí)候會與 mouseout 事件一起使用。
注釋:與 mouseenter 事件不同,不論鼠標(biāo)指針穿過被選元素或其子元素,都會觸發(fā) mouseover 事件。只有在鼠標(biāo)指針穿過被選元素時(shí),才會觸發(fā) mouseenter 事件。
$(document).ready(function(){
$("p").mouseover(function(){
$("p").css("background-color","yellow");
});
$("p").mouseout(function(){
$("p").css("background-color","#E9E9E4");
});
});
mouseenter 與 mouseover 的不同
<html>
<head>
<script type="text/javascript" src="/jquery/jquery.js"></script>
<script type="text/javascript">
x=0;
y=0;
$(document).ready(function(){
$("div.over").mouseover(function(){
$(".over span").text(x+=1);
});
$("div.enter").mouseenter(function(){
$(".enter span").text(y+=1);
});
});
</script>
</head>
<body>
<p>不論鼠標(biāo)指針穿過被選元素或其子元素,都會觸發(fā) mouseover 事件。</p>
<p>只有在鼠標(biāo)指針穿過被選元素時(shí),才會觸發(fā) mouseenter 事件。</p>
<div class="over" style="background-color:lightgray;padding:20px;width:40%;float:left">
<h2 style="background-color:white;">被觸發(fā)的 Mouseover 事件:<span></span></h2>
</div>
<div class="enter" style="background-color:lightgray;padding:20px;width:40%;float:right">
<h2 style="background-color:white;">被觸發(fā)的 Mouseenter 事件:<span></span></h2>
</div>
</body>
</html>

(7)mouseleaver事件:當(dāng)鼠標(biāo)指針穿過元素時(shí),會發(fā)生 mouseenter 事件。
該事件大多數(shù)時(shí)候會與 mouseleave 事件一起使用。
注釋:與 mouseout 事件不同,只有在鼠標(biāo)指針離開被選元素時(shí),才會觸發(fā) mouseleave 事件。如果鼠標(biāo)指針離開任何子元素,同樣會觸發(fā) mouseout 事件。
(8)mouseout事件
當(dāng)鼠標(biāo)指針從元素上移開時(shí),發(fā)生 mouseout 事件。
該事件大多數(shù)時(shí)候會與 mouseover 事件一起使用。
注釋:與 mouseleave 事件不同,不論鼠標(biāo)指針離開被選元素還是任何子元素,都會觸發(fā) mouseout 事件。只有在鼠標(biāo)指針離開被選元素時(shí),才會觸發(fā) mouseleave 事件。
請看下面例子的演示。
<html>
<head>
<script type="text/javascript" src="/jquery/jquery.js"></script>
<script type="text/javascript">
x=0;
y=0;
$(document).ready(function(){
$("div.out").mouseout(function(){
$(".out span").text(x+=1);
});
$("div.leave").mouseleave(function(){
$(".leave span").text(y+=1);
});
});
</script>
</head>
<body>
<p>不論鼠標(biāo)指針離開被選元素還是任何子元素,都會觸發(fā) mouseout 事件。</p>
<p>只有在鼠標(biāo)指針離開被選元素時(shí),才會觸發(fā) mouseleave 事件。</p>
<div class="out" style="background-color:lightgray;padding:20px;width:40%;float:left">
<h2 style="background-color:white;">被觸發(fā)的 Mouseout 事件:<span></span></h2>
</div>
<div class="leave" style="background-color:lightgray;padding:20px;width:40%;float:right">
<h2 style="background-color:white;">被觸發(fā)的 Mouseleave 事件:<span></span></h2>
</div>
</body>
</html>

注意:本文為原創(chuàng),地址:http://www.cnblogs.com/wanghuih/p/5569438.html
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
微信小程序圖片上傳組件實(shí)現(xiàn)圖片拖拽排序
最近在寫小程序過程中遇到一個(gè)拖拽排序需求,上網(wǎng)一頓搜索未果,遂自行實(shí)現(xiàn),下面這篇文章主要給大家介紹了關(guān)于微信小程序圖片上傳組件實(shí)現(xiàn)圖片拖拽排序的相關(guān)資料,需要的朋友可以參考下2022-03-03
微信小程序?qū)崿F(xiàn)頁面跳轉(zhuǎn)傳值以及獲取值的方法分析
這篇文章主要介紹了微信小程序?qū)崿F(xiàn)頁面跳轉(zhuǎn)傳值以及獲取值的方法,結(jié)合實(shí)例形式總結(jié)分析了微信小程序頁面跳轉(zhuǎn)及傳值的常用操作技巧,需要的朋友可以參考下2017-12-12
微信小程序獲取微信運(yùn)動步數(shù)的實(shí)例代碼
本篇文章主要介紹了微信小程序微信運(yùn)動步數(shù)的實(shí)例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-07-07
從js向Action傳中文參數(shù)出現(xiàn)亂碼問題的解決方法
Action獲取jsp表單中的中文參數(shù),只要整個(gè)項(xiàng)目都采用UTF-8編碼格式都不會出現(xiàn)亂碼問題;但JSP中用到JS,并從JS向Action傳中文參數(shù),就會出現(xiàn)中文亂的現(xiàn)象2013-12-12
JS面向?qū)ο缶幊虒?shí)現(xiàn)的Tab選項(xiàng)卡案例詳解
這篇文章主要介紹了JS面向?qū)ο缶幊虒?shí)現(xiàn)的Tab選項(xiàng)卡,結(jié)合具體案例形式詳細(xì)分析了JS基于面向?qū)ο蟪绦蛟O(shè)計(jì)實(shí)現(xiàn)Tab選項(xiàng)卡的相關(guān)操作技巧,需要的朋友可以參考下2020-03-03

