一、伪类(不存在的类,特殊的类)
作用:用来描述一个元素的特殊状态(第一个子元素、被点击的元素、鼠标移入的元素....)
语法:一般使用“:”开头
1、根据所有的子元素进行排序
:first-child
:last-child
:nth-child() 选中第n个子元素
n 表示第n个,0到正无穷
2n或even 表示选中偶数位
2n+1或odd 表示选中奇数位
2、在同类型元素中进行排序
:first-of-type
:last-of-type
:nth-of-type()
3、:not() 否定伪类
将符合条件的元素从选择器中去除
4、a的伪类(超链接的伪类)
:link 用来表示没访问过的链接(正常链接)
:visited 用来表示访问过的链接
由于隐私的原因,所以visited这个伪类只能修改链接的颜色,不能修改字体大小
以上两个是超链接特有的样式
:hover 用来表示鼠标移入的状态
:active 用来表示鼠标点击
二、伪元素选择器
伪元素:假想出一个并不存在的元素,会随时变化
作用:表示页面中一些特殊的并不真实存在的元素(特殊元素)
语法: ::开头
::first-letter 表示第一个字母
::first-line 表示第一行
::selection 表示选中的内容
::before 表示元素开始的位置(H前面)
::after 表示元素的最后( U后面)
必须结合content属性来使用,content中的内容无法选中,因为content中的内容是
根据CSS加的
三、样式的继承
样式的继承,我们为一个元素设置的样式同时也会应用到它的后代元素上
继承是发生在祖先后代之间的
继承的设计是为了方便我们的开发,利用继承可以将一些通用的样式统一设置到共同的祖先元素上,这样只需设置一次即可让所有的元素都具有该样式
注意:并不是所有的样式都会被继承,如 背景相关,布局相关等
四、选择器的权重
1、样式的冲突
当我们通过不同的选择期,选中相同的元素,并且为相同的样式设置不同的值时
此时就发生了样式的冲突
发生样式冲突时,应用哪个样式由选择器的权重(优先级)决定
2、 选择器的权重
内联样式 1,0,0,0
id选择器 1,0,0,
类和伪类选择器 1,0
元素选择器 1
通配选择器 0
继承的样式 没有优先级
比较优先级时,需要将所有的选择器的优先级进行相加和计算,最后优先级越高,则 越优先显示(分组选择器是单独计算的)
选择器的累加不会超过其最大的数量级,类选择器再高也不会超过id选择器
如果优先级计算后相同,此时优先使用靠下的样式
可以在某一个样式的后边添加!important,则此时该样式会获取最高的优先级,甚至 超过内联样式
注意:开发一定要慎用!important
五、长度单位
1、像素
屏幕(显示器)实际上是由一个个的小点点构成的
不同屏幕的像素大小是不同的,像素越小的屏幕显示的效果越清晰
所以同样的200px在不同的设备下显示效果不一样
2、百分比
可以将属性值设置为相对于其父元素属性的百分比
设置百分比可以使子元素随父元素的改变而改变
3、em
相对元素字体大小来计算的
1em = 1 font-size(1 font-size默认为16px)
em会根据字体大小的改变而改变
4、 rem
相对于根元素的字体大小计算(root)