原生js實現(xiàn)可拖拽效果
更新時間:2017年02月28日 11:45:43 作者:chang紅達
本文主要介紹了原生js實現(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">注冊信息</div>
<div id="demo">
<div id="innerht">注冊信息(可拖拽)<span id="close">【關閉】</span></div>
<div class="write"></div>
</div>
</body>
<script type="text/javascript">
(function(window){
function $(id){
return document.getElementById(id);
};
// 獲取對象
var innerht = $("innerht"),demo = $("demo"),close = $("close");
// 給innerht綁定鼠標事件
innerht.onmousedown = function(event){
// 解決event兼容問題
var event = event || window.event;
// 獲取鼠標在頁面上坐標
var pageX = event.pageX || event.clientX + document.documentElement.scrollLeft;
var pageY = event.pageY || event.clientY + document.documentElement.scrollTop;
// 獲取鼠標在innerht內部的坐標
var innerX = pageX - demo.offsetLeft;
var innerY = pageY - demo.offsetTop;
// 給document綁定鼠標移動事件,防止鼠標快速滑動時滑出innerht
document.onmousemove = function(event){
var event = event || window.event;
// 獲取鼠標移動時的坐標
var moveX = event.pageX || event.clientX + document.documentElement.scrollLeft;
var moveY = event.pageY || event.clientY + document.documentElement.scrollTop;
// 鼠標移動時demo的位置坐標
var demoX = moveX - innerX ;
var demoY = moveY - innerY ;
// 鼠標移動時demo的位置坐標
demo.style.left = demoX + "px";
demo.style.top = demoY + "px";
//清除選中文字
window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty();
}
};
// 鼠標抬起清除拖拽效果
document.onmouseup = function(){
document.onmousemove = null ;
};
// 點擊關閉按鈕關閉跟隨框
close.onclick = function(){
this.parentNode.parentNode.style.display = "none";
};
})(window)
</script>
</html>
以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!
相關文章
layui問題之渲染數(shù)據(jù)表格時,僅出現(xiàn)10條數(shù)據(jù)的解決方法
今天小編就為大家分享一篇layui問題之渲染數(shù)據(jù)表格時,僅出現(xiàn)10條數(shù)據(jù)的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09
深入理解JavaScript系列(14) 作用域鏈介紹(Scope Chain)
在第12章關于變量對象的描述中,我們已經知道一個執(zhí)行上下文 的數(shù)據(jù)(變量、函數(shù)聲明和函數(shù)的形參)作為屬性存儲在變量對象中2012-04-04

