跳至主要內容
块级格式化上下文(BFC)

块级格式化上下文(BFC)

如果一个元素具有 BFC ,则不会影响到外部元素。

  • BFC 元素不会产生 margin 重叠。
  • BFC 元素可以用来清除 float 的影响。如果不清楚子元素 float ,则会造成父元素高度塌陷,会影响到后面元素布局和定位。

触发 BFC 常见情况

  • <html> 根元素
  • float 的值 【不为none
  • overflow 的值 【autoscrollhidden
  • display 的值 【table-celltable-captioninline-block 中的任何一个
  • position 的值 【不为relativestatic

Mr.LRHCSS基础CSS大约 3 分钟
float / clear

float / clear

float 的本质与特征

float 的本质是为了实现文字环绕效果。主要指文字环绕图片的效果。

float 的特征:

  • 包裹性:由 “包裹” 和 “自适应性” 两部分组成

    • 包裹

      假设 float 元素的父元素宽度为 200px,float 元素的子元素为 width: 100px 的图片,则此时 float 元素宽度表现为 “包裹”,宽度为 100px 。

    • 自适应性

      假设 float 元素的父元素宽度为 200px,float 元素的子元素包括图片和文字,则此时 float 元素宽度自适应父元素的宽度 200px 。

      如果需要最大宽度自适应 float 元素的父元素宽度,则 float 元素宽度的 “首选最小宽度” 比父元素宽度小的前提下。

      【注】首选最小宽度是指元素最合适的最小宽度。CSS 中,图片和文字的权重远大于布局,当 width: 0 ,此时所表现的宽度就是 “首选最小宽度” 。具体表现规则如下:

      • 东亚文字(如中文)最小宽度为每个汉字的宽度
      • 西方文字最小宽度由特定的连续的英文字符单元决定
      • 类似图片等的替换元素的最小宽度就是该元素内容本身的宽度
  • 块状化并格式化上下文

    元素设置 float 属性值不为 none,则其 display 计算值为 block / table 。则:

    • text-align 属性无法控制 float 元素的左右对齐,text-align 对块级元素无效
    • display: block; float: left; 组合中,display: block 是多余的
    • float: left; vertical-align: middle; 组合中,vertical-align: middle; 是多余的。

    【注】 vertical-align 属性定义行内元素的基线相对于该元素所在行的基线的垂直对齐。

  • 破坏文档流

  • 没有任何 margin 合并


Mr.LRHCSS基础CSS大约 8 分钟
line-height

line-height

line-height 属性值

  • normal : 默认值。和 font-family 密切关联的变量值。不同系统不同浏览器的默认 line-height 都有差异,需要进行重置。

    字体 Chrome Firefox IE
    微软雅黑 1.32 1.321 1.32
    宋体 1.141 1.142 1.141
  • 数值 : 其最终计算值是和当前 font-size 相乘后的值。比如: line-height: 1.5

  • 百分值 : 其最终计算值是和当前 font-size 相乘后的值。比如: line-height: 150%

  • 长度值(带单位的数值) : 如 line-height: 21px 或者 line-height: 1.5em


Mr.LRHCSS基础CSS大约 7 分钟
vertical-align

vertical-align

vertical-align 起作用的前提条件是:只能应用于 内联元素 以及设置 display: inline / inline-block / inine-table / table-cell 的元素上

vertical-align 属性值

  • 线类
    • baseline : 默认值。元素放置在父元素的基线上。
    • top : 把元素的顶端与行中最高元素的顶端对齐
    • middle : 把此元素放置在父元素的中部。
    • bottom : 把元素的顶端与行中最低的元素的顶端对齐。
  • 文本类
    • text-top : 把元素的顶端与父元素字体的顶端对齐
    • text-bottom : 把元素的底端与父元素字体的底端对齐。
  • 上标下标类
    • sub : 垂直对齐文本的下标。
    • super : 垂直对齐文本的上标
  • 数值百分比类 : 比如 20px、 2em、 20% 等。根据计算值的不同,相对于基线往上或往下偏移(取决于 vertical-align 计算值的正负)。

Mr.LRHCSS基础CSS大约 10 分钟
x-height

x-height

x 字高: 指字母 x 的高度。即:基线(baseline)和主线(median line)之间的距离。

注:verticalalign: middle 与字母中线(median)不是一个意思,verticalalign: middle 指的是基线(baseline)往上 1/2 x-height 高度。


Mr.LRHCSS基础CSS小于 1 分钟
内联元素

内联元素

“内联元素” 的 “内联” 特指 “外在的盒子”,与 displayinline 的元素不是一个概念!

“内联元素” 的特征是:可以和文字在一行显示。文字、图片、按钮、输入框、下拉框等原生表单控件都是内联元素。

内联盒模型

幽灵空白节点

在 HTML5 文档声明中,内联元素的所有解析和渲染表现就如同每个行框盒子的前面有一个 “空白节点” 一样。这个 “空白节点” 永远透明,不占据任何宽度。


Mr.LRHCSS基础CSS大约 1 分钟