Javascript拖动效果函数

本文介绍了一种拖动效果函数的实现方式,该函数能够使HTML元素具备拖拽功能,并支持随窗口滚动调整位置。通过简单的JavaScript代码,实现了对元素位置的精确控制。

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

<html>
<head><title>拖动效果函数演示 by Longbill.cn</title>
<style>
body 
{
    font
-size:12px;
    color
:#333333;
    border : 0px solid blue;
}
div
{
    position 
: absolute;
    background
-color : #c3d9ff;
    margin : 0px;
    padding 
: 5px;
    border 
: 0px;
    width 
: 100px;
    height
:100px;
}
</style>
</head>
<body>
<script>
function drag(o,s)
{
    
if (typeof o == "string") o = document.getElementById(o);
    o
.orig_x = parseInt(o.style.left) - document.body.scrollLeft;
    o
.orig_y = parseInt(o.style.top) - document.body.scrollTop;
    o
.orig_index = o.style.zIndex;
        
    o
.onmousedown = function(a)
    {
        this
.style.cursor = "move";
        this
.style.zIndex = 10000;
        
var d=document;
        
if(!a)a=window.event;
        
var x = a.clientX+d.body.scrollLeft-o.offsetLeft;
        
var y = a.clientY+d.body.scrollTop-o.offsetTop;
        
//author: www.longbill.cn
        d.ondragstart = "return false;"
        d
.onselectstart = "return false;"
        d
.onselect = "document.selection.empty();"
                
        
if(o.setCapture)
            o
.setCapture();
        
else if(window.captureEvents)
            window
.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);

        d
.onmousemove = function(a)
        {
            
if(!a)a=window.event;
            o
.style.left = a.clientX+document.body.scrollLeft-x;
            o
.style.top = a.clientY+document.body.scrollTop-y;
            o
.orig_x = parseInt(o.style.left) - document.body.scrollLeft;
            o
.orig_y = parseInt(o.style.top) - document.body.scrollTop;
        }

        d
.onmouseup = function()
        {
            
if(o.releaseCapture)
                o
.releaseCapture();
            
else if(window.captureEvents)
                window
.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);
            d
.onmousemove = null;
            d
.onmouseup = null;
            d
.ondragstart = null;
            d
.onselectstart = null;
            d
.onselect = null;
            o
.style.cursor = "normal";
            o
.style.zIndex = o.orig_index;
        }
    }
    
    
if (s)
    {
        
var orig_scroll = window.onscroll?window.onscroll:function (){};
        window
.onscroll = function ()
        {
            orig_scroll();
            o
.style.left = o.orig_x + document.body.scrollLeft;
            o
.style.top = o.orig_y + document.body.scrollTop;
        }
    }
}
</script>

<div id="div1" style="left:10px;top:10px;">div1:我可以被拖动</div>
<div id="div2" style="left:120px;top:10px;background-color : #f3d9ff">div2:来拖我呀</div>
<div id="div3" style="left:230px;top:10px;background-color : #c3ffff">div3:我随便你拖</div>
<div id="div4" style="left:10px;top:120px;background-color : #c3d944">div4:我可以随窗口滑动,把我拖到最下面,然后滚动网页看看</div>
<div id="div5" style="left:120px;top:120px;background-color : #f3d944">div5
</div>
<div id="div6" style="left:230px;top:120px;background-color : #e3f944;width:200px;">参数说明:<br/>
drag(obj [
,scroll]);<br/>
obj
:对象的id或对象本身;<br/>
scroll(可选)
:对象是否随窗口拖动而滑动,默认为否<br/>
鼠标右键查看源代码
</div>


<script>
drag(
"div1");
drag(
"div2");
drag(
"div3");
drag(
"div4",1);
drag(
"div5",1);
drag(
"div6",1);


</script>

</body>
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值