前端星-03:深入css

178 阅读3分钟

选择器优先级?

可划分等级为a b c d,权重依次降低

  • a:内联样式
  • b:id选择器的数量
  • c:类选择器、属性选择器、伪类选择器的数量之和
  • d:标签选择器、伪元素选择器的数量之和

继承性:某些属性会继承其父元素的属性值,除非显式指定一个值。不可继承的属性可以通过设置为inherit来显式继承。

初始值:每个属性都有初始值/默认值,也可通过initial显式重置为初始值

css求值过程?

布局layout是什么?

确定内容的大小、位置的算法,通过元素、容器、兄弟节点、内容等信息来计算。

布局相关技术?

  1. 盒模型:页面元素视为一个盒子,包括content(width\height)、padding、border、margin
  • width可设置为像素、百分比、auto,(百分比:常规流中和浮动的情况下,相对于父元素content-box的宽度;绝对定位时,相对于包含块padding-box的宽度。)
  • height可设置为像素、百分比、auto,(百分比:常规流中,如果父元素的height属性为auto,则子元素height设置为百分比会被忽略。)
  • padding,(百分比:无论是垂直或水平方向,均是相对于父元素的宽度,常规流中和设置浮动的情况下,相对于父元素content-box的宽度;绝对定位时,相对于包含块padding-box的宽度。)
  • border,可以用来画三角形(宽高为0,相邻border为存在且透明)
  • margin,可以用来实现水平居中(左右auto),注:垂直方向上相邻两个盒子的margin会发生塌陷
  • box-sizing:border-box,盒子宽高包含border和padding
  • overflow,内容超出宽高时的设置,visible\hidden\scroll
  • 块级盒子,适用以上所有盒模型属性,dispaly:block
  • 行级盒子,盒模型中width、height不适用,display:inline,(display:inline-block,本身是行盒,但拥有快盒的宽高设置)
  1. 确定盒子位置的三种模式:常规流、浮动、绝对定位

常规流

  • 除根元素、浮动元素、绝对定位元素之外的其他元素都在常规流中
  • 常规流排版方式:
    • 块级BFC:特定条件(根、浮动、绝对定位、inline-block、overflow不为visible的块盒、flex子项、Grid子项)容器,从上到下排列,上下margin合并, BFC与外部盒子互不影响,BFC和浮动元素不会重叠
    • 行级IFC:只包含行盒的容器,从左到右排列,text-align水平对齐,vertical-align垂直对齐
    • 表格布局
    • flexbox,可以控制子元素排版,justify-content\align-items设置水平垂直居中,一维布局方式
    • Grid布局,二维布局方式
      • display:grid生成块级栅格容器,grid-template划分网格,设置每个子项占哪些行/列
      • columns设置每列的长度,rows每行的高度
      • auto值为自动填充剩下的,fr值为剩余空间分配比例
      • grid-area设置区域划分,行开始/列开始/行结束/列结束
  • 浮动排版方式,左右浮动,通常用于文字环绕图片
  • 绝对定位
    • position:static\relative\absolute\fixed(相对于viewport视口位置)