<div class="box">Hello Box</div>
.box { width: 200px; height: 100px; padding: 20px; border: 10px solid red;
margin: 30px; background: lightblue; }
CSS 加上 box-sizing
.box {
box-sizing: border-box;
}
box-sizing: border-box
width = content + padding + border
在**默认盒模型(content-box)**下:width 只控制内容区(content),padding 和 border 会额外把盒子撑大
加上 border-box,此时 整个盒子宽度 = 200 px, content 会被压缩为 200 - 40 -20 =140 px
<div class="box box1"></div>
<div class="box box2"></div>
.box { height: 100px; } .box1 { margin-bottom: 50px; background: pink; } .box2 {
margin-top: 30px; background: orange; }
间距:50 + 30 = 80 px ❌❌❌
✅实际间距: max(50,30) = 50 px ✅✅✅
垂直方向的 margin 会发生合并
<span class="inline-box">inline</span> .inline-box { width: 200px; height:
100px; padding: 20px; margin: 20px; background: yellow; }
inline 元素只有 “部份盒模型”
span是display: inline元素, inline 元素不参与完整盒模型布局
span {
display: inline-block;
}
inline-block 特点:
inline 元素是“文本流的一部分”,不是一个独立的布局盒子
1️⃣:Block formatting context (块级排版)
2️⃣:Inline formatting context(行内排版)
span / a / em
本质是:
文字的一部分
由文本内容 + 字体决定
span 的高度 = 行高(line-height)
span 的宽度 = 文字实际占用宽度
📌 正确理解:
inline 元素只有“内容尺寸”,没有“盒子尺寸”
因为:
行内元素的上下空间, 由 line-height 决定,而不是 margin