深入CSS学习笔记|青训营

97 阅读3分钟
 <hl class=="title">拉森火山国家公园</hl>
 <article>
 
 <style>
     .title {
         color: blue;
     }
     
     article hl {
         color: red;
     }
 </style>

选择器的特异度specificity

  • "#" id
  • "." 伪类
  • "E" 标签

继承

某些属性会自动继承其父元素的计算值,除非显式指定一个值

  • 显式继承
     box-sizing: inherit;
   }
   
   html {
       box-sizing: border-box;
   }
   
   .some-widget {
       box-sizing: content-box;
   }

初始值

  • CSS中,每个属性都有一个初始值
    • background-color的初始值为transparent
    • margin-left的初始值为0
  • 可以使用initial关键字显式重置为初始值
    • background-color:initial

CSS求值过程

布局(layout)是什么?

  • 确定内容的大小和位置的算法
  • 依据元素、容器、兄弟节点和内容等信息来计算

布局相关技术

  • 常规流:行级、块级、表格布局、FlexBox、Grid布局
  • 浮动
  • 绝对定位

布局属性

  • width
    • 指定content box宽度
    • 取值为长度、百分数、auto
    • auto由浏览器根据其它属性确定
    • 百分数相对于容器的content box宽度
  • height
    • 指定content box高度
    • 取值为长度、百分数、auto
    • auto取值由内容计算的来
    • 百分数相对于容器的content box高度
    • 容器有指定的高度时,百分数才生效
  • padding
    • 指定元素四个方向的内边距
    • 百分数相对于容器宽度
  • border
    • 指定容器边框样式、粗细和颜色
  • margin
    • 指定元素四个方向的外边距
    • 取值可以是长度、百分数、auto
    • 百分数相对于容器宽度
  • overflow

块级 vs. 行级

  • 块级:
    • Block Level Box
    • 不和其它盒子并列摆放
    • 适用所有的盒模型属性
  • 行级:
    • Inline Level Box
    • 和其它行级盒子一起放在一行货拆开成多行
    • 盒模型中的width、height不适用

display属性

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

常规流 Normal Flow

  • 根元素、浮动和绝对定位的元素会脱离常规流
  • 其它元素都在常规流之内
  • 常规流中的盒子,在某种排版上下文中参与布局

行级排版上下文

  • Inline Formatting Context (IFC)
  • 只包含行级盒子的容器会创建一个IFC
  • IFC 内的排版规则
    • 盒子在一行内水平摆放
    • 一行放不下时,换行显示
    • text-align 决定一行内盒子的水平对齐
    • vertical-align 决定一个盒子在行内的垂直对齐
    • 避开浮动(float)元素*

块级排版上下文

  • Block Formatting Context (BFC)
  • 某些容器会创建一个BFC
    • 根元素
    • 浮动、绝对定位、inline-block oiu jE
    • Flex子项和Grid子项
    • overflow值不是visible 的块盒
    • display: flow-root;

BFC内的排版规则

  • 盒子从上到下摆放
  • 垂直margin合并
  • BFC内盒子的margin不会与外面的合井
  • BFC不会和浮动元素重叠

Flex Box是什么?

  • 一种新的排版上下文
  • 它可以控制子级盒子的:
    • 摆放的流向
    • 摆放顺序
    • 盒子宽度和高度
    • 是否允许折行

Flexibility

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

学习CSS的几点建议

  • 充分利用MDN和W3C CSS规范
  • 保持好奇心,善用浏览器的开发者工具
  • 持续学习,CSS新特性还在不断出现