你将不得不看看这个小提琴
我遇到问题的元素 ,hoverHelper
旨在显示next
无论身体的哪个部分悬停但仅在动画完成后
当动画结束时,浮动(将其从元素流中取出)透明覆盖层hoverHelper
被赋予了一个荒谬的高宽度和高度来覆盖整个页面,以便应用hover
事件来显示元素next
。
本质上,我的问题是,当浮动元素悬停时,它会注册悬停并按应有的方式行事,但其他元素会受到负面影响。由于某种原因,浏览器使所有后续元素将其视为非浮动元素,即使它从未丢失float:left
。这意味着锚点和其他后续元素被向下推了数千个像素,这是不可接受的
查看此行为的最简单方法是检查元素并强制:hover
打开actualHover
。然后您将看到它如何将浮动元素视为hoverHelper
非浮动元素
以下是我的 HTML 和相关的 CSS
<div id='hoverHelper'></div>
<div id='actualHover'></div>
<a href="#" id='next'>Next</a>
<div class='other'></div>
body { overflow:hidden; max-width:200px; max-height:200px;}
#hoverHelper {
width:0px;
height:0px;
z-index:1;
position:relative;
float:left;
margin-top:-1000px;
margin-left:-1000px;
animation: hhAnimation .001s 3s forwards;
}
#actualHover {
width:50px;
height:50px;
background:teal;
animation: yourAnimation 3s linear forwards;
}
#next {
z-index:2;
display: none;
}
#actualHover:hover ~ #next, #hoverHelper:hover ~ #next, #next:hover {
display:inline-block;
}
另外,我最初是position:absolute
在叠加层上使用的,但这阻止了next
按钮被点击,这也是不可接受的
我意识到我正在做的事情是非常规的,但对我来说这是完全有道理的。关于发生了什么的任何见解?
笔记:
这个问题是通过替代解决方案解决的,而不是通过发现的问题解决的。我们仍然不知道为什么浮动元素具有它的行为