分享web开发知识

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

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

js拖拽阴影

发布时间:2023-09-06 02:00责任编辑:顾先生关键词:js

css如下

#box{ width: 200px; height: 200px; position: absolute;background-color: red;}.border_box{ ?position: absolute; width: 200px; height: 200px; ?opacity: 0.5; background-color: red;}

html如下

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

javascript如下

var oBox=document.getElementById(‘box‘); ???oBox.onmousedown=function(ev){ ???????var oEvent=ev || event; ???????var disX=oEvent.clientX-oBox.offsetLeft; ???????var disY=oEvent.clientY-oBox.offsetTop; ???????//鼠标位置减去box位置 ???????????????var left=0; ???????var top=0; ???????var oBorderBox=document.createElement(‘div‘); ???????oBorderBox.className="border_box"; ???????oBorderBox.style.left=oBox.offsetLeft+‘px‘;; ???????oBorderBox.style.top=oBox.offsetTop+‘px‘; ???????document.body.appendChild(oBorderBox); ???????document.onmousemove=function(ev){ //oBox改成document是怕速度拖拽速度快,鼠标偏离了box ???????????var oEvent=ev || event; ???????????????????????left = oEvent.clientX - disX; ???????????top = oEvent.clientY - disY; ???????????oBorderBox.style.left=left+‘px‘; ???????????oBorderBox.style.top=top+‘px‘; ???????} ???????document.onmouseup=function(){ //oBox改成document是防止鼠标拖拽出可视区发生不了oBox.onmouseup事件 ???????????????????if( !collision( oBorderBox,oBox ) ){ ???????????????oBox.style.left = left + "px"; ???????????????????oBox.style.top = top + "px"; ???????????} ???????????????????????document.onmousemove=null; ???????????document.onmouseup=null; ???????????document.body.removeChild(oBorderBox); ???????} ???????return false; //解决FF再次拖拽出现两个oBox的bug ???} ???????????????/* ???????????obj1:拖拽的元素 ???????????obj2:被碰撞的元素 ???????*/ ???????function collision(obj1,obj2){ ???????????var obj1L = obj1.offsetLeft; ???????????var obj1LW = obj1L + obj1.offsetWidth; ???????????var obj1T = obj1.offsetTop; ???????????var obj1TH = obj1T + obj1.offsetHeight; ???????????var obj2L = obj2.offsetLeft; ???????????var obj2LW = obj2L + obj2.offsetWidth; ???????????var obj2T = obj2.offsetTop; ???????????var obj2TH = obj2T + obj2.offsetHeight; ???????????if( obj1LW < obj2L || obj1L > obj2LW || obj1TH < obj2T || obj1T > obj2TH){ ???????????????return false; ???????????} ???????????return true; ???????}

js拖拽阴影

原文地址:https://www.cnblogs.com/zard23/p/9197587.html

知识推荐

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