博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
重学前端学习笔记(二十二)--选择器的机制
阅读量:6248 次
发布时间:2019-06-22

本文共 1886 字,大约阅读时间需要 6 分钟。

笔记说明

重学前端是程劭非(winter)【前手机淘宝前端负责人】在极客时间开的一个专栏,,笔者主要整理学习过程的一些要点笔记以及感悟,完整的可以加入winter的专栏学习【原文有winter的语音】,如有侵权请联系我,邮箱:kaimo313@foxmail.com。

一、引言

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

二、选择器的组合

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

代码测试连接:

1、::first-line

kaimo is good boy.but sometime not.

复制代码
p::first-line {    text-transform: uppercase}复制代码

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

2、::first-letter

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

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

kaimo is good boy.

but sometime not.

复制代码
div>p#a {    color: green;}div::first-line {    color: hotpink;}复制代码

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

kaimo is good boy.
but sometime not.
复制代码
div>span#a {    color: green;}div::first-line {    color: hotpink;}复制代码

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

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

kaimo is good boy.
but sometime not.
复制代码
div>span#a {    color: green;}div::first-letter {    color: hotpink;}复制代码

5、相关属性

4.2、::before 和 ::after

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

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

个人总结

另外补充一下:可以查看MDN 伪类(pseudo-class)_(:3」∠)_。。。

转载于:https://juejin.im/post/5ce3fc91f265da1bd522a3a3

你可能感兴趣的文章
【OC语法要闻速览】一、方法调用
查看>>
Oracle 重建索引脚本
查看>>
先锋军Android注射技术《三》
查看>>
使用光标
查看>>
find命令之exec
查看>>
CMake交叉编译配置
查看>>
Modular Inverse(模逆元,扩展欧几里德)
查看>>
高性能WEB开发之Web性能测试工具推荐
查看>>
找出两个文本文件的不同的行
查看>>
WPF笔记(1.2 Navigation导航)——Hello,WPF!
查看>>
练习PYTHON之GEVENT
查看>>
Web持久化存储Web SQL、Local Storage、Cookies(常用)
查看>>
node js 常用模块
查看>>
Libsvm和Liblinear的使用经验谈
查看>>
php生成curl命令行
查看>>
PHP中的数据库四、mongodb
查看>>
品读吴军"之"系列
查看>>
框架学习笔记:Unity3D的MVC框架——StrangeIoC
查看>>
Android NumberPicker 修改分割线颜色和高度及字体颜色大小
查看>>
树莓派键盘布局修正
查看>>