前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CSS3盒模型:border-box

CSS3盒模型:border-box

作者头像
心谭博客
发布2020-04-20 15:45:12
3.4K0
发布2020-04-20 15:45:12
举报
文章被收录于专栏:YuanXin

box-sizing可以声明计算元素高宽的 CSS 盒模型。它有content-boxborder-boxinherit三种取值。其中border-box是 css3 新增,也是主流 UI 框架的全局默认属性。

专注前端与算法的系列干货分享,转载请声明原创: 「微信公众号:心谭博客」| xxoo521.com | GitHub

两种盒模型

content-box

默认值,也是 css2.1 中的盒子模型。在计算widthheight时候,不计算borderpaddingmargin高度、宽度都只是内容高度

border-box

css3新增。 widthheight属性包括内容,内边距和边框,但不包括外边距。

它的计算公式是:

  1. width = border + padding + 内容宽度
  2. height = border + padding + 内容高度

为什么不计算margin

从上面可以知道,即时是border-box也是不计算margin,只是多余计算了borderpadding。因为borderpadding都是盒子模型的一部分,但是margin标记的是盒子和盒子的间距。所以,border-box的计算方法更符合box-sizing的语义

问题来了,如果有时候一定要设置margin怎么做到自由控制来保证兼容?例如,我们下面要设置一个撑满页面的盒子元素,而且有外边距干扰,怎么做?

实际应用

根据项目中的使用经验和 w3c 的建议,推荐box-sizing属性设置为border-box。在样式表文件中添加以下代码:

代码语言:javascript
复制
* {
    margin: 0;
    padding: 0;
}
div {
    box-sizing: border-box;
}

除了通用代码,border-box还可以配合 css3 中的四则运算符calc来使用,来实现对 margin 的控制。

代码如下:

代码语言:javascript
复制
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <meta http-equiv="X-UA-Compatible" content="ie=edge" />
        <title>yuanxin.metitle>
        <style type="text/css">
            * {
                margin: 0;
                padding: 0;
            }
            #app {
                box-sizing: border-box; /* 指定计算方式 */
                margin: 10px; /* 外边距 */
                /* 利用 css3 的 calc */
                width: calc(100vw - 2 * 10px);
                height: calc(100vh - 2 * 10px);
            }
        style>
    head>
    <body>
        <div id="app">div>
    body>
html>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-06-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 两种盒模型
    • content-box
      • border-box
      • 为什么不计算margin
      • 实际应用
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档