当前位置: 首页 > 面试题库 >

如何计算CSS特异性中的点

申屠宗清
2023-03-14
问题内容

它指出,特异性是CSS的得分系统。它告诉我们元素值1分,类值10分,ID值100分。最重要的是,这些点是合计的,总数就是选择者的特异性。

例如:

身体 = 1点
身体.wrapper = 11点
身体.wrapper#容器 = 111点

因此,使用这些要点,我期望以下CSS和HTML导致文本为蓝色:

#a {

    color: red;

}



.a .b .c .d .e .f .g .h .i .j .k .l .m .n .o {

  color: blue;

}


<div class="a">

  <div class="b">

    <div class="c">

      <div class="d">

        <div class="e">

          <div class="f">

            <div class="g">

              <div class="h">

                <div class="i">

                  <div class="j">

                    <div class="k">

                      <div class="l">

                        <div class="m">

                          <div class="n">

                            <div class="o" id="a">

                              This should be blue.

                            </div>

                          </div>

                        </div>

                      </div>

                    </div>

                  </div>

                </div>

              </div>

            </div>

          </div>

        </div>

      </div>

    </div>

  </div>

</div>

为什么当15个班级等于150分而1个ID等于100分时,文本变成红色?

显然,积分不只是总数。它们是串联在一起的。在此处了解更多相关信息这是否意味着选择器中的类= 0,0,15,0OR 0,1,5,0

(我的直觉告诉我,这是前者,正如我们所知道的ID选择的特异性看起来是这样的:0,1,0,0


问题答案:

但是,正如许多人已经指出的那样,W3CCSS建议指出:“将三个数字abc(在基数较大的数字系统中)连接起来具有特殊性。”因此,我的极客只需要弄清楚这个基数是多少。

事实证明(至少4个最常用的浏览器*)用于实现此标准算法的“很大的基础” 是256或2 8。

这意味着用0个id和256个类名指定的样式 覆盖仅用1个id指定的样式。我用一些小提琴进行了测试:

  • 255类是 足够覆盖1号
  • ......但256类 足以覆盖1号
  • … 256标签名称 足以覆盖1类名

  • ......但是,唉256个ID是 足够覆盖1种内嵌样式 (更新2012年8月15日-你将不得不使用!important

因此,有效地存在一个“点系统”,但它不是以10为基础,而是以256为基础。这是它的工作方式:

(2 8)2或65536,乘以选择器中ID的数量
+(2 8)1或256,乘以选择器中类名称的数量
+(2 8)0或1,乘以tag的数量-选择器中的名称

这对于进行信封式练习来传达概念不是很实际。
这可能就是有关该主题的文章一直使用10进制的原因。

* [Opera使用2 16(请参阅karlcow的注释)。其他一些选择器引擎使用 无穷大 -实际上是无分制(请参阅Simon
Sapin的评论)。

更新,2014年7月:
正如Blazemonger在当年早些时候指出的那样,Webkit浏览器(chrome,safari)现在使用的基数高于256。也许2
16,例如Opera?IE和Firefox仍使用256。



 类似资料:
  • 问题内容: CSS如何确定何时将一种样式应用于另一种样式? 我已经遍历了W3CSS3选择器文档几次,这帮助我了解了如何在jQuery中更好地使用CSS选择器,但是并没有真正帮助我理解何时将一个CSS规则应用于另一个CSS规则。 我有以下HTML: 我有以下CSS: 鉴于以上所述,链接1和链接2的样式将由CSS 确定。为什么与Link 2 关联的样式没有优先级? 显然,我可以这样解决: 但是,由于缺

  • 问题内容: 我有这样的数据: 我想计算列之间的日期差异,并用差异替换列。我已经尝试过关于stackoverflow的相关解决方案,但是它们都不起作用。 问题答案: 您需要将该列转换为日期,然后才能与结合使用。使用 Spark 2.2 : 使用 < Spark 2.2,我们需要首先将该列转换为class :

  • 本文向大家介绍xgboost的特征重要性计算相关面试题,主要包含被问及xgboost的特征重要性计算时的应答技巧和注意事项,需要的朋友参考一下 参考回答: Xgboost根据结构分数的增益情况计算出来选择哪个特征作为分割点,而某个特征的重要性就是它在所有树中出现的次数之和。

  • 我有两张表发票和invoice_items。我想要的是和金额为每个发票id和显示在我的看法。 发票表 id invoice_items表 > id 发票号 数量 我想为具体的发票id求和金额列。我对laravel是新来的,所以我如何使用laravel eloquent做到这一点。

  • 我有一个数据文件如下例,但大得多 我必须计算Y1和Y2的每个3个相同名称(第一列)的平均值。然后分别用Y1和Y2的每个名称的平均值制作一个条形图。因此,在x轴上,我将有名称,在y轴上将有平均值。任何人都可以帮我吗?

  • 问题内容: 我经常对CSS覆盖规则感到困惑:总的来说,我意识到更具体的样式表会覆盖不太具体的样式表,而具体性取决于指定了多少个选择器。还有一个关键字,它也起作用。 因此,这是一个简单的示例:我有一个带有两个表单元格的表。表格本身具有CSS规则,适用于表格中的所有单元格。但是,第二个表单元格具有自己的规则,该规则应覆盖常规表规则: 但是…当我在浏览器中打开它时,我看到它没有被覆盖。好的- 我想我需要