前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >”盒模型“之如何防止边框和内边距把元素撑开

”盒模型“之如何防止边框和内边距把元素撑开

作者头像
marsggbo
发布2018-01-23 16:02:33
1.3K0
发布2018-01-23 16:02:33
举报

在我们讨论宽度的时候,我们应该讲下与它相关的一个重点知识:盒模型。当你设置了元素的宽度,实际展现的元素却能够超出你的设置:因为元素的边框和内边距会撑开元素。看下面的例子,两个相同宽度的元素显示的实际宽度却不一样。

代码语言:javascript
复制
.simple {
  width: 500px;
  margin: 20px auto;
}

.fancy {
  width: 500px;
  margin: 20px auto;
  padding: 50px;
  border-width: 10px;
}

<div class="simple">

我小一些...

</div>

<div class="fancy">

我比它大!

</div>

以前有一个代代相传的解决方案是数学。CSS开发者需要用比他们实际想要的宽度小一点的宽度,需要减去内边距和边框的宽度。值得庆幸地是你不需要再这么做了...

经过了一代又一代人们意识到数学不好玩,所以他们新增了一个叫做 box-sizing 的CSS属性。当你设置一个元素为 box-sizing: border-box; 时,此元素的内边距和边框不再会增加它的宽度。这里有一个与前一页相同的例子,唯一的区别是两个元素都设置了 box-sizing: border-box; :

代码语言:javascript
复制
.simple {
  width: 500px;
  margin: 20px auto;
  -webkit-box-sizing: border-box;
     -moz-box-sizing: border-box;
          box-sizing: border-box;
}

.fancy {
  width: 500px;
  margin: 20px auto;
  padding: 50px;
  border: solid blue 10px;
  -webkit-box-sizing: border-box;
     -moz-box-sizing: border-box;
          box-sizing: border-box;
}

<div class="simple">

我们现在一样大小了!

</div>

”盒模型“之如何防止边框和内边距把元素撑开 - marsggbo - 火星教教主
”盒模型“之如何防止边框和内边距把元素撑开 - marsggbo - 火星教教主

<div class="fancy">

万岁!

</div>

”盒模型“之如何防止边框和内边距把元素撑开 - marsggbo - 火星教教主
”盒模型“之如何防止边框和内边距把元素撑开 - marsggbo - 火星教教主

既然没有比这更好的方法,一些CSS开发者想要页面上所有的元素都有如此表现。所以开发者们把以下CSS代码放在他们页面上:

代码语言:javascript
复制
* {
  -webkit-box-sizing: border-box;
     -moz-box-sizing: border-box;
          box-sizing: border-box;
}

这样可以确保所有的元素都会用这种更直观的方式排版。

既然 box-sizing 是个很新的属性,目前你还应该像我之前在例子中那样使用 -webkit- 和-moz- 前缀。这可以启用特定浏览器实验中的特性。同时记住它是支持IE8+

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-03-26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档