css选择器权重的计算公式是什么?

2020-12-28 21:22发布

如题

如题

13条回答
浅浅77
1楼 · 2020-12-29 09:47.采纳回答
  • 内联样式,如: style=" ",权值为1000。

  • ID选择器,如:#content,权值为0100。

  • 类,伪类和属性选择器,如.content,权值为0010。

  • 类型选择器和伪元素选择器,如div p,权值为0001。

  • 通配符、子选择器、相邻选择器等的。如*、>、+,权值为0000。

  • 继承的样式没有权值。

权值越大,权重越高

  • !important
    !important 用来提升优先级,加了这句的样式的优先级是最高的。

CSS权重有4个等级,4个等级的定义如下:

第一等:代表内联样式,如: style=””,权值为1000。

第二等:代表ID选择器,如:#content,权值为100。

第三等:代表类,伪类和属性选择器,如.content,权值为10。

第四等:代表类型选择器和伪元素选择器,如div p,权值为1。

最后把这些值加起来,就是当前元素的权重了。


爱学习的小巴
3楼 · 2020-12-29 10:01

CSS选择器分基本选择器(元素选择器,类选择器,通配符选择器,ID选择器,关系选择器),

属性选择器,伪类选择器,伪元素选择器,以及一些特殊选择器,如has,not等。

在CSS中,权重决定了哪些CSS规则生效,浏览器按如下规则进行CSS权重计算

  • 1000:内联样式

  • 0100:ID选择器

  • 0010:类,伪类,属性选择器

  • 0001:元素,伪元素,通配符,子选择器,相邻选择器等

  • 无:继承样式

浏览器通过对元素上的CSS规则进行权重计算,权重高的规则将生效,如果权重相同则最后的规则生效,

而使用的important的规则将具备最高权重,如果多条规则有important,同样是最后的规则生效。


小猴子
4楼 · 2020-12-29 10:38

!important        无穷大

行间样式style     1000

#id                100

.class|属性|伪类   10

标签|伪元素       1
 
通配符            0


20200921文 - 做更棒的自己!
5楼 · 2020-12-29 13:59

1、!important,加在样式属性值后,权重值为 10000

2、内联样式,如:style=””,权重值为1000

3、ID选择器,如:#content,权重值为100

4、类,伪类和属性选择器,如: content、:hover 权重值为10

5、标签选择器和伪元素选择器,如:div、p、:before 权重值为1

6、通用选择器(*)、子选择器(>)、相邻选择器(+)、同胞选择器(~)、权重值为0


我是大脸猫
6楼 · 2020-12-30 14:44

一、样式类型

  1、行间

我的行间CSS样式。

 

  2、内联

   3、外部

二、选择器类型

  1、ID  #id

  2、class  .class

  3、标签  p

  4、通用  *

  5、属性  [type="text"]

  6、伪类  :hover

  7、伪元素  ::first-line

  8、子选择器、相邻选择器

三、权重计算规则

  1. 第一等:代表内联样式,如: style=””,权值为1000。

  2. 第二等:代表ID选择器,如:#content,权值为0100。

  3. 第三等:代表类,伪类和属性选择器,如.content,权值为0010。

  4. 第四等:代表类型选择器和伪元素选择器,如div p,权值为0001。

  5. 通配符、子选择器、相邻选择器等的。如*、>、+,权值为0000。

  6. 继承的样式没有权值。

四、比较规则

  1. 1,0,0,0 > 0,99,99,99。也就是说从左往右逐个等级比较,前一等级相等才往后比。

  2. 无论是行间、内部和外部样式,都是按照这个规则来进行比较。而不是直观的行间>内部>外部样式;ID>class>元素。之所以有这样的错觉,是因为确实行间为第一等的权重,所以它的权重是最高的。而内部样式可能一般写在了外部样式引用了之后,所以覆盖掉了之前的。

  3. 在权重相同的情况下,后面的样式会覆盖掉前面的样式。

  4. 通配符、子选择器、相邻选择器等的。虽然权值为0000,但是也比继承的样式优先。

五、!important

  1. !important 的作用是提升优先级,换句话说。加了这句的样式的优先级是最高的(比内联样式的优先级还高)。

    复制代码

    
    

    我显示红色

      

    复制代码

  2. ie7+和别的浏览器对important的这种作用的支持度都很好。只有ie6有些bug

    p{
      color:red !important;
      color:blue;    
    }//会显示blue

    但是这并不说明ie6不支持important,只是支持上有些bug。看下面

    复制代码

    p{
      color:red !important;  
    }
    p{
      color:blue;  
    }//这样就会显示的是red。说明ie6还是支持important的。

    复制代码

六、实例

  1. 复制代码

     a{color: yellow;} /*特殊性值:0,0,0,1*/
     div a{color: green;} /*特殊性值:0,0,0,2*/.demo a{color: black;} /*特殊性值:0,0,1,1*/
     .demo input[type="text"]{color: blue;} /*特殊性值:0,0,2,1*/
     .demo *[type="text"]{color: grey;} /*特殊性值:0,0,2,0*/
     #demo a{color: orange;} /*特殊性值:0,1,0,1*/
     div#demo a{color: red;} /*特殊性值:0,1,0,2*/第一条应该是黄色 
    
             第三条应该是黑色
        第四条应该是红色


Sophia
7楼 · 2020-12-30 19:43

