这是我参与11月更文挑战的第8天,活动详情查看:2021最后一次更文挑战
1、Css 选择器有哪些
Css2 选择器:
元素选择器,id 选择器,群组选择器,类选择器,*通配符选择器,后代
选择器
Css2 伪类选择器:
a:link/visited/hover/active
Css3 选择器
- 空格 >
- +相邻兄弟选择器
- ~通用选择器(查找后面所有)
结构伪类选择器:
- 查找第几个 nth-child(n)
- 查找同一类型第几个 nth-of-type
- 查找唯一类型 only-of-type
属性选择器:根据标签属性查找 [attr=value]
- : root 查找根元素 html 标签
- : empty 查赵空标签
目标伪类选择器:(表单)
- :enabled 查找可以使用的标签
- :disabled 查找禁止使用的标签
- :checked 查找被选中的标签
否定伪类选择器 not()
2、那些属性可以继承
Css 继承特性主要是文本方面:
所有元素可继承:visibility 和 cursor
块级元素可继承:text-indent 和 text-align
列表元素可继承:list-style,list-style-type,list-style-position,
list-style-image
内联元素可继承:letter-spacing,word-spacing,line-height,color,
font,font-family,font-size
Font-style , font-variant , font-weight , text-decoration ,
text-transform,direction
字母间距 段落间距 行高 字体颜色 字体种类 字体大小 字体样
式 字体粗细 小型大写字母文本 文本修饰 转换不同元素中的文本 文
本方向
3、权重
优先级(权重):
- 元素选择器 1
- 伪元素选择器 1
- class 选择器 10
- 伪类选择器 10
- 属性选择器 10
- Id 选择器 100
- 内联样式的权重 1000
- 包含选择器权重为权重之和
- 继承样式权重为 0
优先级顺序:
-
id 选择器 > class 选择器 > 标签选择器;
-
标签之间存在层级包含关系时,后代元素会继承祖先元素的样式。如果后代元素定义了与祖先元素相同的样式,则祖先元素的相同的样式属性会被覆盖;
-
带有!important 标记的样式属性的优先级最高;
-
样式表的来源不同时,优先级顺序为:内联样式> 内部样式 > 外部样式 > 浏览器用户自定义样式 > 浏览器默认样式
优先级如何计算:
CSS的specificity特性或非凡性,它是一个衡量css优先级的一个标准, 既然的标准就有判定规定和计算方式,specificity用一个四位数来表示, 更像四级从左到右,左的最大级,一级大于一级,数位之间没有进制, 多个选择符用到同一个元素上时那么specificity上值高的最终获得优先级。
当遇到多个选择符同时出现时候
按选择符得到的Specificity值逐位相加,
{数位之间没有进制 比如说: 0,0,0,5 + 0,0,0,5 =0,0,0,10 而不是 0,0, 1, 0}
就得到最终计算得的specificity,
然后在比较取舍时按照从左到右的顺序逐位比较。
举例说明:
1.div { font-size:12px;}
分析:
1个元素{ div},Specificity值为0,0,0,1
2.body div p{color: green;}
分析:
3个元素{ body div p },Specificity值为0,0,0,3
3.div .sjweb{ font-size:12px;}
分析:
1个元素{ div },Specificity值为0,0,0,1
1个类选择符{.sjweb},Specificity值为0,0,1, 0
最终:Specificity值为 0,0,1,1
4.Div # sjweb { font-size:12px;}
分析:
1个元素{ div },Specificity值为0,0,0,1
1个类选择符{.sjweb},Specificity值为0,1,0, 0
最终:Specificity值为 0,1,0,1
5.html > body div [id=”totals”] ul li > p {color:red;}
分析:
6个元素{ html body div ul li p} Specificity值为0,0,0,6
1个属性选择符{ [id=”totals”] } Specificity值为0,0,1,0
2个其他选择符{ > > } Specificity值为0,0,0,0
最终:Specificity值为 0,0,1,6
4、Px, rem, em 的区别
Px,绝对长度单位,像素 px 是相对于显示器屏幕分辨率来说的
em 相对长度单位,相对于当前对象内文本的字体尺寸
em 的值并不是固定的
em 会继承父级元素的字体大小(参考物是父元素的 font-size)
em 中所有的字体都是相对于父元素的大小决定的
rem 相对于 html 根元素的 font-size