在 CSS 规则中重复类名是否会增加其优先级?

2024-05-04

假设我有一个<div>:

<li class="menu-item"> ... </li>

有人可以告诉我是否可以使用li.menu-item.menu-item.menu-item { ... }使这个CSS规则具有更高的优先级?

Update:

下面是说明这一点的代码:

<ul>
    <li class="menu-item dark">Item 1</li>
    <li class="menu-item dark">Item 2</li>
    <li class="menu-item dark menu-item-special">Item 3</li>
    <li class="menu-item dark">Item 4</li>
</ul>

.menu-item.dark {
    background: #333;
    height: 40px;
    line-height: 40px;
    margin-bottom: 10px;
}
.menu-item-special.menu-item-special.menu-item-special {
    background: blue;
}

还有一个jsfiddle:http://jsfiddle.net/wenjiehu/6hycnscy/ http://jsfiddle.net/wenjiehu/6hycnscy/

您可以看到“Item 3”的背景颜色是蓝色。


这不是一个好的做法,因为您必须查看规范来确认它,但有趣的是它会产生影响。

奇怪的是,在 CSS 声明上重复一个类会提高它的特异性! http://www.w3.org/TR/CSS21/cascade.html#cascade

我不相信,但是如果你查阅 CSS 规范,就会发现没有什么排除重复一堂课以增加特异性:

  • 如果声明来自“style”属性而不是带有选择器的规则,则计数 1,否则计数 0 (= a)(在 HTML 中,元素“style”属性的值是样式表规则。这些规则没有选择器,所以a=1,b=0,c=0,d=0。)
  • 计算选择器中 ID 属性的数量 (= b)
  • 计算选择器中其他属性和伪类的数量 (= c)
  • 计算选择器中元素名称和伪元素的数量 (= d)

所以在你的例子中:

.menu-item.dark {} 
/* a=0 b=0 c=2 d=0 -> specificity = 0,0,2,0 */
li.menu-item-special.menu-item-special.menu-item-special
/* a=0 b=0 c=3 d=0 -> specificity = 0,0,3,1 */

所以后者实际上获胜了!


为了添加更多上下文,特异性规则是分层的,所以下面#foo打破了你的规则,也是如此!important http://jsfiddle.net/bttybpyg/1/:

#foo
/* a=1 b=0 c=0 d=0 -> specificity = 0,1,0,0 */
li.menu-item-special.menu-item-special.menu-item-special
/* a=0 b=0 c=3 d=0 -> specificity = 0,0,3,1 */

注意:我只在 Chrome 和 IE8 上测试过。由于其未定义的性质,某些浏览器的行为可能有所不同。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 CSS 规则中重复类名是否会增加其优先级? 的相关文章