一个选择器的特异性计算如下:

  • 如果声明来自于‘style’属性,那么值为1,否则值为0(=a)(在HTML中,一个元素的'style'属性的值是样式表规则。规则中没有没有选择器,因此 a=1,b=0,c=0,d=0)

  • 选择器中的ID属性的数量(=b)

  • 选择器中其他属性和伪类的数量(=c)

  • 选择器中标签选择器和伪元素的数量(=d)


特异性仅基于选择器的构成。特别的,"[id=p33]"形式的一个选择器是当成属性选择器来计算的(a=0,b=0,c=1,d=0),尽管在资源文档DTD中id属性是作为"ID"来定义的。


小小收藏家
8楼 · 2021-01-02 21:05
  • 内联样式,如: style=" ",权值为1000。

  • ID选择器,如:#content,权值为0100。

  • 类,伪类和属性选择器,如.content,权值为0010。

  • 类型选择器和伪元素选择器,如div p,权值为0001。

  • 通配符、子选择器、相邻选择器等的。如*、>、+,权值为0000。

  • 继承的样式没有权值。

权值越大,权重越高

  • !important
    !important 用来提升优先级,加了这句的样式的优先级是最高的。


嘿呦嘿呦拔萝卜
9楼 · 2021-01-04 08:58

CSS权重有4个等级,4个等级的定义如下:

第一等:代表内联样式,如: style=””,权值为1000。

第二等:代表ID选择器,如:#content,权值为100。

第三等:代表类,伪类和属性选择器,如.content,权值为10。

第四等:代表类型选择器和伪元素选择器,如div p,权值为1。

最后把这些值加起来,就是当前元素的权重了。

相关问题推荐

  • 回答 17
    已采纳

    CSS为HTML标记语言提供了一种样式描述,定义了其中元素的显示方式。CSS在Web设计领域是一个突破。利用它可以实现修改一个小的样式更新与之相关的所有页面元素。总体来说,CSS具有以下特点:丰富的样式定义CSS提供了丰富的文档样式外观,以及设置文本和背景属性...

  • 回答 19

    递归做为一种算法在程序设计语言中广泛应用.是指函数/过程/子程序在运行过程中直接或间接调用自身而产生的重入现象

  • 回答 16
    已采纳

    CSS盒子模型就是在网页设计中经常用到的CSS技术所使用的一种思维模型。 盒子模型(Box Modle)可以用来对元素进行布局,包括内边距,边框,外边距,和实际内容这几个部分。盒子模型分为两种:第一种是W3c标准的盒子模型(标准盒模型)第二种IE标准的盒子模型(怪...

  • 回答 15

    浮动和定位都可以使元素脱离标准文档流,提升层级,  浮动脱离文档流,提高半个层级,不能完全覆盖下面元素(不能覆盖图片文字)定位脱离标准文档流,提升一个层级,可以完全覆盖下面元素及其内容...

  • 回答 9

    css过渡与动画主要区别在于:transition需要触发一个事件才会随着时间改变其CSS属性;animation在不需要触发任何事件的情况下,也可以显式的随时间变化来改变元素CSS属性,达到一种动画的效果。css过渡与动画区别总结:1、动画不需要事件触发,过渡需要。2、...

  • 回答 3

    一段文字在标签的宽度内是不会自动换行的,可以给标签设置小一点的宽度,碰到标签的右边缘就会自动换行了

  • 回答 17

    定位:1、相对定位 position:relative; 兼容2、绝对定位 absolut 兼容3、固zhuan定定位 fixed ie6不兼容

  • 回答 4

    如果一个元素覆盖在另外一个元素之上,而你想显示下面的元素,这时你就需要把上面这个元素的background设置为transparent transparent在 不同 css版

  • 回答 4

    怎样在CSS样式中设置背景的透明度,下面一个具体的实例。把类为box的层设为透明。.box{width:300px;height:200px;margin:0auto;boxder:1pxsolid#ccc;background:#000;filter:alpha(opacity:30);opacity:0.3;-moz-opacity:0.3;-khtml-o...

  • 回答 6

    解决方案You can check if the image's color model includes an alpha channel:BufferedImage img = ImageIO.read(/* from somewhere */);if (img.getColorModel().hasAlpha()) {undefined// img has alpha channel...

  • 回答 5

    找到 eclipse 的安装目录 进入到 plugins 文件夹下,这个文件是管理 eclipse样式相关的文件夹然后我们进入它的子目录 org.eclipse.ui.themes_1.2.1.v20170809-1435 文件夹,去里面找 与 eclipse 相关的样式设置,继续寻找来到 这个界面。 考到css 文件夹,与...

  • 回答 6

    css问题filter: alpha(opacity=100,finishopacity=0,style=2)alpha是来设置透明度的,它的基本属性是filter:alpha(opacity,finishopacity,style,startX,startY,finishX,finishY).opacity代表透明度数,选值0-100,0是完全透明,100是不透明.finishopacit...

  • 回答 4

    设置背景颜色:要设置背景颜色,直接使用background:颜色值;即可。如:body{background:#000}将body的背景颜色设置为黑色。 设置背景图片:1.规律背景图片。不如我们要设置一个渐变的背景图片,这种背景只需要切出1像素宽,高度合适的图片作为背景即可。body...

  • 回答 2

    原因分析: 使用css的opcity属性改变某个元素的透明度,但是其元素下的子元素的透明度也会被改变,即便重定义也没有用,不过有个方法可以实现,大家可以看看。 可以使用一张透明的图片做背景可以达成效果...

  • 回答 3

    用css 隐藏掉overflow在用div 模拟重画滚动条,用div和z-index配合模拟滚动条

没有解决我的问题,去提问