CSS 盒子模型概括

最近在学习vue的相关知识,由iOS开发转前段,js觉得难度还好,可以理解,反而这个css布局让我头大,为此这边简单记录下盒子模型的基本理论

盒子模型是css中一个经典的模型,他包括了内容(content)、内边距(padding)、边框(border)、外边距(margin), CSS盒子模型都具备这些属性。这些属性像我们日常中所见到的盒子,所以叫它盒子模型。

1. 盒子模型概念

CSS盒子模型 又称框模型 (Box Model) ,包含了元素内容(content)、内边距(padding)、边框(border)、外边距(margin)几个要素

元素框的总宽度 = 元素的width + padding的左边距和右边距的值 + margin的左边距和右边距的值 + border的左右宽度

元素框的总高度 =元素的height + padding的上下边距的值 + margin的上下边距的值 + border的上下宽度

2. 盒子中的区域

一个盒子中主要的属性就5个:width、height、padding、border、margin。如下:

  • width和height:内容的宽度、高度(不是盒子的宽度、高度)。
  • padding:内边距。
  • border:边框。
  • margin:外边距。

标准盒子模型

IE盒子模型

3. box-sizing

在CSS 盒子模型定义里,对一个元素所设置的width与height只会应用到这个元素的内容区。如果这个元素有任何的border或padding,绘制到屏幕上时的盒子宽度和高度会加上设置的边框和内边距值。这意味着当你调整一个元素的宽度和高度时需要时刻注意到这个元素的边框和内边距。当我们实现响应式布局时,这点会影响你的布局。

box-sizing 属性可以被用来调整这些表现:

  • content-box 是默认值。如果你设置一个元素的宽为100px,那么这个元素的内容区会有100px 宽,并且任何边框和内边距的宽度都会被增加到最后绘制出来的元素宽度中。
  • border-box 告诉浏览器:你想要设置的边框和内边距的值是包含在width内的。也就是说,如果你将一个元素的width设为100px,那么这100px会包含它的border和padding,内容区的实际宽度是width减去(border + padding)的值。大多数情况下,这使得我们更容易地设定一个元素的宽高。

总结: paddingmargin在CSS中分别用于不同的目的,理解它们的区别对于创建有效的布局非常重要。

  • Padding(内边距)

    • Padding应用于元素的内容区域与其边框之间的空间。换句话说,它是内容与元素边缘之间的距离。
    • 使用场景包括但不限于:当你想要增加元素内部的空间而不影响其外部尺寸时;当需要为背景颜色或图像扩展到的范围添加额外的空间时。
    • 示例:在一个按钮内增加一些空间使文本不紧贴按钮边缘,或者在图片周围添加空间以避免文字过于靠近图片。
  • Margin(外边距)

    • Margin应用于元素边框之外的空间,主要用于控制元素与其他元素之间的间距。
    • 使用场景包括但不限于:当你希望调整元素相对于其他元素的位置而不改变元素本身的大小时;创建元素之间的间隔,比如段落之间的空白、块级元素之间的距离等。
    • 示例:在两个相邻的<div>之间创建一个固定的间距,或者让一个标题远离上方的内容但不影响标题下方的内容布局。

如果是开发一个系统,首先应该将box-sizing设置为border-box,这样会给你省不少页面问题。

相关推荐
winfredzhang3 小时前
从零构建:基于 Node.js 的全栈视频资料管理系统开发实录
css·node.js·html·音视频·js·收藏,搜索,缩略图
加个鸡腿儿21 小时前
经验分享2:SSR 项目中响应式组件的闪动陷阱与修复实践
前端·css·架构
华仔啊1 天前
写 CSS 用 px?这 3 个单位能让页面自动适配屏幕
前端·css
菩提小狗1 天前
Sqli-Labs Less-3 靶场完整解题流程解析-豆包生成
前端·css·less
web小白成长日记1 天前
CSS 作用域隔离实战:React、Vue 与 Styled Components 的三种范式
前端·css·vue.js·react.js
@@小旭2 天前
实现头部Sticky 粘性布局,并且点击菜单滑动到相应位置
前端·javascript·css
Irene19912 天前
CSS 定位属性(relative、absolute、fixed、sticky)与实用技巧总结
css
我的写法有点潮2 天前
推荐几个国外比较流行的UI库(上)
前端·javascript·css
m0_502724952 天前
vue动态设置背景图片后显示异常
前端·css
@Autowire2 天前
Layout-position
前端·css