1.1.CSS 选择器的特异度
特异度是指选择器的特殊程度,决定了选择器的优先级
1.2.CSS继承
1.2.1 概念
某些属性会自动继承其父元素的计算值,除非显示指定一个值。
注意: 一般来说在CSS中与盒模型相关的都是不能继承的,与颜色相关的都是可以继承的
1.2.2 显示继承
通过给某一属性设置inherit可以设置显示继承。
1.3.CSS初始值
1.3.1 概念
CSS中每一个元素都有初始值,例如background-color的初始值就是transparent透明的,所以我们写结构的时候才没有颜色,因为CSS在不设置属性值的时候默认显示的是初始值。
1.3.2 设置为初始值
有时候我们会忘记初始值是什么,这时候我们可以通过关键字initial来设置属性值
* {
background-color:initial
}
1.4 CSS 布局方式及相关技术
1.4.1 布局
- 确定内容的大小和位置的算法
- 依据元素、容器、兄弟节点和内容等信息来计算
1.4.2相关技术‘
- 常规流:也叫文档流。块级、行级、表格布局、flexbox和grid布局等等
- 浮动:float,可以做文字环绕效果等等
- 绝对定位:改变盒子的位置,但不会对常规流有什么影响
盒模型属性
- width:指定content box宽度。取值为长度、百分数、auto。百分数相对于容器的content box宽度
- height:指定content box高度。其他的和width一样,除了 只有指定高度的时候时候,百分数才生效
- padding:内边距,四个值分别是上左下右。百分比相当于容器宽度
- border:边框。样式、颜色、粗细。四个边框颜色不同时是在对角斜着切的
- margin:外边距。百分数相对于容器宽度 设置为auto时表示水平居中
- overflow:当盒子里的内容超出了盒子就可以设置这个属性。有四个值:visible、hidden、scroll分别表示:显示超出部分,隐藏超出部分,显示滚动条
盒模型
正常情况下,宽度就是宽度,但是如果设置box-sizing为border-box。表示height/width=原始height/width+border+padding
- 两种盒子排列方式:块级和行级
- 块级:单独成行。适合所有盒模型属性
- 行级:可以多个并行。盒模型中width和height不适用
- display属性:
- block:块级盒子
- inline:行级盒子
- inline-block:本身是行级,可以放在行内,也可以设置宽高
- none:完全被忽略
常规流
除了根元素、浮动和绝对定位其他的都在常规流里面
- 行级排版上下文:盒子在一行,一行放不下会换行,text-align决定盒子在行内的水平对齐,vertical决定行内的垂直对齐,会避开浮动的元素。
- 块级排版上下文:盒子从上到下排放,垂直margin合并,不会和浮动元素重叠
- flexbox:可以控制子级盒子的摆放方向、宽度高度、是否允许对折
- grid布局:display:grid是元素生成一个块级的grid容器,使用grid-template将容器划分为网格
- position属性:
- static:默认值,非定位元素
- relative:相对自身原本位置偏移,不脱离文档流
- position:relative
- 在常规流里面布局
- 相对于自己本应该在的位置进行偏移
- 使用top、left、bottom、right设置偏移长度
- 流内其它元素当它没有偏移一样布局
- absolute:绝对定位,相对非static祖先元素定位
- position:absolute
- 脱离常规流
- 相对于最近的非static祖先定位
- 不会对流内元素布局造成影响
- fixed:相对于视口绝对定位
1.5 总结
今天详细学习了CSS的内容,对选择器,继承,布局方式及相关技术有了很好的理解,学习的时候还时不时地看了看MDN文档,弥补了很多漏点,继续加油!