border-box和content-box最直观的区别和解释【不理解包赔】

本文详细解析了CSS中content-box与border-box的区别。content-box仅由元素的宽度和高度决定其大小,而border-box则将padding和border也计入元素的总尺寸。通过实例展示了不同属性设置下元素尺寸的变化。

chrome浏览器默认是content-box,什么是content-box,我用最简单的语言解释给你听。


content-box就是用元素的width和height觉得元素的高宽,这就意味着元素的padding和border等不能算在width和height中。啥意识?简洁介绍一下。

  • 元素的width和height决定元素的内容,padding和border的改变不能改变width和height的值。

直接上代码:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <link rel="stylesheet" type="text/css" href=""/>
        <style type="text/css">
            .border-box{
                height: 100px;
                width: 300px;
                padding: 20px;
                background: skyblue;
                box-sizing: content-box;
            }
        </style>
    </head>
    <body>
        <div class="border-box">这是content-box的高度</div>
        <div class="border-box">这是content-box的高度</div>
        <div class="border-box">这是content-box的高度</div>
    </body>
</html>

控制台元素结构如下图所示:
这里写图片描述

border-box就是用元素内容和padding和border一起决定width和height,啥意识,就是width和元素的内容以及padding和border相互制约。下面用几句话简洁解释一下。

  • width和height改变,paddign和border不改变时,元素内容的宽高会发生相应的改变,改变的值就是width和height改变的值。
  • paddign和border改变,width和height不改变时,元素内容的宽高会发生相应的改变,改变的值就是width和height改变的值。
  • 元素内容的宽高等于:元素的宽高 - ( border + padding )

直接上代码:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <link rel="stylesheet" type="text/css" href=""/>
        <style type="text/css">
            .border-box{
                height: 100px;
                width: 300px;
                padding: 20px;
                background: skyblue;
                box-sizing: border-box;
            }
        </style>
    </head>
    <body>
        <div class="border-box">这是border-box的高度</div>
        <div class="border-box">这是border-box的高度</div>
        <div class="border-box">这是border-box的高度</div>
    </body>
</html>

控制台元素结构如下图所示:
这里写图片描述

在实际工作的场景和目的

我更喜欢用border-box,因为border-box更灵活一点,举个例子,我在业务中遇到一个问题,我的商品详情页的一个盒子是高度自适应的,为146px,但是在ie8浏览器上显示为146.8px,如何解决,如果对盒子设置height:146px;则会出现被撑高的情况,因为box-sizing默认为content-box,你给元素设置宽高,只是给元素内容设置宽高,你元素的总高度是heigtht + border + padding所以就会出现撑高,解决方法就是给当前的盒子设置box-sizing: border-box这样你设置高度为146px时,会默然将元素内容的高度进行相应减少来保证整体高度为146px,这个最大的好处就是你这个盒子有好几个,而且有不同的padding和border值,解决这个的最好的方法就是给盒子设置border-box

### CSS `box-sizing` 属性:`content-box` 与 `border-box` 的区别 #### 基本概念 CSS 中的 `box-sizing` 属性定义了元素尺寸如何被解析应用。它有两个主要取值:`content-box` `border-box`。 - **`content-box`** 这是 `box-sizing` 的默认值,意味着当为一个元素指定宽度(`width`)或高度(`height`)时,这些值只适用于该元素的内容区域(content area)。任何额外的内边距(`padding`)或边框(`border`)都会增加到内容区域之外,从而影响终渲染出来的整体尺寸[^3]。 例如: ```css .example { box-sizing: content-box; width: 200px; padding: 20px; border: 10px solid black; } ``` 在这种情况下,`.example` 元素的实际宽度将是 `200px (内容宽度) + 40px (左右各 20px 内边距) + 20px (左右各 10px 边框)`,即总共 `260px` 宽度[^3]。 - **`border-box`** 如果将 `box-sizing` 设置为 `border-box`,那么所设定的宽度(`width`)高度(`height`)将会包含内容、内边距以及边框在内的整个盒子的尺寸。换句话说,在这种模式下,无论添加多少内边距或者边框,都会改变外部可见的整体尺寸,而是通过减少内部可用的空间来适应新增的部分[^4]。 实例演示如下: ```css .element { box-sizing: border-box; width: 100%; padding: 20px; border: 1px solid #000; } ``` 这里 `.element` 即便有 `20px` 的上下左右填充加上 `1px` 的黑色边界线,其占据页面的比例依然是父容器宽度的百分之百[^2]。 #### 实际应用场景对比 在日常网页设计过程中,采用哪种盒模型取决于具体需求: 对于需要精确控制视觉呈现大小而希望因同浏览器解释差异造成混乱的情况来说,推荐使用 `border-box` 模型因为它能更好地保持预期中的布局稳定性并简化复杂嵌套结构下的计算过程[^5]。 另一方面,如果你正在构建某些特殊效果比如动态调整大小依据纯粹文本流体特性,则可能更适合保留传统的 `content-box` 方法以便让各个部分独立伸缩变化[^1]。 总之选择合适的选项可以帮助开发者更加灵活高效地完成项目目标同时提升用户体验质量。 ---
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值