经过几个小时的摆弄和一些朋友的帮助,我能够想出一个比以前更好的解决方案。该方法涉及在悬停元素之前使用透明元素,该元素从width:0px; height:0px;
to扩展width:10000px; height:10000px;
并触发与画廊相同的悬停事件以显示next
元素。使用这种方法,next
无论鼠标在页面上的哪个位置都会显示,但只有在动画完成后才会显示。
在此处更新演示
body { overflow:hidden; }
#hoverHelper {
width:0px;
height:0px;
z-index:1;
position:absolute;
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;
position:relative;
display: none;
}
#actualHover:hover ~ #next, #hoverHelper:hover ~ #next, #next:hover {
display:inline-block;
}
@keyframes yourAnimation {
0% { background:teal; }
100% { background: red; }
}
@keyframes hhAnimation {
0% { width:0px;
height:0px;
}
100% { width:10000px;
height:10000px;
}
}
和 HTML(只要确保#next
在其他人之后)
<div id='actualHover'></div>
<div id='hoverHelper'></div>
<a id='next'>Next</a>
我还添加了一些 javascript 以允许它重复并向您展示如何访问它
解决方案应该是完全跨浏览器的。关于它的唯一不利之处是overflow:hidden
可以通过使用 javascript 来确定当前窗口高度/宽度并将其设置为该值(包括调整大小)或类似的东西来进一步优化它