深入CSS | 青训营

83 阅读3分钟

优先级与继承

优先级

优先级的计算: ID + 类 + 元素

继承

和文字相关的一般都可以继承,和盒模型相关的一般不能继承

显式继承

inherit(让原来不可继承的可继承)

image.png

初始值

每个属性都有

  • background-color初始值是transparent
  • margin-left是0

使用initial重置为初始值

CSS求值过程

image.png

image.png

resolving: 通过html和css能直接算出来的

formatting: 需要根据实际情况确定(如屏幕宽度的80%)

继承是继承父元素的计算值


布局

确定内容大小和位置的算法

相关技术

常规流:块级、行级、表格、flex、 grid

盒模型(content box)

image.png

border-box 的width,height是包括边框的

width

  • 默认是content box的宽度
  • 取值百分数是相对于容器的content box的宽度

height

  • 同width
  • 只是当容器有指定的高度时,百分数才生效

padding

  • 两个值时是上下,四个值是上右下左,
  • 取值百分数是相对于容器的content box的宽度

border

  • 样式,粗细,颜色
  • 当四个边颜色不同时,角部45度连接(当content和padding都为0时就是三角形)

margin

  • margin:auto 是水平居中的效果
  • margin collapse 两个外边距相接的元素,外边距将合并为最大的单个外边距的大小

overflow 当溢出时的显示方式:visible hidden scroll

块级盒子

  • 不与其他盒子并列摆放
  • 使用所有的盒模型属性

行级盒子

  • 和其他行级盒子放在一行或拆开成多行
  • 盒模型的width和height不适用(根据内容决定)

块级元素(html中的标签)

  • 生成块级盒子
  • body article div main section h1-6 p ul li
  • display: block

行级元素

  • 生成行级盒子,内容分散再多个行盒中
  • span em strong cite code
  • display: inline

display属性

  • block
  • inline
  • inline-block 和其他行级元素可以放在一行,但是其中的内容作为一个整体不会被拆散成多行(可设置宽高)
  • none

行级排版上下文(IFC,inline formatting context)

只包含行级盒子的容器会创建一个IFC

规则

image.png

单词、图片、inline-block是原子的,在换行时不会被分开

overflow-wrap:break-word;可以使它们分开

块级排版上下文(BFC,block formatting context)

创建BFC的情况

image.png

规则

image.png

当容器里面既有块级又有行级盒子,会将行级盒子放到匿名的块级盒子里 image.png

flex box上下文

可以控制子集盒子的排列方式

image.png

主轴与侧轴(交叉轴)

摆放的流向(主轴): flex-direction: row/ row-reverse/ column/ column-reverse

对齐:

  • 主轴上的对齐: justify-content

image.png

  • 侧轴上的对齐: align-items (默认值是stretch)

image.png

  • align-self 可以设置和容器不同的对齐方式

image.png

  • order 元素摆放的排序:按主轴方向从小到大排列

image.png

flexibility

  • 可以设置子项的弹性:当容器有剩余空间时,会伸 展;容器空间不够时,会收缩。
  • flex-grow有剩余空间时的伸展能力 image.png
  • flex-shrink容器空间不足时收缩的能力 (0就是刚性的,不会被压缩)
  • flex-basis没有伸展或收缩时的基础长度
  • 缩写 image.png

grid

划分网格

  • grid-template-columns
  • grid-template-rows
  • 值:px/ auto/ fr(fragment即剩余空间占据的份数)

网格线的确定

  • 第一条线编号为1
  • grid-row-start
  • grid-column-start
  • grid-row-end
  • grid-column-end
  • 简写grid-area : 1/1/3/3

浮动

文字环绕图片的效果

float : left

image.png

绝对定位

position属性

  • static 默认值,非定位元素
  • relative 不脱离文档流,相对于自身原本位置偏移

image.png

  • absolute 绝对定位,相对于非static祖先元素定位,不会对流内元素造成影响

image.png

  • fixed 相对于视口绝对定位(应用:滚动时导航栏和返回顶部按钮始终保持原位)