分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 教程案例

JS——拖拽盒子

发布时间:2023-09-06 01:28责任编辑:彭小芳关键词:暂无标签

注意事项:

1、opacity是全部元素变透明,rgba只是背景色变透明

2、先是注册鼠标按下的事件,此时就需要记录鼠标在盒子中的坐标

3、再在鼠标按下事件中注册鼠标移动事件,此时鼠标的坐标是不断变化的,盒子的坐标就是鼠标的坐标减去鼠标在盒子的坐标

4、top.onmousemove = function (ev) {},top也可以换成document,主要考虑的是鼠标移动的太快出了盒子,改为document可以继续维持这个事件,但是其实是没有用的,因为电脑比手快

5、在top.onmousemove中必须取消文本被选中,不然拖拽的时候,如果选中了文字,会出现bug,选中的文字会首先被拖走,影响效果

<!DOCTYPE html><html lang="en"><head> ???<meta charset="UTF-8"> ???<title>Title</title> ???<style> ???????* { ???????????padding: 0; ???????????margin: 0; ???????} ???????.box { ???????????width: 200px; ???????????height: 180px; ???????????background-color: #ccc; ???????????position: absolute; ???????????top: 100px; ???????????left: 200px; ???????} ???????.top { ???????????height: 30px; ???????????text-align: center; ???????????font: 400 15px/30px "simsun"; ???????????background-color: pink; ???????????cursor: move; ???????} ???</style></head><body><div class="box"> ???<div class="top">点击此处拖拽盒子</div></div><script> ???var box = document.getElementsByTagName("div")[0]; ???var top = box.children[0]; ???//点击盒子 然后拖拽 ???//鼠标左键点击事件 鼠标移动事件 ???top.onmousedown = function (ev) { ???????ev = ev || window.event; ???????//1、鼠标的坐标 ???????var pageX = ev.pageX || scroll().left + ev.clientX; ???????var pageY = ev.pageY || scroll().top + ev.clientY; ???????//2、鼠标在盒子中的坐标 ???????var x = pageX - box.offsetLeft; ???????var y = pageY - box.offsetTop; ???????top.onmousemove = function (ev) { ???????????//3、进入onmousemove事件,鼠标左边不断更新 ???????????var pageX = ev.pageX || scroll().left + ev.clientX; ???????????var pageY = ev.pageY || scroll().top + ev.clientY; ???????????ev = ev || window.event; ???????????box.style.left = pageX - x + "px"; ???????????box.style.top = pageY - y + "px"; ???????????box.style.opacity = 0.4; ???????????//取消文本被选中 ???????????window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty(); ???????} ???} ???//解绑 ???top.onmouseup = function () { ???????top.onmousemove = null; ???????box.style.opacity = 1; ???} ???function scroll() { ???????return { ???????????"top": window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop, ???????????"left": window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft ???????}; ???}</script></body></html>

JS——拖拽盒子

原文地址:http://www.cnblogs.com/wuqiuxue/p/7978076.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved