CSS盒模型

134 阅读2分钟

1592204847319-775912da-464a-4715-b753-fb2e6d1d810a.png

两种盒模型

  1. content-box 内容盒: 内容就是盒子的边界
  2. border-box 边框盒: 边框才是盒子的边界

举例说明:

  <div class="content-box">
    内容盒
  </div>
  <div class="border-box">
    边框盒
  </div>
 .content-box {
  margin:25px;
  border: 5px solid red;
  padding: 10px;
  box-sizing: content-box;
  width: 100px;
}

.border-box {
  margin:25px;
  border: 5px solid red;
  padding: 10px;
  box-sizing: border-box;
  width:100px;
}

效果图:

1592212706228-abaf7631-3bd8-457b-bf97-17be183ba7c1.png

虽然都设置了相同的宽度为100Px,但可以看到两种盒模型的宽度是不同的

内容盒的盒模型:只有内容宽度是100px,

1592212723006-1cc0c0af-8198-42d0-8290-cc64a48ade58.png

边框盒的盒模型:padding + border + content = 100px

1592212762117-8833caca-0f47-408e-83b7-9413f9652519.png

综上可得出公式:

  1. content-box: width = 内容宽度
  2. border-box: width = 内容宽度 + padding + border

请简述 CSS 盒模型是什么

CSS 盒模型有两种,一种是 content-box 一种是 border-box。
content-box 的宽度 width 表示内容区的宽度,不包含 padding 和 border;
border-box 的宽度 width 表示内容区 + padding + border 的总和。
一般优先使用border-box。

Margin合并

兄弟合并

d7f566aa9ef08aa549ba1337c392cf1.png 第一个div的Margin-bottom (下外边距)会和第二个div的margin-top(上外边距)合并

父子合并

1592214621126-e763b999-cc39-47d8-b150-aaee90e15083.png parent的上边距会和第一个孩子的上边距重合,parent的下边距会和最后一个孩子的下边距重合

这种margin合并只存在与上下外边距,左右外边距不会合并

f20d49afbf02682e84655600947518b.png

取消Margin合并

对于兄弟合并: 用 display: inline-block;

a5c0c08af1676f2179a62d66f59fe5a.png

84048b7e473386154d1e019ca6250da.png

对于父子合并:

  1. 给parent加 border

291a709dfdcdd217dd016a70eff4c21.png 2. 给parent加 padding

f0f114e6991c68a402114634f11b036.png 3. 给parent加 overflow: hidden;

96a6215329f38209360f94af2d23a71.png

基本单位

长度单位

  • px 像素
  • em 相对于自身font-size的倍数
  • 百分数
  • 整数
  • rem
  • vw和vh

颜色

  • 十六进制: #FF6600 或者可简写成 #F60(只能将6位简写成3位,即当每两位数字相同时才可以)
  • RGBA: rgb(0,0,0)或者rgba(0,0,0,0)【a表示透明度】
  • hsl: hsl(360,100%,100%)或者hsla(360,100%,100%,0)【a表示透明度】,HSL即色相、饱和度、亮度

应用:画一个彩虹

js.jirengu.com/raqucagoje/…

总结:

  1. 用overflow: hidden; 解决margin合并
  2. parent div 表示parent下的所有div
  3. parent > div 表示parent下的第一个div