JavaScript可拖动DIV

本文介绍了一种使用JavaScript实现网页中DIV元素拖拽效果的方法。通过onmousedown等事件监听及鼠标移动事件处理,实现了DIV元素的自由拖动,并兼容不同浏览器环境。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JavaScript可拖动DIV      
<style>
.fugai
{
    position
:absolute;
    z-index
:100;
    left
:0px;
    top
:0px;
    filter
:alpha(opacity=10); 
    background-color
:red;
}

.choose
{
    position
:absolute;
    z-index
:101;
    width
:300px;
    height
:70px;
    background-color
:blue;
}

.move
{
    width
:300px;
    height
:20px;
    cursor
:hand;
    background-color
:green;
    border
:solid black;
}

</style>
<body>
<href="javascript:void(null);" onclick="show();" id="address">选择地点</a>
<div id="fugai" class="fugai" style="display:none;">
</div>
<div id="ch" style="display:none;left:50px;top:20px;" class="choose">
    
<div class="move" onmousedown="move(this.parentNode,event);";>拖动我</div><br>
    
<href="javascript:void(null);" onclick="choose('北京');">北京</a>&nbsp;&nbsp;
    
<href="javascript:void(null);" onclick="choose('南京');">南京</a>&nbsp;&nbsp;
</div>
</body>
<script>
    
function show(){
        document.getElementById(
"fugai").style.display="";
        document.getElementById(
"fugai").style.width=document.body.clientWidth;
        document.getElementById(
"fugai").style.height=document.body.clientHeight;
        document.getElementById(
"ch").style.display="";
        document.getElementById(
"ch").style.left="50px";
        document.getElementById(
"ch").style.top="20px";
    }

    
function choose(value){
        document.getElementById(
"fugai").style.display="none";
        document.getElementById(
"ch").style.display="none";
        document.getElementById(
"address").firstChild.data=value;
    }

    
function move(element,event){
        
var x=parseInt(element.style.left);
        
var y=parseInt(element.style.top);

        
var deltaX=event.clientX-x;
        
var deltaY=event.clientY-y;
        
//添加临时事件
        if(document.addEventListener){//2级DOM
            document.addEventListener("mousemove",moveHandler,true);
            document.addEventListener(
"mouseup",upHandler,true);
        }
else if(document.attachEvent){//IE5+
            document.attachEvent("onmousemove",moveHandler);
            document.attachEvent(
"onmouseup",upHandler);
        }
else{//IE4
            var oldonmousemove=document.onmousemove;
            
var oldonmouseup=document.onmouseup;
            document.onmousemove
=moveHandler;
            document.onmouseup
=upHandler;
        }

        
//我们处理该事件,不让其他元素见到它
        if(event.preventDefault){//2级DOM
            event.preventDefault();
        }
else{//IE
            event.returnValue=false;
        }


        
//鼠标移动事件
        function moveHandler(e){
            
if(!e){//IE
                e=window.event;
            }


            element.style.left
=(e.clientX-deltaX)+"px";
            element.style.top
=(e.clientY-deltaY)+"px";
            
if(e.stopPropagation){//2级DOM
                e.stopPropagation();
            }
else{//IE
                e.cancelBubble=true;
            }

        }

        
//鼠标按键弹起
        function upHandler(e){
            
if(!e){
                e
=window.event;
            }

            
if(document.removeEventListener){//2级DOM
                document.removeEventListener("mouseup",upHandler,true);
                document.removeEventListener(
"mousemove",moveHandler,true);
            }
else if(document.detachEvent){//IE5+
                document.detachEvent("onmouseup",upHandler);
                document.detachEvent(
"onmousemove",moveHandler);
            }
else{//IE4
                document.onmouseup=oldonmouseup;
                document.onmousemove
=oldonmousemove;
            }

            
if(e.stopPropagation){//2级DOM
                e.stopPropagation();
            }
else{//IE
                e.cancelBubble=true;
            }

        }

    }

</script>
  
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值