是否应该在带有或不带有 :hover 伪类的规则中设置游标属性?

Posted

技术标签:

【中文标题】是否应该在带有或不带有 :hover 伪类的规则中设置游标属性?【英文标题】:Should the cursor property be set in a rule with or without the :hover pseudo-class? 【发布时间】:2011-07-17 22:42:54 【问题描述】:

假设你或我编写了一个 html 元素...

<a id='hydrogen' href='#'>H</a>

...还有一些:hover CSS...

#hydrogen:hover 
  background:red;

...现在我们想在悬停时放置一个花哨的手形光标。有两种选择:

应用于无状态元素:

#hydrogen  
  cursor:pointer;

或者,应用于 :hover 状态。

#hydrogen:hover  
  color:red;
  cursor:pointer;

我的问题:有没有任何理由为什么一种方法比另一种方法更好?

...还是番茄,番茄?

【问题讨论】:

【参考方案1】:

兼容性:IE6 及以下版本只能识别a 元素上的:hover 伪类。

【讨论】:

【参考方案2】:

它们都是一样的,只要你总是想要pointer,不用担心悬停。

:hover 伪类will inherit cursor: pointer from its non hovered state。

我宁愿把它放在普通选择器上,而不是:hover

【讨论】:

非悬停状态不是由缺少:hover 伪类来表示,而是由:not(:hover) 明确表示。这就是问题称之为“无状态”的原因,也是应用该样式的原因。【参考方案3】:

两种方式都一样好。但是,如果元素不是锚点,我会将它放在 id 本身上,因为 :hover 不适用于 ie6 或更低版本。如果你不关心旧版本的 IE。那么这两种方式都是正确的。

【讨论】:

以上是关于是否应该在带有或不带有 :hover 伪类的规则中设置游标属性?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以强制忽略 iPhone/iPad 用户的 :hover 伪类?

CSS:使用带有 css 伪类的图像精灵 :before 和 :after

带有 `:hover` 和多个相邻兄弟选择器的 Webkit 错误

如何在 firebug 和 chrome 调试器中看到附加到 :hover 和其他伪类的样式

带有或不带有 Twitter Bootstrap 的嵌套侧边栏

a标签4个伪类的顺序排列