重学前端 22 # 选择器的机制

简介: 重学前端 22 # 选择器的机制

一、引言


本文讲一讲选择器的几个机制:选择器的组合、选择器的优先级和伪元素。




二、选择器的组合


2.1、选择器列表

选择器列表:用逗号分隔的复杂选择器序列;复杂选择器则是用空格、大于号、波浪线等符号连接的复合选择器;复合选择器则是连写的简单选择器组合。


2.2、优先级


  • 第一优先级    
  • 无连接符号
  • 第二优先级    
  • 空格
  • ~
  • +
  • >
  • ||
  • 第三优先级    



2.3、复杂选择器的连接符号


空格:表示选中所有符合条件的后代节点。(后代)

>:表示选中符合条件的子节点。(子代)

~:表示选中所有符合条件的后继节点,后继节点即跟当前节点具有同一个父元素,并出现在它之后的节点。(后继)

+:表示选中符合条件的直接后继节点,直接后继节点即 nextSlibling。(直接后继)

||:表示选中对应列中符合条件的单元格。(列选择器)




三、选择器的优先级


   CSS 标准用一个三元组 (a, b, c) 来构成一个复杂选择器的优先级。CSS 建议用一个足够大的进制,获取“ a-b-c ”来表示选择器优先级。

// base 是一个"足够大"的正整数
specificity = base * base * a + base * b + c


   id 选择器的数目记为 a

   伪类选择器和 class 选择器的数目记为 b

   伪元素选择器和标签选择器数目记为 c

   “*” 不影响优先级。


注意:行内属性的优先级永远高于 CSS 规则,浏览器提供了一个口子就是添加!important。该优先级会高于行内属性。同一优先级的选择器遵循后面的覆盖前面的原则。



四、伪元素


伪元素本身不单单是一种选择规则,它还是一种机制。


  • ::first-line
  • ::first-letter
  • ::before
  • ::after


4.1、::first-line 和 ::first-letter

代码测试连接:https://codepen.io/pen/


1、::first-line

<p>
kaimo is good boy.
but sometime not.
</p>


p::first-line {
    text-transform: uppercase
}

60ca3814734055f4ca90dea3d4eed384.png


注意:排版后显示的第一行字母变为大写。跟 HTML 代码中的换行无关。



2、::first-letter

p::first-letter {
    text-transform: uppercase;
    font-size:2em;
    float:left;
}


315f52d7b6d60ffb6577a1c47a4f08c9.png


3、::first-line必须出现在最内层的块级元素内。

<div>
    <p id="a">kaimo is good boy.</p>
    <p>but sometime not.</p>
</div>
div>p#a {
    color: green;
}
div::first-line {
    color: hotpink;
}

a4069565a839869da0f475d37bb6de97.png


如果将p标签替换成span标签

<div>
    <span id="a">kaimo is good boy.</span>
    <span>but sometime not.</span>
</div>
div>span#a {
    color: green;
}
div::first-line {
    color: hotpink;
}

56b930e9324864e5784bdce009fe9eca.png


如果你理解了出现三种颜色的原因,那就证明你清楚明白了。


4、::first-letter 出现在所有标签之内

<div>
    <span id="a">kaimo is good boy.</span>
    <span>but sometime not.</span>
</div>
div>span#a {
    color: green;
}
div::first-letter {
    color: hotpink;
}


1d92e5c8f6ae04d41909cccd14e7f498.png


5、相关属性


9a4369dcfa78a32df9e618c312c9479c.png


4.2、::before 和 ::after


::before 表示在元素内容之前插入一个虚拟的元素,::after 则表示在元素内容之后插入。

两个伪元素必须指定 content 属性才会生效。


补充


另外补充一下:可以查看MDN 伪类(pseudo-class)https://developer.mozilla.org/zh-CN/docs/Learn/CSS/Introduction_to_CSS/Pseudo-classes_and_pseudo-elements



目录
相关文章
|
8月前
|
存储 前端开发 JavaScript
第六章(原理篇) 微前端间的通信机制
第六章(原理篇) 微前端间的通信机制
183 0
|
8月前
|
前端开发 安全 JavaScript
前端开发中的跨域资源共享(CORS)机制
【2月更文挑战第3天】 在前端开发中,跨域资源共享(CORS)机制是一个重要的安全性问题。本文将介绍CORS的概念、原理和实现方式,并探讨在前端开发中如何处理跨域资源请求,以及如何提高网站的安全性。
|
4月前
|
前端开发
【前端web入门第四天】01 复合选择器与伪类选择器
本文档详细介绍了CSS中的复合选择器与伪类选择器。复合选择器包括后代选择器、子代选择器、并集选择器和交集选择器,能够更精确地定位和样式化元素。后代选择器用于选中某元素的所有后代,子代选择器仅选中直接子元素。并集选择器可为多个标签设置相同样式,而交集选择器则选中同时满足多个条件的元素。此外,还介绍了伪类选择器,如鼠标悬停效果和超链接的不同状态。
76 32
【前端web入门第四天】01 复合选择器与伪类选择器
|
8月前
|
前端开发
web前端开发---CSS基础选择器
web前端开发---CSS基础选择器
54 1
|
4月前
|
前端开发
前端基础(四)_CSS层叠样式表_什么是css_css样式的引入方式_样式表的优先级_样式选择器
本文详细介绍了CSS(层叠样式表)的基本概念、语法规则、引入方式、样式表的优先级和样式选择器。文章解释了CSS的作用,展示了如何在HTML中通过行内样式、内部样式和外部样式引入CSS,讨论了不同CSS选择器的优先级和如何确定最终的样式应用。此外,还强调了使用`!important`规则时的优先级高于行内样式。
135 1
|
4月前
|
前端开发
【前端web入门第五天】01 结构伪类选择器与伪元素选择器
本文介绍了CSS中的结构伪类选择器和伪元素选择器。结构伪类选择器如`nth-child`可根据元素结构关系进行选择,例如将列表中首个`&lt;li&gt;`元素背景设为绿色。伪元素选择器用于创建装饰性内容。
103 8
|
5月前
|
前端开发 数据安全/隐私保护
探秘CSS类型选择器:解码前端设计的神秘密码!
探秘CSS类型选择器:解码前端设计的神秘密码!
探秘CSS类型选择器:解码前端设计的神秘密码!
|
5月前
|
前端开发
解锁CSS神秘面纱:深度剖析类选择器,掌握前端设计的绝密武器!
解锁CSS神秘面纱:深度剖析类选择器,掌握前端设计的绝密武器!
|
6月前
|
前端开发
前端 CSS 经典:好用的 CSS 选择器
前端 CSS 经典:好用的 CSS 选择器
33 0
|
8月前
|
前端开发
前端路由机制实现hash-history
前端路由机制实现hash-history
51 1