如何在CSS中映射鼠标位置,实现通过鼠标移动控制页面元素的效果
时间:2023-04-02 22:06:39
HTML
映射鼠标位置或者实现拖动效果,我们可以在JavaScript中实现。但实际上,在CSS中有更简洁的方法,我们仍然可以在不使用JavaScript的情况下实现相同的功能!仅使用CSS就可以模仿鼠标的“单击和拖动”效果。让我们看看如何获??取用户的鼠标位置并将其映射到CSS自定义属性:--positionX和--positionY。下面是具体的实现步骤。初始化我们的第一个演示将使用--positionX和--positionY自定义属性来设置元素的宽度和高度。
*,*::before,*::after{填充:0;保证金:0自动;box-sizing:border-box;}body{背景色:黑色;高度:100vh;}.content{--positionX:0;--位置Y:0;位置:绝对;顶部:0;右:0;底部:0;左:0;显示:弹性;证明内容:居中;对齐项目:中心;}.square{宽度:100px;高度:100px;background:white;}这是我们的初始状态。我们这里有一个名为.content的容器
,它的宽度和高度填充了body,它是项目的主要内容。类为.square的
是本例中我们要用鼠标控制的元素。我们还向内容添加了两个自定义属性。我们将使用鼠标位置来设置这些属性的值,然后使用它们来设置.square元素的宽度和高度。一旦我们为鼠标位置绘制了自定义属性,我们就可以使用它们来做我们想做的几乎所有事情。比如我们可以用它们来设置绝对定位元素的top/left,控制transform属性,设置background-position,调整颜色,甚至设置伪元素的内容等等。我们会看到其中一些演示和文章末尾相应Codepen项目的链接。网格目标是在屏幕上创建一个不可见的网格,并使用:hover伪类将每个“单元格”映射到我们自定义属性的一组值。此时--positionX的值会在鼠标光标移到屏幕右侧时变高:鼠标移到屏幕左侧时变低。--positionY也是一样:当光标移到顶部时,该值会变低,当光标移到底部时,该值会变高。关于我的网格大小和网格分区的一些注意事项:我们实际上可以制作我们可以达到的任何网格大小。它越大,自定义属性值就越准确。但这也意味着我们会有更多的网格瓦片间隔,太多的网格瓦片可能会导致性能问题,根据实际项目调整网格大小以保持适当的平衡非常重要。现在,假设我们需要一个10x10的网格,所以我们的容器中总共有100个网格块。(实际开发中可以使用pug等语法快速创建表格,例子中100个空格全部用div表示)
/div>