CSS内容有点多,一次性总结要写很久,所以我把这部分分成了几个板块,得空写一点,最后汇总到一起。
就像 HTML 中的元素内容和标签,CSS 是由声明和选择器组成的,除了注释,CSS 文件中有且只有声明和选择器。选择器的作用是选择特定的 HTML 元素,然后通过声明指定样式(声明就好比元素内容,指定了实际呈现在页面中的东西)。语法如下:
选择某一类的标签的全部,选择器直接写相应元素类型即可,例如:
对于所有 HTML 标签,都可以添加一个名为 class 的全局属性。该属性和你接触的编程语言中的class含义一样,就是指定一个元素的类,将同样性质、需要被做同样处理的元素汇总为一类。选择器的书写语法为:.ClassName //class属性不可以以数字开头
在类选择器前加上元素类型,标识选择既满足类名符合又属于指定类型的元素。书写语法如下:HTML中,给一个元素指定class属性值是,可以包含一个此列表,各个词之间用空格分隔,也就是说class的值不允许有空格,空格是用来分隔不同类名的,被空格分开的多个值意味着该元素属于多个类。所以选择器也可以选择多个类,含义为选择同时属于这几个类的元素,书写选择器时将多个类选择器连起来写即可构成多类选择器,书写语法如下:.ClassName1.ClassName2.ClassName3......{指定样式的语句}

对于所有 HTML 标签,都有一个名为 id 的全局属性。只需要在希望设置id的元素的开始标签中加入属性:id=“id值”。正如他的名字,这个属性旨在给元素指定一个唯一标识,也就是说,不同于 Class 同一个 id 值在整个 HTML 文档中只能使用一次。同样,既然id是唯一的,那么也就不存在结合元素选择器的用法,也不存在类似多类选择器的用法。(虽然如此,但w3c规范中并不允许id的值出现空格。)(不论是 class 还是 id 都是用来方便 CSS 和 JS 的,虽然他们都是 HTML 属性,但跟 HTML 文档没啥关系。)(class、id都要区分大小写,元素类型不区分但一般小写。)选择器的书写语法为:
依据元素具有的属性、属性的值选择元素。属性选择器有种,书写语法如下:*[属性名]{指定样式的语句} //选择所有具有该属性的元素
元素类型名[属性名]{指定样式的语句} //选择所有具有该属性的特定类型元素
属性名称或通配符[属性1][属性2]... //选择具有多个属性的(特定类型)元素
属性值选择:上面三种形式都可以写成[属性="特定值"]的形式实现筛选特定属性值元素
部分属性值选择:在等号前面加一个波浪线写成[属性~="特定值"]就可以实现部分匹配,匹配属性值包含该字符串的元素
子串匹配属性选择器:把波浪线换成^匹配以特定值开头,换成$匹配结尾,换成*匹配属性值中间包含特定值
特定属性选择器:把波浪线换成|匹配属性等于特定值或以“特定值-”开头的的元素

用于选择某元素的后代元素,后代即在HTML中标签的嵌套,被嵌套在里面的元素就是外面元素的子元素。书写语法:两个元素选择器用空格连接,例如: div p{指定样式的语句} //将选择div内的所有p
这里要先搞清后代与子的区别,嵌套的第二层第三层第四层都叫后代,但只有第一层的叫子代(你可以理解称孙子、曾孙子都是后代,但只有儿子是子代)。书写语法:两个元素选择器用大于号连接,例如:div>p{指定样式的语句} //将选择所有div内最外层/子代的所有p
选择紧接在某一元素后的元素,且二者需要具有相同父级元素(即二者要出于同一级、不存在相互嵌套关系)。书写语法:两个元素用加号连接,例如:div+p{指定样式的语句} //选择处在任意div同一级后面并且与div相邻的p
跟上面内个类似,即不必选择紧挨着、相邻的,只要是后面的兄弟元素都可以选择。注意兄弟二字,它只得就是二者需要具有相同的父级关系。书写语法:两个元素用波浪线连接,例如:
用来添加一些选择器的特殊效果、依据一些特殊规则选择元素。他的含义是,选择满足某些条件(依据伪类)的所有某类型元素(依据元素类型)。
伪类的另一种形式如下:这种选择器进一步增加了限制条件,即不光元素要满足某种类型,还必须属于同一个类。伪类的种类有很多,这里不进行介绍,可以查阅MDN来了解这些伪类的用途。和伪类一样,用来实现一些特殊的选择器效果。语法和上面也一样,只不过是把伪类名换成了伪元素名。伪元素的种类有很多,这里不进行介绍,可以查阅MDN来了解这些伪元素的用途。通过了解这些伪类伪元素实现的选择器效果,你将会明白为什么称他们为伪类、伪元素。
同时为多个选择器指定一份样式,用逗号连接多个选择器书写语法如下:选择器1,选择器2,选择器3,......{样式声明}

出于某些场景的需求,会有多个选择器指向同一个元素(选择一个元素的方法是多种多样的),同时样式声明语句种都指定了同一个样式相关属性。
显然,指定了这么多次,只会有一次生效,到底生效哪个,要通过(计算)选择器的优先级判断。
权重:类型选择器(伪元素也算)为1、类选择器(属性选择器、伪类也算)为10,ID选择器为100。
选择器里每存在一个类型/类/ID就加1/10/100,然后权重值最高的选择器的样式效果将会被应用在所选元素上。
行内元素开始标签中指定样式优先级>头部指定样式>选择器。除此之外,还有一个!important 规则,使用关键字“!important ”的方法为在一条样式声明后空格加上!important,例:p{ background-color:red !important;}
!important 修饰的样式声明有最高优先级,会忽略/覆盖其它所有声明。优先级相同时遵循后来居上的原则,应用后声明的样式。总结:
!important>行内>头部>外联样式表中高权重选择器>低权重,优先级相同时后来居上。