【发布时间】:2019-08-01 19:02:40
【问题描述】:
我想在悬停时突出显示带有轮廓的元素。
CSS -
.hovercss-element-hover {
outline-style: solid !important;
outline-color: red !important;
outline-width: 1px !important;
outline-offset: 0 !important;
outline: 1px solid red !important;
}
Javascript -
$("body").find("*").mouseenter(function(e)
{
e.stopPropagation();
$(this).addClass("hovercss-element-hover");
});
$("body").find("*").mouseleave(function(e)
{
e.stopPropagation();
$(this).removeClass("hovercss-element-hover");
});
这适用于除 svg 之外的所有元素。 mouseenter 似乎在轮廓可见时触发,但 mouseleave 不会触发并且轮廓永远不会消失。
注意-我不想使用 css :hover 因为它不适合我的用例。
谢谢!
【问题讨论】:
-
您有 HTML 格式的 SVG 样本吗?此外,让悬停效果单独在 CSS 中工作会更有意义,性能也会更好; JS 并不是解决这个问题的最佳方案。
-
在 SVG 中你想尝试
stroke而不是轮廓 -
@RoryMcCrossan 这里是代码 - jsfiddle.net/zicsus/k7t5d4rL/8。我必须在元素悬停时执行操作,并且 :hover 将传播给父母并最终勾勒出整个页面。
标签: javascript jquery css svg mouseevent