程序员之家
程序员之家

CSS3 框大小


CSS3 box-sizing 属性可以设置 width height

属性中包含了 padding(内边距) 和 border(边框)。


浏览器支持

表格中的数字表示支持该属性的第一个浏览器的版本号。

紧跟在数字后面的 -webkit- 或 -moz- 为指定浏览器的前缀。

属性 Chrome Edge Firefox Safri Opera
box-sizing 10.0
4.0 -webkit-
8.0 29.0
2.0 -moz-
5.1
3.1 -webkit-
9.5

不使用 CSS3 box-sizing 属性

默认情况下,元素的宽度与高度计算方式如下:

width(宽) + padding(内边距) + border(边框) = 元素实际宽度

height(高) + padding(内边距) + border(边框) = 元素实际高度

这就意味着我们在设置元素的 width/height 时,元素真实展示的高度与宽度会更大(因为元素的边框与内边距也会计算在 width/height 中)。

以下两个 <div> 元素虽然宽度与高度设置一样,但真实展示的大小不一致,因为 div2 指定了内边距:

.div1 {
    width: 300px;
    height: 100px;
    border: 1px solid blue;
}

.div2 {
    width: 300px;
    height: 100px;
    padding: 50px;
    border: 1px solid red;
}

使用这种方式如果想要获得较小的那个框且包含内边距,就不得不考虑到边框和内边距的宽度。

CSS3 的 box-sizing 属性很好的解决了这个问题。


使用 CSS3 box-sizing 属性

CSS3 box-sizing 属性在一个元素的 width 和 height 中包含 padding(内边距) 和 border(边框)。

如果在元素上设置了 box-sizing: border-box; 则 padding(内边距) 和 border(边框) 也包含在 width 和 height 中:

以下是两个 <div> 元素添加 box-sizing: border-box; 属性的简单实例。

.div1 {
    width: 300px;
    height: 100px;
    border: 1px solid blue;
    box-sizing: border-box;
}

.div2 {
    width: 300px;
    height: 100px;
    padding: 50px;
    border: 1px solid red;
    box-sizing: border-box;
}

从结果上看 box-sizing: border-box; 效果更好,也正是很多开发人员需要的效果。

以下代码可以让所有元素以更直观的方式展示大小。很多浏览器已经支持 box-sizing: border-box; (但是并非所有 - 这就是为什么 input 和 text 元素设置了 width: 100%; 后的宽度却不一样)。

所有元素使用 box-sizing 是比较推荐的:

* {
    box-sizing: border-box;
}

手机扫码阅读本文


本文来自互联网,本网站转载的目的在于传递更多信息以供访问者学习参考,所属内容只代表原作者的个人观点,不代表本网站的立场和价值判断,版权归原作者所有。如有侵犯您的版权,请联系我们,我们收到后会尽快核实并第一时间改正。


手机扫码阅读本文

HTML5权威指南【图】
HTML5权威指南

全面详实的Web网页设计参考书

Vue.js 3+TypeScript完全指南(博文视点出品)【图】
Vue.js 3+TypeScript完全指南(博文视点出品)

资深前端技术大佬coderwhy经验分享,全面介绍Vue.js3和TypeScript前端开发技术及核心原理,手写Mini-Vue.js3框架

前端工程化:基于Vue.js 3.0的设计与实践【图】
前端工程化:基于Vue.js 3.0的设计与实践

这是一本从0到1详细介绍前端工程化开发的指导手册前端开发领域多位大咖鼎力推荐.前端开发新技能 Vue3 爱猫的程序开发大咖倾力之作

css3 css3-box-sizing