【发布时间】:2015-01-22 16:07:50
【问题描述】:
http://codepen.io/anon/pen/wBaGgW
我目前有一个项目列表,然后在右侧有一个按钮:
工具提示必须出现在focus 上,并且工具提示必须出现在hover 上——这可行,但问题是当一个项目被聚焦时(点击它之后)——以下项目不能通过鼠标访问(因为前面的重点是项目!):
当鼠标悬停在工具提示本身上时,工具提示必须消失,但焦点迫使它停留。
测试用例在这里:http://codepen.io/anon/pen/wBaGgW
任何人都可以提供没有任何 javascript 的解决方案吗?此外,html 标记不能更改太多。对 HTML 的最小更改是可以的。只是想防止太多,因为我很可能需要补偿应用程序的其他部分以适应 html 更改。
这里显示了工具提示:
button:hover>.tooltip,
button:focus>.tooltip,
button:active>.tooltip {
visibility: visible;
opacity: 1;
}
我可以通过以下方式隐藏工具提示:
button:focus>.tooltip:hover {
visibility: hidden;
opacity: 0;
}
但是当鼠标在工具提示出现的区域内移动时,这会导致疯狂的闪烁效果。
牢记限制:
- 没有 JavaScript
- 与 IE8+ 的兼容性(请注意,工具提示 css 来自我们的全局模块,我无法直接更改它,我正在开发一个单独的模块,我当然可以覆盖它,因为我的 css 加载在全局 css 之后)
- 工具提示必须出现在下方(很遗憾)
【问题讨论】:
-
让它悬停在对象的右侧怎么样?
-
@LOTUSMS 我不能这样做,因为它违背了业务需求。它还增加了复杂性(响应式网络、工具提示在屏幕外不可见等)
-
pointer-eventscss 属性也可以让点击通过工具提示,但 IE8 和 IE9 不支持。 -
没有充分的理由拒绝我的问题,因为它太具有挑战性或限制性。我提供了 codepen、代码和整个场景。我花了相当长的时间来提出这个问题。
-
我有一个半修复。如果一个按钮被聚焦,并且用户点击了工具提示,它就会被关闭。如果用户没有任何焦点,它也会在悬停时被解除。 codepen.io/anon/pen/azONYP