使用JavaScript写拖拽案例

这篇博客通过实例展示了如何使用JavaScript编写一个简单的拖拽功能。首先,通过CSS设置了一个可拖动的div元素,然后在HTML中创建了这个div。接着,利用JavaScript的onmousedown、onmousemove和onmouseup事件处理函数,实现了当鼠标按下、移动和松开时,div元素跟随鼠标移动并限制在浏览器视口内的效果。

// 设置HTML标签中的css样式。

//用全局选择器(*)把HTML中的默认样式去掉。

//设置一个拖拽用的div盒子。使用绝对定位。

css代码:

<style type="text/css">
    *{
        margin:0;
        padding:0;
        list-style: none;
    }
    #box{
        width:100px;
        height:100px;
        background-color: hotpink;
        position:absolute;
        cursor: move;
    }
</style>

HTML代码:

//HTML中创建一个需要被拖拽的盒子

<body>
    <div id="box"></div>
</body>

JS代码

<script type="text/javascript">
    box.onmousedown = function(e){    //onmousedown 鼠标按下时的事件。因为HTML中,box已被设置为ID名,所以这里可以直接调用。

//function中的"e"是要用鼠标和键盘事件时所需参数。
        var e = e || event;   //获取event对象
        var X = e.clientX - box.offsetLeft;    // 计算鼠标按下的时候到盒子的边界左边界距离;
        var Y = e.clientY - box.offsetTop;   // 计算鼠标按下的时候到盒子的边界上边界距离;
    box.onmousemove = function(e){   //onmousemove 鼠标移动时的事件。
            var e = e || event;
            var moveX = e.clientX - X;  // 计算盒子被移动后到浏览器左边界的距离;
            var moveY = e.clientY - Y;  // 计算盒子被移动后到浏览器上边界的距离;
            var winX = document.documentElement.clientWidth;  //计算文档可视宽的X轴距离
            var winY = document.documentElement.clientHeight; //计算文档可视高的Y轴距离
            var maxW = winX - box.offsetWidth;  //计算文档的最大宽度
            var maxH = winY - box.offsetHeight; //计算文档的最大高度
            if(moveX < 0){   //进行判断,如果移动的X轴距离小于0.
                moveX = 0;   //则X轴的距离等于0。
            }
            if(moveY < 0){   //进行判断,如果移动的Y轴距离小于0。
                moveY = 0    //则Y轴的距离等于0。
            }
            if(moveX > maxW){  //进行判断,如果鼠标移动的//则X轴的距离等于0。距离大于文档的最大可视宽度。
                moveX = maxW  //则让鼠标的移动//则X轴的距离等于0。距离等于文档文档的最大可视宽度。
            }
            if(moveY > maxH){   //进行判断,如果鼠标移动的//则Y轴的距离等于0。距离大于文档的最大可视宽度。
                moveY = maxH    //则让鼠标的移动//则Y轴的距离等于0。距离等于文档文档的最大可视宽度。
            }
                box.style.left = moveX + "px";  //盒子被移动后左边界的距离;
                box.style.top = moveY + "px";  //盒子被移动后上边界的距离;
        }
    }
    document.onmouseup = function(){  //onmouseup鼠标按键被松开时的事件
        document.onmousemove = null ;  //清空被移动的函数;
    }


</script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值