当光标移动到div的前一个区域位置时,有人能帮我创建一个悬停在div上的平移过渡吗?
我试过:
#test {
border: 1px solid black;
width: 100px;
height: 150px;
}
#test:hover {
transform: translate(300px, 0px);
transition: all 3s ease;
}
<div id="test">
Hover me but the cursor always moves in the previous position of the div's area
</div>
正如您所看到的,当光标移动到div的上一个位置时,div总是会平移。但是我希望即使光标移动到上一个区域,平移也会停止。谢谢
说明:
4条答案
按热度按时间lokaqttq1#
制作一个 Package 器,然后在其上使用
:hover
(注意它是inline-block
):2w2cym1i2#
如图所示,我们可以使用一个保持在先前位置的方框,这个方框可以是一个实际的元素(如the
#wrapper
in InSync's answer),也可以是一个伪元素。使用伪元素的初始问题是:因为它是一个子对象,所以自然会跟随它的翻译父对象。
要使它“停留在原地”,我们需要伪元素,例如平移到相反的方向:
注意伪元素是如何被放置在其他内容的前面的,这是因为
position: absolute
,这会阻碍实际内容接收指针事件。但是我们可以使用
z-index
property将其放在其他内容之后。通过在伪元素上声明
z-index: -1
,它将被放在后面,不幸的是,它也将被放在同一个stacking context中的 any ancestor 后面:一个二个一个一个
CSS转换模块级别1规范如下:
对于其布局由CSS框模型控制的元素,
transform
属性的none
以外的任何值都将导致创建堆叠上下文。简单地说:幸运的是伪元素在需要的时候就在它应该在的地方;当
#test
在平移时。或者,我们可以通过在
#test
上声明z-index: 0
来建立一个始终存在的新堆栈上下文。注意:伪元素仍然放置在
#test
的框前面,所以它仍然会遮挡#test
的背景。由于伪元素是透明的,所以这应该不是问题。如果你想在不悬停时也应用转换,只需在
#test
上声明它(而不是在#test:hover
上):注意:不要忘记在不悬停时也转换伪元素!
db2dz4w83#
试着这样做:
hof1towb4#
onMouseOver函数回答了这个问题吗?很抱歉,但我希望它能在某些方面帮助你。
方法如下: