原生js實(shí)現(xiàn)可拖拽效果
效果圖:

代碼如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>可拖拽特效</title>
<style type="text/css">
*{margin: 0;padding: 0;}
.header{width:100%;height:30px;background:#036663;line-height:30px;color:#fff;text-indent:30px;}
#demo{width:400px;height:300px;border:solid 5px #eee;box-shadow:0 0 5px #666;position:absolute;top:40%;left:40%;}
#innerht{height:25px;background:#036663;border-bottom:solid 1px #369;color:#fff;text-indent:10px;cursor:move;}
#close{float:right;cursor:pointer;}
</style>
</head>
<body>
<div class="header">注冊(cè)信息</div>
<div id="demo">
<div id="innerht">注冊(cè)信息(可拖拽)<span id="close">【關(guān)閉】</span></div>
<div class="write"></div>
</div>
</body>
<script type="text/javascript">
(function(window){
function $(id){
return document.getElementById(id);
};
// 獲取對(duì)象
var innerht = $("innerht"),demo = $("demo"),close = $("close");
// 給innerht綁定鼠標(biāo)事件
innerht.onmousedown = function(event){
// 解決event兼容問(wèn)題
var event = event || window.event;
// 獲取鼠標(biāo)在頁(yè)面上坐標(biāo)
var pageX = event.pageX || event.clientX + document.documentElement.scrollLeft;
var pageY = event.pageY || event.clientY + document.documentElement.scrollTop;
// 獲取鼠標(biāo)在innerht內(nèi)部的坐標(biāo)
var innerX = pageX - demo.offsetLeft;
var innerY = pageY - demo.offsetTop;
// 給document綁定鼠標(biāo)移動(dòng)事件,防止鼠標(biāo)快速滑動(dòng)時(shí)滑出innerht
document.onmousemove = function(event){
var event = event || window.event;
// 獲取鼠標(biāo)移動(dòng)時(shí)的坐標(biāo)
var moveX = event.pageX || event.clientX + document.documentElement.scrollLeft;
var moveY = event.pageY || event.clientY + document.documentElement.scrollTop;
// 鼠標(biāo)移動(dòng)時(shí)demo的位置坐標(biāo)
var demoX = moveX - innerX ;
var demoY = moveY - innerY ;
// 鼠標(biāo)移動(dòng)時(shí)demo的位置坐標(biāo)
demo.style.left = demoX + "px";
demo.style.top = demoY + "px";
//清除選中文字
window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty();
}
};
// 鼠標(biāo)抬起清除拖拽效果
document.onmouseup = function(){
document.onmousemove = null ;
};
// 點(diǎn)擊關(guān)閉按鈕關(guān)閉跟隨框
close.onclick = function(){
this.parentNode.parentNode.style.display = "none";
};
})(window)
</script>
</html>
以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,同時(shí)也希望多多支持腳本之家!
相關(guān)文章
js+html5實(shí)現(xiàn)canvas繪制橢圓形圖案的方法
這篇文章主要介紹了js+html5實(shí)現(xiàn)canvas繪制橢圓形圖案的方法,涉及html5圖形繪制的基礎(chǔ)技巧,感興趣的朋友可以參考一下2016-05-05
javascript實(shí)現(xiàn)iframe框架延時(shí)加載的方法
這篇文章主要介紹了javascript實(shí)現(xiàn)iframe框架延時(shí)加載的方法,可基于setTimeout實(shí)現(xiàn)這一功能,是非常實(shí)用的技巧,需要的朋友可以參考下2014-10-10
淺談redux, koa, express 中間件實(shí)現(xiàn)對(duì)比解析
這篇文章主要介紹了淺談redux, koa, express 中間件實(shí)現(xiàn)對(duì)比解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05
es6函數(shù)name屬性功能與用法實(shí)例分析
這篇文章主要介紹了es6函數(shù)name屬性,結(jié)合實(shí)例形式分析了es6函數(shù)name屬性基本原理、功能、用法及操作注意事項(xiàng),需要的朋友可以參考下2020-04-04
bootstrap-wysiwyg結(jié)合ajax實(shí)現(xiàn)圖片上傳實(shí)時(shí)刷新功能
這篇文章主要為大家詳細(xì)介紹了bootstrap-wysiwyg結(jié)合ajax實(shí)現(xiàn)圖片上傳實(shí)時(shí)刷新功能,感興趣的小伙伴們可以參考一下2016-05-05
JavaScript調(diào)用Activex控件的事件的實(shí)現(xiàn)方法
最近在搞一個(gè)客戶端調(diào)用activex控件的開發(fā)。一些實(shí)現(xiàn)方法小結(jié),需要的朋友可以參考下。2010-04-04
微信小程序 多行文本顯示...+顯示更多按鈕和收起更多按鈕功能
這篇文章主要介紹了微信小程序多行文本顯示...+顯示更多按鈕和收起更多按鈕,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09
使用JS實(shí)現(xiàn)動(dòng)態(tài)時(shí)鐘
這篇文章主要為大家詳細(xì)介紹了使用JS實(shí)現(xiàn)動(dòng)態(tài)時(shí)鐘,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-03-03

