Css 应该';光标';属性不能在';中定义;。类别';或';。类别:悬停';?

Css 应该';光标';属性不能在';中定义;。类别';或';。类别:悬停';?,css,css-selectors,Css,Css Selectors,由于以下两项具有相同的效果: .class { cursor:pointer; } .class:hover { cursor:pointer; } 关于最佳实践,您应该使用哪一种以及为什么使用?这两个选择器的目的截然不同,尽管事实是——至少在实践中——它们似乎完成了相同的任务 我倾向于说,使用:hover(至少在非触摸屏设备上,见下文)定义悬停状态是最佳实践,因为: 它使查找和理解样式在更大的CSS块中更为明显 它使用了一个专门指定的选择器(稍后可能会在规范中扩展,那么您的

由于以下两项具有相同的效果:

.class {
    cursor:pointer;
}

.class:hover {
    cursor:pointer;
}
关于最佳实践,您应该使用哪一种以及为什么使用?

这两个选择器的目的截然不同,尽管事实是——至少在实践中——它们似乎完成了相同的任务

我倾向于说,使用
:hover
(至少在非触摸屏设备上,见下文)定义悬停状态是最佳实践,因为:

  • 它使查找和理解样式在更大的CSS块中更为明显

  • 它使用了一个专门指定的选择器(稍后可能会在规范中扩展,那么您的功能会发生什么变化?)

  • 如果以后添加到
    .class
    的默认样式中,您的状态将被适当地清楚地分隔开来

  • 如果您将CSS的责任移交给另一个人,会发生什么情况?在正确的选择器下定义了
    :hover
    特定功能,使理解代码变得容易得多

  • 如果你有更复杂的CSS,你可能会在其他地方使用
    :hover
    ,因此为了保持一致性,你应该使用它

  • 这两个选择器代表相同的元素,但处于不同的状态,从语义上讲,您应该使用
    :hover

  • 但请稍等。您可能会注意到,如果将
    元素的光标样式设置为
    默认值
    ,则通常的手形图标不会出现在悬停上……这表明之前有证据表明未对
    进行专门的样式设置:悬停状态()

    总之,在某些情况下,没有打破游戏规则的理由不简单地使用
    .class
    ——它肯定会使用更少的字节,如果你有一个相当简单的设置,那么只有你自己在开发中……那么为什么不呢,但是要小心,如果您想要遵守严格的规则并更好地支持正在进行的开发,那么最好避免使用它

    此外,请不要忘记触摸屏设备

    在触摸屏上:悬停有问题或不可能。悬停 pseudo类从不匹配,或者在之后的一小会儿匹配 触摸一个元素。由于触摸屏设备非常常见,因此 对于web开发人员来说,重要的是不要仅在 将鼠标悬停在上面,因为此内容对于此类用户来说是隐藏的 设备


    因此,根据您的要求,最好不要使用
    :hover
    ,因为如果您的CSS中有一个触摸屏设备,它可能会依赖于不受支持的或片状的功能进行烘焙。

    IE6和更低版本仅识别
    a
    标记上的
    :hover
    伪类<代码>:将
    悬停在
    div
    上,这些浏览器将不会解释其他标记

    如果考虑兼容性,请使用
    :hover
    ,否则我认为没有区别

    首先,对于你的“相同效果”,这取决于你应用于什么。 因为某些元素在默认情况下具有“cursor:pointer”属性,例如

    锚定标签

    而以下元素默认为“cursor:default”(无指针)

    输入类型:提交

    以stackoverflow.com“发布您的答案”为例,它是一个默认带有“游标:默认值”的提交按钮,用户的感知可能认为一个可点击的对象正在显示“指针”,因此它的样式为“游标:指针”

    以我的经验快速得出结论,没有最佳实践,而是取决于目的。对于可单击对象,但默认情况下不显示为“指针”,您可以将其设置为“指针”样式。 当您禁用某项功能时(例如,当您激活某项功能然后启用锚定链接时),您可以使用

    /* the a is only for illustrative purpose */
    a.disabled{
       cursor: default;
    }
    
    a.enabled{
       cursor: pointer;
    }
    

    因为光标是一个视觉呈现的问题,与用户体验设计(UX)相关。

    这是一个好问题。我一直在想,谷歌似乎没有显示任何重复的东西:关于这个问题是基于意见的接近票数,是的,现在是,但不应该是,应该有关于何时使用cursorI的正式文件。没有人知道这是“主要基于意见的”,而答案实际上说是这样的。正如@George所指出的,我投票赞成这是一个复制品。这不是回答问题,而是告诉我们为什么要使用
    游标
    属性。但问题是,“什么时候使用它”?这只是我对何时使用它的经验。问题是什么?问题是“是否使用:hover psuedo类”我明白你的意思,因为我只是跟着他的标题“CSS游标属性,何时使用它”。这就是我想要回答的。谢谢你的意见。大多数基于触摸的设备都不会使用指针,这会让你的最后一点基本上是“这对触摸设备来说并不重要”,但我真的很想知道在同时具有触摸和指针界面的设备上会发生什么,比如Windows平板电脑。我手边没有,但如果点击一个元素会将光标移动到该元素并触发它的
    :hover
    ,或者如果它检测到光标是通过触摸手势而不是鼠标放在那里的,或者它只是不移动光标,它会忽略
    :hover
    ,这将是一个有趣的问题“在先前的证据中“我能想到的是,我知道的每个用户代理样式表都指定了
    cursor
    属性,而没有
    :hover
    伪类。例如,Firefox为
    *|*:-moz any link
    指定它,Chrome为
    a:-webkit any link
    指定它。但这些毕竟都是UA风格——在那里有
    :hover
    可能不会有什么区别,因为作者级别的
    a
    规则仍然可以