CSS 基础知识常见问题汇总

488 阅读4分钟

这是我参与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