height-css

211 阅读2分钟

一、盒模型

如果要知道元素的宽度,那一定需要了解css中的盒模型。
所有的元素都可以看作一个盒子,这个盒子包括 margin、border、padding、content。
盒模型分类

分类box-sizing盒子总宽度
标准盒模型content-boxmargin(上下) + border(上下) + padding(上下) + width
怪异盒模型border-boxmargin(上下) + border(上下) + padding(上下) + content

元素box-sizing默认是content-box,但是便于布局,大多时候用的border-box,设置height 即表示 不算 margin(左右)的宽度。

怪异盒模型中border + padding + content 等于css中width的数值(无其他属性影响时)

height属性值

描述
auto默认值。浏览器可计算出实际的宽度
lengthpx、rem、em、vw等单位
%基于包含块元素(父元素)高度的百分之
inherit从父元素继承height属性值

height: 100%

接下来我们聊了height: 100% 的宽度是如何计算的。

设置百分比生效的两个条件:

  1. 父标签有高度可循,如果中途遇到height: auto,百分比将不会生效
  2. 元素自身的属性,如:inline、浮动,脱离正常文档流、zoom,百分比将不会生效

单位之间的区别

屏幕高度为 500px,父亲盒子的高度为 300px,自身内容高度为100px

属性值描述盒子此时的高度
100%根据有高度(height不能为auto)的父亲盒子进行计算300px
100vh根据窗口的高度500px
auto根据块内容自动调整高度100px

设置height的趣事

  1. 如果设置的min-height 大于height,height将失效,盒子最后呈现的最后高度与min-height和实际内容高度息息相关。
  2. 在flex布局中,flex item 设置 flex:1的盒子,当实际内容过多的时候,会被撑开,这是因为该盒子的 min-width为 min-content,此时只需要设置一下min-width: 0就可以解决撑开的问题。