视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
css中border-sizing属性的用法
2020-11-27 18:47:47 责编:小采
文档


这篇文章给大家介绍的文章内容是关于css中border-sizing属性的用法,有很好的参考价值,希望可以帮助到有需要的朋友。

box-sizing用于更改用于计算元素宽度和高度的默认的 CSS 盒子模型。它有content-box、border-box和inherit三种取值。inherit指的是从父元素继承box-sizing表现形式,不再冗赘。

## 1. 属性讲解

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

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

计算公式:

  1. width = width = border + padding + 内容宽度

  2. height = border + padding + 内容高度

## 2. 考虑盒子模型的margin
从上面可以知道,即时是border-box也是不计算margin,只是多余计算了borderpadding。因为borderpadding都是盒子模型的一部分,但是margin标记的是盒子和盒子的间距。所以,border-box的解释很符合常理。

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

实现如下效果图:

代码:源码下载

<!DOCTYPE html>
<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.me</title>
 <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>
 <p id="app">
 </p>
</body>
</html>

所以,当需要计算外边距(margin),可以配合css3中的四则运算(calc)来使用。

## 3. 使用建议

根据项目中的使用经验和w3c的建议,推荐将box-sizing属性设置为border-box。

* {
 margin: 0;
 padding: 0;
}
p {
 box-sizing: border-box;
}

下载本文
显示全文
专题