2css选择器的优先级-css选择器世界

html-css025

2css选择器的优先级-css选择器世界,第1张

css优先级有6级。

0级:通配选择器、选择符和逻辑组合伪类。

通配选择器是 * 。

选择符有+、-、~、空格和 || 。

逻辑组合伪类有 :not()、:is()和 :where。这些伪类影响优先级的是括号里的选择器。

eg: :not([rel=nofollow])

1级:标签选择器。

2级:类选择器、属性选择器和伪类。

3级:ID选择器

4级:内联选择器

5级:!important

(1)数值计算法

0级--优先级为0;

1级--优先级为1;

2级--优先级为10;

3级--优先级为100。

(2)后来居上

优先级数值相同情况下,越后面优先级越高。

1.增加css选择器优先级的方法

(1)重复选择选择器自身

.foo.foo {}

(2)借助必然会存在的属性选择器

.foo[class] {}

#foo[id] {}

除了这两种方法,常用的是增加父级嵌套和增加标签选择器,但这种方法增加了耦合,降低了可维护性,不建议使用。

2.数值计算法的点评

不同级别的选择器优先级差距并不是10比1,差距比这大得多,而是因为实际开发中不会连续写10个而已。

在ie浏览器下,256个类选择器的优先级大于id选择器的优先级,原因是类名是以8字节存储的,8字节所能容纳的最大值就是255.

除了ie外,其他都使用16进制,不会出现这种情况。

了解css选择器的优先级后,日常工作就知道是怎么回事了。

是因为默认的优先级高于设置的优先级,所以显示不正确。

1 .className1.className2 : 选择class属性中同时具有className1和className2的所有元素

2 .className1 .className2: 选择类名className1元素后代的所有类名为className2的元素

3 #idName: 选择id为idName的所有元素

4 *: 选择所有元素

5 element(div,p等标签): 所有改标签元素

6 element.className: 选择class为className的所有element元素

7 div, p : 选择所有div和p元素

8 div p : 选择div内的所有p元素

9 div >p: 选择父元素是div的所有p元素

10 div + p : 选择紧跟div的首个p元素

11 p::after: 在每个p元素的内容之后插入内容

12 p::before: 在每个p元素的内容之前插入内容

CSS 选择器参考手册

CSS选择器又被称为CSS样式、CSS属性选择器。是由css命名及后面属性及属性值构成一个整体。

1.基础选择器

a.id选择器:通过设置元素的id属性为该元素制定ID。ID由开发者指定。每个ID在文档中必须是唯一的。在写样式表时,ID选择器是以#开头的。

HTML

CSS

执行效果:

b.class选择器:是以独立于文档元素的方式来指定样式,使用类选择器之前需要在html元素上定义类名,也就是要保证类名在html标记中存在。

HTML

CSS

执行效果:

c.元素选择器:通过note节点名称匹配元素。

HTML

CSS

2.属性选择器:

注意:最后一个选择器是E[attr|=val],由于输入|会对表格造成影响,只能用/代替。

CSS3新增了一些属性选择器,待持续更新。

3.组合选择器

示例如下:

实现效果如下:

示例如下:

从高到低依次是:

1.在属性后面使用 !important会覆盖页面内任何位置定义的元素样式

2.作为style属性写在元素标签上的内联样式

3.id选择器

4.类选择器

5.伪类选择器

6.属性选择器

7.标签选择器

8.通配符选择器

9.浏览器自定义

选择器的特殊性值表述为4个部分,用0,0,0,0表示。

参考:

1. css优先级计算规则

2. CSS选择器笔记

3. Selectors MDN

4. CSS3 选择器——基本选择器

5. CSS3 选择器——伪类选择器

6. 征服高级CSS选择器