关于CSS的两种盒模型介绍

介绍盒模型

所谓的盒模型,可以把HTML的布局元素看做是一个个盒子组成页面,盒子里装着各种需要内容。
例如小米的官网,头部导航栏、logo、搜索框、侧边分类栏、轮播区域、还有下面的各种功能区其实本质上大部分是一个个盒子,然后在往盒子里扔些内容。
在这里插入图片描述
 
那么盒模型究竟是什么样的呢?我们来看一下盒子的“解剖图”:可以看到一个普通的盒模型是由 content(盒子内容)、padding(内边距)、border(边框)还有margin(外边距) 构成,也可以看出来padding、border和margin是有分上下左右的。这就是一个盒子的内部结构。
在这里插入图片描述

许多人可能搞不清padding和margin的区别,通俗的讲padding就是内容与盒子边框的距离,margin就是2个盒子间的距离。

关于margin

当有2个盒子挨在一起的时候,margin就显示效果了。下面的3个图里,margin分别为0、 20px、 100px。随着margin值的增大,两个盒子之间的距离也在增大。
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

关于padding

定义三个粉色大盒子装着分别装着3个红色小盒子,而且padding分别为0、20px、 50px。
所以可以很明显的看到随着padding值增大,小盒子(内容)距离盒子边框的距离也越大。
在这里插入图片描述

关于border

border就是在盒子外套上一个边框(可以根据需要上下左右或者整体添加边框)
分别定义了2个相等的盒子,第二个盒子外加上30px的红色外边框,效果如下。

在这里插入图片描述

我们会注意到,当给盒子加上border和padding的时候,盒子的大小也会随之改变,但这并不是我们想要的效果。那么有什么办法可以避免这样的问题呢?

盒模型的标准

我们已经知道了border和padding会影响盒子的大小,为了解决这样的问题,出现了2种盒模型:

  • 标准盒模型(默认):box-sizing: content-box
  • IE盒模型(怪异盒模型): box-sizing: border-box
    在这里插入图片描述
    在这里插入图片描述
    图片可能比较乱,我简单说一下
    标准盒模型下,盒子的大小 = width + padding + border
    IE模型下,盒子的大小 = width

说白了就是在标准盒模型下,盒子大小大小会随着padding和border的增加而增大,而在IE盒模型下,盒子大小就是设置的width和height大小,不会变。

首先我们同样定义3个一样大小为200px200px的盒子装着100px100px 的小盒子,第一个不变,给第二个和第三个设置同样的30px的padding和10px的border,另外给第二个盒子设置box-sizing: border-box第三个盒子默认为content-box,效果如下:
在这里插入图片描述
而且我们再对比3个盒子的大小,可以看出,给第二个盒子设置了border-box的属性以后,尽管加上padding和border,盒子大小不变(盒子大小 = width),反倒是第三个默认为content-box的盒子因为加了padding和border以后盒子大小也随之改变(盒子大小 = width + padding + border)。

在这里插入图片描述
看到这里我们应该清楚了两种盒模型的区别,我们可以根据业务需要选择合适的盒模型。
在IE盒模型出来之前,对于padding和border会影响盒子大小的问题,我们可以选择“盒子的宽高减去对应的padding和border的大小”来保证盒子大小不变,尽管是“小学加减法”的问题,但也不方便。
但是现在IE盒模型出来了之后,我们可以选择更加方便快捷的方法去解决问题,何乐而不为呢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值