CSS:悬停颜色错误

Posted

技术标签:

【中文标题】CSS:悬停颜色错误【英文标题】:css:hover color bug 【发布时间】:2011-08-15 15:03:38 【问题描述】:

在为网站创建菜单时,我刚刚注意到一些奇怪的事情。 Take a look at this Fiddle 说明了问题。

当您将鼠标悬停在菜单项上时,请注意最后一个字母右侧的橙色小点。为什么会发生这种情况?

我可以通过降低前景色和背景色之间的对比度来淡化“橙色效果”,但这并不能解决实际问题。这是一个错误,还是有一个聪明的方法来解决这个问题?

顺便说一句,我在 Mac 上使用 Chrome。我注意到它不会在 Firefox 中发生,所以这是与浏览器相关的问题。

更新 感谢您提供有关如何修复它的答案和建议!我接受了马塞尔的回答,因为这似乎是关于为什么会发生的最正确的答案。我不知道是不是这样,但这似乎是一个Webkit问题。如果您发现任何非 webkit 浏览器中的错误,请说出来,我会更新。

【问题讨论】:

它高 2 个像素,颜色为#3a0000,很奇怪...起初以为只是我的眼睛。我在 Windows 7 上,在 Chrome10 中看到了它,但在 FF4 中没有看到。 很确定它与浏览器中的字体平滑/抗锯齿有关,或者可能某些字体渲染超出其“盒子大小”并且没有完全包含在锚点中“一半-pixel" :) 看起来这对我来说可能是一个错误(尽管很小)。你如何发现这超出了我的范围...... 当颜色之间存在较大对比时,这一点非常明显。在 Fiddle 中,我使用黑色作为悬停颜色来说明问题,但使用任何其他颜色也很容易注意到。 是的,这似乎只是 WebKit 中的一个失效错误。把它归档在他们身上? 刚刚做了。将其发布在 Chromium 网站上。希望他们能从那里开始处理它。 【参考方案1】:

它似乎是一个subpixel rendering 神器。 Adding opacity:.9999; li a 的 CSS 规则似乎可以解决问题。

【讨论】:

【参考方案2】:

如果你将padding-right: 1px;添加到li a,橙色圆点会消失,让你保留字体。

至于它发生的原因,我唯一能想到的是 T 的几个边缘像素延伸超出了锚框的边缘。添加内边距使盒子稍微扩大了一点,但它看起来相当老套。

如果给anchor加上背景色,可以看到T的边缘在背景之外。

【讨论】:

【参考方案3】:

它是 Calibri 字体。如果您更改字体,它应该会消失。

更新: 也许它不是字体本身,但更改为不同的字体可以解决问题。

【讨论】:

你从哪里得到这个解释?我尝试了一种 Impact 字体以确保它仍然存在。注意问题的粗体部分Why is this occurring? Impact 做同样的事情。试试 Arial 什么的。 我在几种字体上尝试过,所有字体都存在。此外,更改字体也不是解决办法。 为什么我们会认为是字体而不是浏览器?你们在其他浏览器中也会发生这种情况吗? 好的。我在窗户上。我尝试了 Arial 和 Monospace。它消失了。 Firefox4 中的相同

以上是关于CSS:悬停颜色错误的主要内容,如果未能解决你的问题,请参考以下文章

CSS3 中 ul li:hover 上的背景颜色填充错误?

悬停+闪烁时的CSS +不透明度变化

css 悬停时的动画(错误的方式)

CSS 选择器错误 - 悬停时未显示子菜单

CSS3 过渡/悬停效果在 Firefox 中不起作用; Firefox 错误?

悬停图像比例抖动错误