随机推荐

  • SQLAlchemy TypeDecorator 不起作用

    我在用着xml在我的 postgresql 数据库中 我需要一个可以处理的自定义类型xmlSQLAlchemy 中的数据 所以我做了XMLType班级与xml etree 但它并没有按照我的意愿工作 这是我写的代码 import xml e
  • 如何减小heroku slug的大小?

    我的 slug 大小为 89 5MB 非常大 然而 存储库的大小非常小 du hsc 8 0M 8 0M total 继这篇博文之后 http dazedthots blogspot com 2011 07 reducing slug si
  • 数据库无法检索图像或为空,导致数组错误。如何修复它?

    我的问题是java lang IndexOutOfBoundsException 无效索引 0 大小为 0 我不知道如何修复此错误 并且我的阵列上没有发现任何问题 我是安卓新手 希望大家理解 也许这是我的错误的原因value put KEY
  • 我是否必须注册新的捆绑包 ID 才能将新应用程序上传到 iTune Connect?

    这是我第一次将应用程序上传到 iTunes Connect 这让我感到害怕 捆绑包 ID 的选择似乎只是一种选择 Xcode iOS 通配符应用程序 ID 下面有一行 你可以注册一个新的bundle id 问题是 我需要注册一个新的bund
  • 最大流量算法的修改

    我试图解决一个关于最大流量问题 http en wikipedia org wiki Maximum flow problem 我有一个源和两个接收器 我需要找到该网络中的最大流量 这部分是一般的最大流量 然而 在这个特殊版本的最大流量问题
  • 用于存储应用程序用户机密的 Azure Key Vault 机密

    在我的应用程序中 我必须存储用户的非常敏感的数据 例如其他第三部分服务的各种密码 用户填写一个表格 向我们提供第三部分服务的登录名和密码 该应用程序的目标是使用从 100 多个输入生成的 powershell 脚本来设置其他复杂系统 需要将
  • 带有复合主键的 Room @Relation

    我的问题是这个问题的延伸 也是我的 gt 房间复合主键链接到外键 https stackoverflow com questions 50248668 room composite primary key link to foreign k
  • 将 QTcpSocket 绑定到特定端口

    我正在通过一个连接QTcpSocket to a QTcpServer 我可以在服务器端指定侦听端口 但客户端会选择随机端口进行连接 我尝试过使用该方法QAbstractSocket bind但这没有什么区别 这是我的代码 void Con
  • 我如何使用 angularJS Restful 服务使用来自外部文件的 json 数据

    我正在开发一个应用程序 我正在从一个中检索 json 数据 使用 http get 方法的外部文件工作正常 现在我正在尝试使用角度 安心的服务 它在过滤器中工作正常 但是当我在控制器中使用它时 它是 显示未定义 Service js Fil
  • PDF解析提取CheckBox字段值

    我有一个 PDF 文档 想要从 PDF 和 Chackbox 和单选按钮类型字段值中提取内容 PDF 文件的版本为 1 4 Acrobat 5 x 可以从网络浏览器生成 CheckBox appear such types in PDF 我
  • 在 x86 程序集中将整数打印到控制台

    当我在 16 位汇编中添加两个值时 将结果打印到控制台的最佳方法是什么 目前我有这个代码 CODE START mov ax 1 put 1 into ax add ax 2 add 2 to ax current value mov ah
  • 在调试器中枚举 EF6 中的 IEnumerable 会出现“无法评估子项”错误

    我有一个新的 ASP NET MVC 5 项目 并尝试通过 IdentityDbContext 查询代码优先数据库 如果我查询特定的 DbSet 并插入断点 尝试读取 IEnumerable 的内容将导致 VS 2013 告诉我无法评估子级
  • 如何在 C 中将文本文件作为命令行参数

    基本上 我试图接受命令行文本文件 以便当我以 program instructions txt 运行程序时 它会存储指令中列出的值 但是 我在测试当前拥有的内容时遇到了麻烦 因为它给了我错误 分段错误核心已转储 int main int a
  • python virtualenv和flask安装。没有名为flask的模块

    运行基本程序时我不断收到此错误 ImportError No module named flask 这是基本的程序 from flask import Flask app Flask name app route def hello wor
  • Android 中的 FLAG_ACTIVITY_CLEAR_TOP

    有人可以用一种非常简单的方式向我解释一下什么是FLAG ACTIVITY CLEAR TOP意思是 我知道有很多关于它的问题 但没有一个答案令我满意 有人还可以举一个这个标志有用的例子吗 谢谢 请检查以下链接以获取相同的详细信息 http
  • 无法在 Android Studio 中向 Activity_main.xml 添加任何项目

    在 Android Studio 中 我无法在设计视图中将调色板中的任何项目添加到 Activity main xml 中 它只是不允许我拖放它们 知道为什么会发生这种情况吗 这是打印屏幕 根据android studio中用于androi
  • 在运行时替换 Property Setter 方法

    我有许多共享一个公共基类的对象 我希望拦截所有设置属性值的调用 并记录这些值是否已在每个实例的基础上设置 我可以用反射替换运行时属性的 Set 方法吗 一种方法是使属性成为虚拟的 并在运行时通过反射发射创建一个子类来覆盖属性 添加您的代码
  • python-daemon 不记录标准输出重定向

    我在代码中使用 python daemon 其中包含 print 语句 我想将它们发送到一个文件 所以我运行了以下命令 python server py gt gt log out 然而什么也进不去log out 谁能告诉我我需要做什么 T
  • 在php中声明一个对象数组

    如何将 php 中的对象列表声明为私有实例变量 在 Java 中 声明看起来像这样private ArrayList ls构造函数会有这个ls new ArrayList Thanks PHP 动态分配内存 而且它并不关心您在数组中存储什么
  • 在 CSS 规则中重复类名是否会增加其优先级?

    假设我有一个 div li class menu item li 有人可以告诉我是否可以使用li menu item menu item menu item 使这个CSS规则具有更高的优先级 Update 下面是说明这一点的代码 ul li