重学前端学习笔记(二十二)--选择器的机制

笔记说明

重学前端是程劭非(winter)【前手机淘宝前端负责人】在极客时间开的一个专栏,每天10分钟,重构你的前端知识体系,笔者主要整理学习过程的一些要点笔记以及感悟,完整的可以加入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

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

1、::first-line

<p>
kaimo is good boy.but sometime not.
</p>
复制代码
p::first-line {text-transform: uppercase
}
复制代码

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

2、::first-letter

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

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;
}
复制代码

如果将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;
}
复制代码

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

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;
}
复制代码

5、相关属性

4.2、::before 和 ::after

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

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

个人总结

另外补充一下:可以查看MDN 伪类(pseudo-class)developer.mozilla.org/zh-CN/docs/…_(:3」∠)_。。。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/387678.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows+VS2013爆详细Caffe编译安装教程

1. 安装cuda Cuda是英伟达推出的GPU加速运算平台 我这里安装的是cuda7.5,已经安装过的忽略,还没有安装过的这里有安装教程.windows下面安装还是非常简单的. 点击打开链接 &#xff08;我的显卡是1080 现在支持cuda8.0 所以我下的是8.0&#xff09; 2. 下载cuDNN(其实是个压缩…

CF 526F Max Mex(倍增求LCA+线段树路径合并)

Max Mex 题目地址&#xff1a;https://codeforces.com/contest/1084/problem/F然后合并时注意分情况讨论&#xff1a; 参考代码&#xff1a;1 #include<bits/stdc.h>2 using namespace std;3 #define pb push_back4 #define mkp make_pair5 #define fi first6 #define se…

大学刚毕业,零基础大数据如何入门?

这篇文章中&#xff0c;本文作者将针对三种不同的、想要进入数据科学领域的人群&#xff0c;给出自己的经验&#xff0c;帮助他们迅速有效入行。无论是软件工程师、应届毕业生&#xff0c;还是完全初学者&#xff0c;都要问自己一个关键问题&#xff1a;什么样的职业轨迹最接近…

Opencv EmguCv 基本识别步骤

