wordpress页面专题,长沙官网seo分析,软文推广是什么意思,苏州建网站流程demo效果#xff1a;
鼠标移入盒子#xff0c;按下鼠标,开启移动跟随移动模式,再次按下关闭移动模式
涉及主要属性
在元素上单击鼠标按钮时输出鼠标指针的坐标#xff1a;
var x event.pageX; // 获取水平坐标
var y event.pageY; // 获取垂直坐标元素offsetL…demo效果
鼠标移入盒子按下鼠标,开启移动跟随移动模式,再次按下关闭移动模式
涉及主要属性
在元素上单击鼠标按钮时输出鼠标指针的坐标
var x event.pageX; // 获取水平坐标
var y event.pageY; // 获取垂直坐标元素offsetLeft和offsetTop属性 相当于最近一个有定位的父元素而言的位置如果父元素没有定位则相当于body的x,y位置。
还有元素的offsetXXX属性不能修改只能用来读取比如不能写元素.offsetLeft200,所以如果要使用元素.style.xxx来修改对应的原始位置 元素的offsetXXX和元素的style属性的区别 1、offsetXX属性只读style属性可以修改最主要的区别 2、offsetXX可以获取任何样式表上的样式style属性则只能获取style‘xxx’行内样式 3、还有其他的区别可以自己去搜搜嘻嘻
思路
1、鼠标移入盒子按下鼠标开始计算在盒子的相对位置relativeXrelativeY
2、监听鼠标在盒子里面的移动盒子和鼠标的位置关系始终保持不变 3、根据鼠标位置和鼠标相对于盒子的位置计算得出当前盒子位置 4、鼠标再次点击取消跟随移动
具体代码
!DOCTYPE html
html langen
headmeta charsetUTF-8meta nameviewport contentwidthdevice-width, initial-scale1.0titleDocument/titlestyle/* 清楚浏览器样式 */*{margin: 0;border: 0;}.box{width: 300px;height: 300px; background-color: brown;position: relative;left: 200px;top: 200px;}/style
/head
bodydiv classbox idbox/divscript let boxEl document.getElementById(box)let relativeX 0let relativeY 0let needMoving false// 盒子跟随鼠标移动boxEl.addEventListener(click,(event){// 盒子内部点击 修改是否跟随鼠标移动needMoving !needMoving//计算相对位置if(needMoving){boxEl.style.cursor grabboxMoveWithMouse(event,boxEl)document.addEventListener(mousemove, changeElXY)}else{relativeX 0relativeY 0boxEl.style.cursor default// 移除鼠标移动事件document.removeEventListener(mousemove, changeElXY);}})// 鼠标移入盒子 盒子跟随鼠标移动function boxMoveWithMouse(e,el){// 鼠标在文档位置let pageX e.pageXlet pageY e.pageY// 盒子在文档位置let boxOffX el.offsetLeftlet boxOffY el.offsetTop// console.log(boxOffX,boxOffX)// console.log(boxOffY,boxOffY)// 盒子在文档相对位置relativeX pageX - boxOffXrelativeY pageY - boxOffY// console.log(relativeX,relativeX)// console.log(relativeY,relativeY)}//修改元素位置function changeElXY(event){// //鼠标不在盒子里面if(relativeX0||relativeY0){return}let pageX event.pageXlet pageY event.pageY// console.log(pageX,pageX)// console.log(pageY,pageY)// 盒子位置let boxX pageX - relativeXlet boxY pageY - relativeY// console.log(boxX,boxX)// console.log(boxY,boxY)//修改盒子位置boxEl.style.left boxXpxboxEl.style.top boxY px}/script
/body
/html效果演示