CSS学习笔记07 盒子模型

1、盒子模型

所谓盒子模型就是把HTML页面中的元素看作是一个矩形的盒子,也就是一个盛装内容的容器。每个矩形都由元素的内容、内边距(padding)、边框(border)和外边距(margin)组成。

用公式表示就是:盒子=边框 内边距 内容区域 外边距

元素框的最内部分是实际的内容,直接包围内容的是内边距。内边距呈现了元素的背景。内边距的边缘是边框。边框以外是外边距,外边距默认是透明的,因此不会遮挡其后的任何元素。

注意:背景应用于由内容和内边距、边框组成的区域。

     

可以看到背景色穿透了内容区域,内边距区域与边框。

内边距、边框和外边距都是可选的,默认值是零。但是,许多元素将由用户代理样式表设置外边距和内边距。可以通过将元素的 margin 和 padding 设置为零来覆盖这些浏览器样式。这可以分别进行,也可以使用通用选择器对所有元素进行设置:

* {
    margin: 0;
    padding: 0;
}

在 CSS 中,width 和 height 指的是内容区域的宽度和高度。增加内边距、边框和外边距不会影响内容区域的尺寸,但是会增加元素框的总尺寸。

2、内边距

边框和内容区域之间的空白区域叫做内边距,由CSS的padding属性来定义,可以使用长度值或百分比值,但是不允许使用负值(设置无效)。

可以通过使用下面四个单独的属性,分别设置上、右、下、左内边距(顺时针方向)

  • padding-top
  • padding-right
  • padding-bottom
  • padding-left

如:

padding属性是一个复合属性

  • padding:10px;  表示上下左右都是10px的内边距
  • padding:10px 12px;  表示设置上下是10px的宽度,左右是12px的宽度
  • padding:10px 12px 13px 14px;  分别设置的是 上 右 下 左边距的宽度
  • padding:10px 20px 5px;  表示上边距为10px,左右边距为20px,下边距为5px

3、边框

元素的边框 (border) 是围绕元素内容和内边距的一条或多条线。CSS border 属性允许你规定元素边框的样式、宽度和颜色。 

3.1、边框样式

可以使用下面四个属性来分别设置上、右、下、左边框的样式(顺时针方向)

  • border-top-style
  • border-right-style
  • border-bottom-style
  • border-left-style

常见的边框样式有:none无(默认)、solid单实线、dashed虚线、dotted点线、double双实线

同样边框的样式border-style也是一个复合属性,与内边距padding设置一样

3.2、边框宽度

可以使用下面四个属性来分别设置上、右、下、左边框的宽度(顺时针方向)

  • border-top-width
  • border-right-width
  • border-bottom-width
  • border-left-width

通常情况下用像素值来表示边框的宽度,设置边框的宽度之前,必须设置边框的样式,否者设置边框宽度没有任何意义,边框的宽度border-width是一个复合属性,与内边距padding设置一样

从这里也可以看出,背景色穿透了盒子的边框

3.3、边框颜色

与边框样式,边框的宽度一样,边框颜色也可以使用四个属性来分别设置上、右、下、左边框的宽度(顺时针方向)

  • border-top-color
  • border-right-color
  • border-bottom-color
  • border-left-color

同样的,边框颜色border-color也是一个复合属性,设置与边框样式,边框宽度一样

4、外边距

元素边框之间的空白区域是外边距,由CSS的margin属性来定义,可以使用任何长度单位、百分数值甚至负值。

与内边距类似,可以通过使用下面四个单独的属性,分别设置上、右、下、左外边距(顺时针方向)

  • margin-top
  • margin-right
  • margin-bottom
  • margin-left

margin也是一个复合属性,与padding的设置方式一样。

5、外边距合并

外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距。合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者。

外边距合并(叠加)是一个相当简单的概念。但是,在实践中对网页进行布局时,它会造成许多混淆。
简单地说,外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距。合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者。
当一个元素出现在另一个元素上面时,第一个元素的下外边距与第二个元素的上外边距会发生合并。请看下图:

当一个元素包含在另一个元素中时(假设没有内边距或边框把外边距分隔开),它们的上和/或下外边距也会发生合并。请看下图:

尽管看上去有些奇怪,但是外边距甚至可以与自身发生合并。
假设有一个空元素,它有外边距,但是没有边框或填充。在这种情况下,上外边距与下外边距就碰到了一起,它们会发生合并:

如果这个外边距遇到另一个元素的外边距,它还会发生合并:

这就是一系列的段落元素占用空间非常小的原因,因为它们的所有外边距都合并到一起,形成了一个小的外边距。
外边距合并初看上去可能有点奇怪,但是实际上,它是有意义的。以由几个段落组成的典型文本页面为例。第一个段落上面的空间等于段落的上外边距。如果没有外边距合并,后续所有段落之间的外边距都将是相邻上外边距和下外边距的和。这意味着段落之间的空间是页面顶部的两倍。如果发生外边距合并,段落之间的上外边距和下外边距就合并在一起,这样各处的距离就一致了。

 

注释:只有普通文档流中块框的垂直外边距才会发生外边距合并。行内框、浮动框或绝对定位之间的外边距不会合并。

### CSS 盒子模型学习笔记 CSS 盒子模型(Box Model)是 CSS 中的核心概念之一,用于描述 HTML 元素的布局和结构[^1]。每个 HTML 元素都被视为一个矩形盒子,这个盒子由内容区域(content)、内边距(padding)、边框(border)以及外边距(margin)组成[^2]。 #### 盒子模型的基本组成部分 1. **Content(内容区域)** 这是盒子中实际显示内容的部分,例如文本或图片。它的尺寸可以通过 `width` 和 `height` 属性来设置[^1]。 2. **Padding(内边距)** 内边距位于内容区域和边框之间,用于控制内容与边框之间的间距。可以通过 `padding` 属性进行设置[^2]。 3. **Border(边框)** 边框围绕在内边距之外,用于定义盒子的边界。可以通过 `border` 属性设置边框的宽度、样式和颜色[^1]。 4. **Margin(外边距)** 外边距位于边框之外,用于控制当前盒子与其他盒子之间的间距。可以通过 `margin` 属性进行设置。 #### 盒子模型的两种类型 - **标准盒子模型(W3C 盒子模型)** 在标准盒子模型中,元素的总宽度等于 `content width + padding + border + margin`[^1]。 - **IE 盒子模型(怪异盒子模型)** 在 IE 盒子模型中,`padding` 和 `border` 被包含在 `width` 和 `height` 的值内。这种模型在早期版本的 Internet Explorer 中使用。 #### 如何切换盒子模型 通过设置 `box-sizing` 属性,可以切换盒子模型的计算方式。默认情况下,元素使用标准盒子模型,而通过设置 `box-sizing: border-box;`,可以让元素使用 IE 盒子模型。 ```css /* 示例代码:使用 border-box 模型 */ * { box-sizing: border-box; } ``` #### 学习资源推荐 为了更好地理解 CSS 盒子模型,以下是一些推荐的学习资源: 1. MDN Web Docs - [CSS 盒子模型](https://developer.mozilla.org/zh-CN/docs/Web/CSS/CSS_Box_Model/Introduction_to_the_CSS_box_model) 2. W3Schools - [CSS 盒子模型教程](https://www.w3schools.com/css/css_boxmodel.asp) #### 注意事项 在实际开发中,不同浏览器可能会对盒子模型的实现存在差异。因此,建议始终为项目添加全局样式重置,并统一设置 `box-sizing` 属性以避免兼容性问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值