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
(至少在非触摸屏设备上,见下文)定义悬停状态是最佳实践,因为:
.class
的默认样式中,您的状态将被适当地清楚地分隔开来:hover
特定功能,使理解代码变得容易得多: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
规则仍然可以