深入css

90 阅读5分钟

深入css 在了解 CSS 基本原理后,本节课进一步深入讨论,通过具体案例对于选择器的特异度展开讲解,在此基础上进一步引出 CSS 继承与布局的话题,对其定义及相关技术分别作出介绍。 课程重点

  1. CSS 选择器的特异度
  2. CSS 继承
  3. CSS 求值过程解析
  4. CSS 布局方式及相关技术
  5. CSS 盒模型 - 行级
  6. CSS 盒模型 - 块级

article与.title,哪条规则生效?————特异度(选择器特殊程度) 1.

拉森火山国家公园

2. .title{ color:blue; }

article h1{
color:red;
}
</style>

选择器的特异度: # . E id (伪)类 标签 #nav.list li a:link 1 2 2 .hd ul.links a 0 2 2

继承:
某些元素会自动继承父元素的计算值,除非显式指定一个值(一般文字相关属性可继承,和盒魔性相关属性不可继承)

显示继承: 使用关键字inherit,显示从父元素继承

初始值:
css中每个元素都有一个初始值:
background-color 初始值为transparent
margin-left初始值为0

可以使用initial关键字显示重置为初始值: background0-color:initial

declared values:一个元素的某属性可能有0到多个声明值。比如: p{font-size:16px}和p.text{font-size:1.2em}

布局(layout):
1.确定内容的大小和位置算法
2.依据元素、容器、兄弟节点和内容等信息来计算

布局相关技术:
常规流(文档流): 行级 块级 表格布局 flexbox grid布局
  盒模型:margin border padding width height——> content

  width1.指定content box宽度
2.取值为长度、百分数、auto
3.auto取值由内容计算得来
4.百分数相对于容器的content box 高度
5.容器有指定高度时,百分数才生效

padding1.指定元素四个方向的内边距
2。百分数相对于容器的宽度

border:
指定容器边框样式、粗细和颜色
三种属性
border——width
border——style
border-color
四个方向
border-top
border-right
border-bottom
border-left

margin
指定元素四个方向的外边距
取值可以是长度、百分数、auto
百分数相对于容器宽度
 
margin collapse
容器内容超出时——overflow: visible hidden scroll 

块级vs。行级
block level box     inline level box
不和其他盒子并列摆放    和其他行级盒子一起放在一行或拆开成多行
适用所有的盒模型属性     盒模型中的width/height不适用

块级元素                  行级元素
生成块级盒子              生成行级盒子
                         内容分散在多个行盒(line box)中
bodyarticledivmain    spanemstrongcitecodesectionh1-6pullidisplay:block                    display:inline

display属性:
block 块级盒子
inline 行级盒子
inline-block 本身是行级,可以放在行盒中;可以设置宽高;作为一个整体不会被拆散成多行
none     排版时完全被忽略

常规流 normal flow
1.根元素、浮动和绝对定位会脱离常规流
2.其他元素都在常规流之内(in-flow3,常规流中的盒子,在某种排版上下文中参与布局

行级排版上下文:
inlineformatting context(ifc)
只包含行级盒子的容器会创建一个ifc

ifc内的排版规则:
1.盒子在一行内水平拜访
2.一行放不下时,换行显示
3text-align决定一行内盒子的水平对齐
4.vertical-align决定一个盒子在行内的垂直对齐
5.避开浮动(float)元素

块级排版上下文:
block formatting context(bfc)
某些容器会创建一个bfc:

1,根元素 2,浮动、绝对定位、inline-block 3.flex子项和grid子项 4.overflow值不是visible的块盒 5.display:flow-root

bfc内排版规则:
1.盒子从上到下摆放
2.垂直margin合并
3.bfc内盒子的margin不会与外面的合并
4.bfc不会和浮动元素重叠

Flex Box:
1.一种新的排版上下文
2.它可以控制子级盒子的:
1.摆放的流向(→←↑↓)
2,摆放顺序
3.盒子的宽度和高度
4.水平和垂直方向的对齐
5.是否允许拆行

对齐方式:
justify-content
align——items

Flexibility布局:
1.可以设置子项的弹性:当容器有剩余空间时,会伸展,容器空间不够时,会收缩
2.flex-grow有剩余空间时的伸展能力
3.flew-shrink容器空间不足时收缩的能力
4.flex-basis没有伸展或收缩时的基础长度

grid布局
displaygrid
1.displaygrid使元素生成一个块级的grid容器
2.使用rid-template相关属性将容器划分为网格
3.设置每一个子项占哪些行列
a。划分网络
bgrid line 网格线
grid area

float浮动


绝对定位
position1.static 默认值,非定位元素
2.relative 相对自身原本位置的偏移,不脱离文档流:
   a。在常规流里面布局
   b。相对于自己本应该在的位置进行偏移
   c。使用topleftbottomright设置偏移长度
   d。流内其他元素当它没有偏移一样布局

3.absolute 绝对定位,相对非static祖先元素定位:
a。脱离常规流
b。相对于最近的非static祖先定位
c。不会对流内元素布局造成影响
4.fixed 相对于视口绝对定位

学习css的几点建议:
1.充分利用MDN和W3C CSS规范
2.保持好奇心,善用浏览器的开发者工具
3,持续学习