在Safari中,应用:hover
样式会导致重新绘制错误。它是Safari中的错误吗?
a:hover {
text-decoration: none;
}
.outer {
width: 300px;
border: 3px solid red;
border-radius: 30px;
overflow: hidden;
}
.inner {
display: block;
width: 100%;
height: 100%;
background: yellow;
}

<div class="outer">
<a href="javascript:void 0" class="inner">hello</a>
</div>
&#13;
jsfiddle :https://jsfiddle.net/z71z5jov/
答案 0 :(得分:1)
是的,这是一个错误,我认为它足够大,以便他们很快会注意到,但是,如果没有打开欺骗,你可能想在他们的issue tracker 上打开一个问题但子>
只是在黑客攻击之前的一个注释:这不仅发生在悬停时,even triggering the repaint by js确实重现了问题,而且不仅在<a>
元素上,甚至更奇怪,它在一段时间后自行修复。
所以,现在,黑客的解决方法:
在内部元素上设置透明border
似乎可以防止错误...
a:hover {
text-decoration: none;
}
.outer {
width: 300px;
border: 3px solid red;
border-radius: 30px;
overflow: hidden;
}
.inner {
display: block;
width: 100%;
height: 100%;
background: yellow;
border: solid 1px transparent; /* Safari workaround */
margin: -1px; /* counter-act the workaround */
}
<div class="outer">
<a href="javascript:void 0" class="inner">hello</a>
</div>