【问题标题】:How can I "trigger" css :hover selector? [closed]如何“触发” css :hover 选择器? [关闭]
【发布时间】:2013-10-27 08:59:51
【问题描述】:

我的页面上有一个图片库。有一个图像和画廊导航:下一个上一个按钮。默认情况下,导航是隐藏的,但是当鼠标光标位于图像的右半部分时,next 按钮是可见的(:hover css 选择器)。 next 按钮导致动画,其中涉及导航按钮。问题是动画结束后图像的右半部分没有悬停。我必须执行任何鼠标操作才能使 next 按钮可见。 所以这是我的问题:有没有办法在动画结束后“触发” :hover 选择器?

注意: 我想我可以使用 jQuery $(...).hover(in, out) 解决这个问题,但我想知道是否有更基本的解决方案可以影响 :hover。毕竟,这个选择器要方便得多。

【问题讨论】:

标签: javascript css


【解决方案1】:

经过几个小时的摆弄和a little help from some friends,我能够想出比以前更好的解决方案。该方法涉及在悬停元素之前使用透明元素,该元素从width:0px; height:0px; 扩展到width:10000px; height:10000px;,并触发与图库相同的悬停事件以显示next 元素。使用这种方法,无论鼠标在页面上的哪个位置,next 都会显示,但只有在动画完成后才会显示。

Updated Demo Here

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 来确定当前窗口的高度/宽度并将其设置为该值(包括调整大小)或类似的东西来进一步优化

【讨论】:

  • 不幸的是,这不起作用。我运行了您的演示,将光标放在隐藏的“Next”上,动画结束后“Next”没有出现。我必须稍微移动鼠标才能看到它。
  • 你是对的,这只会在鼠标再次移动的情况下触发,如果你不想像你知道的那样使用javascript,我认为这是可以接受的。用户只要想导航就移动鼠标
  • 但我喜欢你制作动画的方式 :) 是跨浏览器吗?
  • 我将添加其他浏览器前缀来实现这一点。一分钟
  • 你是对的,但在图片库的情况下,用户可能希望多次单击“下一步”,并且他不希望导航在他这样做时消失
猜你喜欢
  • 2021-08-19
  • 1970-01-01
  • 2018-05-22
  • 2021-03-21
  • 2014-01-29
  • 2015-07-19
  • 2010-09-20
  • 2012-04-13
  • 1970-01-01
相关资源
最近更新 更多