css盒子模型

内容目录

盒子模型

  • html 标签中每个标签都可以看作是一个盒子,盒子模型中包括内容(content)内边距(padding)边框(border)外边距(margin)

内容部分

  • 下面是一个简单的盒子模型。

  • 内容部分是指标签中的内容,如下图所示的蓝色区域:

这个盒子模型的 css 代码如下:

div {
  width: 100px;
  height: 100px;
  background: pink;
  padding: 20px;
  margin: 30px;
}

从代码中可以看到,我设置了一个宽度为 100px,高度为 100px,背景色为粉色的盒子,同时设置了内边距为 20px,外边距为 30px。

但是值得注意的是这个盒子背景颜色覆盖的粉色区域实际上是 140px,原先我认为我在 css 中设置的盒子宽高就是粉色背景覆盖的区域,我设置width: 100px; height: 100px;,那么这个盒子就应该是 100px,但是实际上 100px 只是盒子的内容部分的宽高,而盒子的宽高是包括内边距和边框的,所以这个盒子的宽高是 140px。

那么如何让我们“所见即所得”呢,可以使用 css 中的box-sizing: border-box;属性,这个属性可以让我们设置的盒子宽高包括内边距和边框

内边距

  • 内边距 padding 所指的是盒子的内容与边框之间的距离
div {
  /* 上内边距 上内边距 右内边距 左内边距; 顺时针进行赋值*/
  padding: 10px 20px 30px 40px;
}

Info

当我们使用 padding 的复合写法时未写够四个值时,编译时会按照顺时针的顺序经行赋值,直到将所有的值赋完。剩下未被赋值的方向会使用对称方向的值进行赋值。

边框

  • 边框 border 可以有许多样式。但是常用的一般就以下三种:

    • solid 实线
    • dashed 虚线
    • dotted 点线
div {
  /* 边框宽度 边框样式 边框颜色;*/
  /* 实线 */
  border: 1px solid red;
  /* 虚线 */
  border: 1px dashed red;
  /* 点线 */
  border: 1px dotted red;
}

外边距

  • 外边距 margin 的属性写法与内边距 padding 的属性写法一致,所以不再赘述。

外边距折叠现象

合并现象

当两个垂直布局的相邻盒子都设置了垂直外边距时,这两个盒子的外边距会发生合并现象,合并后的外边距的大小为两个盒子外边距的最大值。

这个现象带来的影响个人认为不是很大。但是在一些特殊的场景下,这个现象会带来一些不可预知的问题。

塌陷现象

当两个盒子为嵌套关系时,设置子元素的 margin-top 时,会导致父元素发生塌陷现象,父元素的位置将会与子元素一同下移

解决方法:设置父元素的overflow: hidden;属性。

行内元素的外边距

行内元素的外边距,垂直方向上无法生效,水平方向上可以生效。也就是说要控制行内元素的垂直方向上的外边距,需要设置行高,或是将行内元素设置为块级元素。

相关笔记

css书写顺序

css 书写顺序:布局定位属性 > 自身样式 > 文本样式 > 其他样式。

阅读全文

css选择器

css 标签选择器 css 标签选择器用来选中 html 中的标签,比如 h1、p、div 等等。 h1 { color: red; } css 类选择器 css 类选择器用来选中 html 中的类,比如 .title、.content 等等。 .title { color: red; }

阅读全文

css小tips

属性 box-sizing: border-box;:这个属性可以让我们设置的盒子宽高包括内边距和边框。 overflow: hidden;:这个属性可以让我们设置的盒子超出部分隐藏。可以解决嵌套块级元素时发生的塌陷现象。

阅读全文