{//1.灰度化&#xff0c;竖向边缘检测//2.自适应二值化处理//3.形态学处理&#xff08;膨胀和腐蚀&#xff09;//4.轮廓查找与筛选Image<Bgr, byte> simage OriImage; //new Image<Bgr, byte>("license-plate.jpg");//Image<Bgr, Byte> simage…

(转)Java中的守护线程

Java的守护线程与非守护线程 守护线程与非守护线程 最近在看多线程的Timer章节&#xff0c;发现运用到了守护线程&#xff0c;感觉Java的基础知识还是需要补充。 Java分为两种线程&#xff1a;用户线程和守护线程 所谓守护线程是指在程序运行的时候在后台提供一种通用服务的线程…

vue项目中对axios的全局封装

项目中接口会很多&#xff0c;个人喜欢创建api文件对请求统一管理1.新建api文件夹&#xff0c;文件夹下创建 axios.js&#xff0c;login.js2. axios.jsimport axios from axiosimport router from ../router //引入路由是为了做重定向&#xff0c;比如没有登录过期定向到登录页…

轮廓检测

轮廓&#xff08;Contours&#xff09;&#xff0c;指的是有相同颜色或者密度&#xff0c;连接所有连续点的一条曲线。检测轮廓的工作对形状分析和物体检测与识别都非常有用。 在轮廓检测之前&#xff0c;首先要对图片进行二值化或者Canny边缘检测。在OpenCV中&#xff0c;寻找…

【大数据】阿里云大数据助理工程师认证(ACA)课程

阿里云大数据助理工程师认证&#xff08;Alibaba Cloud Certified Associate&#xff0c;ACA&#xff09; 是面向使用阿里云大数据产品的专业技术认证&#xff0c;主要涉及阿里云的大数据计算、存储、开发平台&#xff0c;数据应用类的基础产品。是对学员掌握阿里云大数据产品技…

WebGL——osg框架学习一

从今天开始&#xff0c;我们开始正式的学习osg框架&#xff0c;今天我们学习的是osg的渲染模块&#xff0c;我们来看一下代码结构。 所有DrawXXX的js模块都是渲染的模块&#xff0c;我们逐一来简单介绍一下&#xff0c;第一个Drawable.js&#xff0c;这个模块是描述可绘制对象的…

EmguCV 一些基本操作

一、先是在程序中图像的导入&#xff0c;我是根据图像路径实现&#xff0c;其中path是string类型&#xff0c;是图像路径。 IntPtr imgCvInvoke.cvLoadImage(path, Emgu.CV.CvEnum.LOAD_IMAGE_TYPE.CV_LOAD_IMAGE_ANYCOLOR); 二、图像灰度化处理&#xff0c;先创建一幅尺寸大小…

Java字符串分割

java中字符串的分割函数&#xff0c;split("你想要分割的字符", 你想要最多分割为多少段&#xff0c;正整数&#xff09; 注意事项&#xff1a; 1.分割特殊字符考虑转义字符的使用。如&#xff1a; . \ | 2.第二个参数&#xff1a; 无&#xff1a; 不传默认分割全部…

OpenCV人脸识别的原理 .

在之前讲到的人脸测试后&#xff0c;提取出人脸来&#xff0c;并且保存下来&#xff0c;以供训练或识别是用&#xff0c;提取人脸的代码如下&#xff1a; [html] view plaincopy print?void GetImageRect(IplImage* orgImage, CvRect rectInImage, IplImage* imgRect,double s…

说一下SEO和SEM到底有哪些区别?

开场白免了&#xff0c;我们直接说与主题相关的。 SEO和SEM到底有什么区别&#xff1f; SEO和SEM到底有什么区别 我们先理解字面意思&#xff1a; SEO&#xff08;Search Engine Optimization&#xff09;&#xff1a;汉译为搜索引擎优化。 SEM&#xff08;Search Engine Marke…

django模型的继承

很多时候&#xff0c;我们都不是从‘一穷二白’开始编写模型的&#xff0c;有时候可以从第三方库中继承&#xff0c;有时候可以从以前的代码中继承&#xff0c;甚至现写一个模型用于被其它模型继承。这样做的好处&#xff0c;我就不赘述了&#xff0c;每个学习Django的人都非常…

SpringBoot部署项目到Docker仓库

SpringBoot部署项目到Docker仓库1.开启远程控制端口Centos7开启方式&#xff1a; vim /lib/systemd/system/docker.service找到ExecStart行 ExecStart/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock 重启docker 启动 systemctl start docker守护进程…

人脸识别经典方法

这篇文章是撸主要介绍人脸识别经典方法的第一篇&#xff0c;后续会有其他方法更新。特征脸方法基本是将人脸识别推向真正可用的第一种方法&#xff0c;了解一下还是很有必要的。特征脸用到的理论基础PCA在另一篇博客里&#xff1a;特征脸(Eigenface)理论基础-PCA(主成分分析法)…

Jquery常用正则验证

常用校验的正则表达式var rulesConfig { /** * str.replace(/^\s|\s$/g, ) 解析&#xff1a; str&#xff1a;要替换的字符串 \s : 表示 space &#xff0c;空格 &#xff1a; 一个或多个 ^&#xff1a; 开始&#xff0c;^\s&#xff0c;以空格开始 $&#xff1a; 结束&#x…

svm参数说明

svm参数说明---------------------- 如果你要输出类的概率&#xff0c;一定要有-b参数 svm-train training_set_file model_file svm-predict test_file model_fileoutput_file 自动脚本&#xff1a;Python easy.py train_data test_data 自动选择最优参数&#xff0c;自动进行…

poj-3667(线段树区间合并)

题目链接&#xff1a;传送门 参考文章&#xff1a;传送门 思路&#xff1a;线段树区间合并问题&#xff0c;每次查询到满足线段树的区间最左值&#xff0c;然后更新线段树。 #include<iostream> #include<cstdio> #include<cstring> using namespace std; co…

面试题编程题11-python 生成随机数

随机整数&#xff1a; random.randint(a,b), [a,b] random.randrange(a,b,step) [a,b) 随机实数 random.random()返回0 到1 之间的浮点数转载于:https://www.cnblogs.com/feihujiushiwo/p/10922454.html