评论资讯 [ 总 424 则 ]
·了了 - 2024-12-18 21:32
·悄然 - 2024-12-17 15:19
·悄然 - 2024-12-15 15:12
·悄然 - 2024-12-9 12:32
·飞飞 - 2024-12-9 12:31
·小希 - 2024-12-7 11:50
·飞飞 - 2024-12-5 15:53
·飞飞 - 2024-12-3 16:42
·悄然 - 2024-12-3 16:41
·飞飞 - 2024-12-1 18:27
·悄然 - 2024-12-17 15:19
·悄然 - 2024-12-15 15:12
·悄然 - 2024-12-9 12:32
·飞飞 - 2024-12-9 12:31
·小希 - 2024-12-7 11:50
·飞飞 - 2024-12-5 15:53
·飞飞 - 2024-12-3 16:42
·悄然 - 2024-12-3 16:41
·飞飞 - 2024-12-1 18:27
友情链接
网站统计
让子元素在父元素边界内移动
移动子元素的方法:单击子元素,子元素就会跟随鼠标指针走,再单击它,解除跟屁虫属性。
实现原理:借助 e.clientX/Y 和 getBoundingClientRect() 方法,基于浏览器视口进行计算,确保子元素在父元素的边界内移动。e.clientX/Y 实时返回鼠标指针基于浏览器视口的xy坐标值(尽管 e 基于特定元素),getBoundingClientRect() 以对象的形式返回指定元素的 X、Y、left、top、bottom 和 width、height 等无单位的像素值。下面是具体代码:
<style> #mum { margin: 20px auto; width: 600px; height: 300px; border: 1px solid gray; position: relative; } #son { width: 40px; height: 40px; left: 10px; top: 10px; background: pink; position: absolute; } </style> <div id="mum"> <div id="son"></div> </div> <script> let canmove = false, rtMum = mum.getBoundingClientRect(), rtSon = son.getBoundingClientRect(); son.onclick = () => canmove = !canmove; mum.onmousemove = (e) => { if(canmove) { let Left = e.clientX - rtMum.left - rtSon.width / 2; if(Left < 0) Left = 0; if(Left > rtMum.width - rtSon.width) Left = rtMum.width - rtSon.width; let Top = e.clientY - rtMum.top - rtSon.height / 2; if(Top < 0) Top = 0; if(Top > rtMum.height - rtSon.height) Top = rtMum.height - rtSon.height; son.style.left = Left + 'px'; son.style.top = Top + 'px'; } }; </script>
前一篇: lrc歌词同步实现原理展示
下一篇: CSS :文本对齐演示
发表评论:
评论列表 [1条]
#1 | 飞飞 于 2023-7-29 08:18 发布: 这个好玩,有指挥棒。。。