CSS 教程
1. CSS 教程 2. CSS 简介 3. CSS 语法 4. CSS Id 和 Class选择器 5. CSS 创建 6. CSS Backgrounds(背景) 7. CSS Text(文本) 8. CSS Fonts(字体) 9. CSS 链接(link) 10. CSS 列表样式(ul) 11. CSS Table(表格) 12. CSS 盒子模型 13. CSS Border(边框) 14. CSS 轮廓(outline)属性 15. CSS margin(外边距) 16. CSS padding(填充) 17. CSS 分组和嵌套 18. CSS 尺寸 (Dimension) 19. CSS Display(显示) 与 Visibility(可见性) 20. CSS Position(定位) 21. CSS Float(浮动) 22. CSS 布局 – 水平 & 垂直对齐 23. CSS 伪类 24. CSS 伪元素 25. CSS 导航栏 26. CSS 图片廊 27. CSS 图像透明/不透明 28. CSS 图像拼合技术 29. CSS 媒体类型 30. CSS 属性选择器 31. CSS 总结 32. CSS 实例 33. CSS3 教程 34. CSS3 简介 35. CSS3 边框 36. CSS3 背景 37. CSS3 文本效果 38. CSS3 字体 39. CSS3 2D 转换 40. CSS3 3D 转换 41. CSS3 过渡 42. CSS3 动画 43. CSS3 多列 44. CSS3 用户界面 45. CSS 图片 46. CSS 按钮 47. CSS 分页实例 48. CSS3 框大小 49. CSS3 弹性盒子 50. CSS3 多媒体查询 51. CSS3 多媒体查询实例

CSS3 框大小

CSS3 框大小

CSS3 box-sizing 属性可以设置 width 和 height 属性中包含了 padding(内边距) 和 border(边框)。


浏览器支持

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

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

属性
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 中)。

这个是个较小的框 (width 为 300px ,height 为 100px)。

这个是个较大的框 (width 为 300px ,height 为 100px)。

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

实例

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

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

55面试教程网 »

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

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


使用 CSS3 box-sizing 属性

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

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

两个 div 现在是一样大小的!

!

以下是两个 <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;
}

55面试教程网 »

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

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

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

实例

* {
    box-sizing: border-box;
}

55面试教程网 »