CSS3属性box-sizing使用指南


Posted in HTML / CSS onDecember 09, 2014

box-sizing用于改变CSS盒子模型,从而改变元素宽高的计算方式。

box-sizing取值如下:

复制代码
代码如下:

box-sizing: content-box | padding-box | border-box

默认值是  content-box ,对应CSS2.1规范中标准的盒子模型计算方式,即 width 和 height 是内容区的宽与高, 不包括边框,内边距,外边距;

 padding-box 根据MDN的说法,目前还是一个实验性的属性, width 和 height 包括内容区和内边距,不包括边框和外边据;

 border-box 包括内边距与边框,不包括外边距。这是IE 怪异模式(Quirks mode)使用的 盒模型 。

例子(摘自MDN)

复制代码
代码如下:

/* support Firefox, WebKit, Opera and IE8+ */

.example {
-moz-box-sizing: border-box;
box-sizing: border-box;
}

对JS的影响
根据MDN的叙述:

由window.getComputedStyle 获取height时不会考虑box-sizing, 至少 Firefox 18 (bug 520992) 与 Internet Explorer 9 是这样,  不过Chrome 24 不是(其它浏览器未测试). 注意 IE9 currentStyle 不能返回正确的height值。

关于Firefox 18及IE9之后的版本,我还没有测试。

关于jQuery中 .width() 和 .height() 的返回值
jQuery 1.8 版本之后增加了对 box-sizing 的支持,但这还与浏览器是否支持 box-sizing 有关,简而言之,1.8版本之后, .width() 和 .height() 返回的永远都是内容区的宽和高,见如下代码:

复制代码
代码如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8"/>
<style type="text/css">
#container {
-moz-box-sizing: border-box;
box-sizing: border-box;
width: 500px;
padding: 5px;
border: 5px solid gold;
}
</style>
<script src="js/jquery-1.8.0.js"></script>
</head>
<body>
<div id="container"></div>
<script>
var $el = $('#container')
var w = $el.width();
console.log(w)
</script>
</body>
</html>

各浏览器打印结果如下

IE6/7 : 500
IE8/9/10: 480
Safari5/6: 480
Chrome21/Firefox14: 480
 IE6/7不支持box-sizing,内容区的宽度是500,所以输出的值也是500,而其他支持该属性的浏览器,内容区宽度减去了 padding 和 border 的值,变成了480.

另:jquery中的 .outerWidth() 和 .outerHeight() 方法不受影响。

HTML / CSS 相关文章推荐
CSS3教程(1):什么是CSS3
Apr 02 HTML / CSS
CSS3图片旋转特效(360/60/-360度)
Oct 10 HTML / CSS
一款纯css3实现的颜色渐变按钮的代码教程
Nov 12 HTML / CSS
浅析CSS3中鲜为人知的属性:-webkit-tap-highlight-color
Jan 12 HTML / CSS
CSS实现进度条和订单进度条的示例
Nov 05 HTML / CSS
html5使用Canvas绘图的使用方法
Nov 21 HTML / CSS
HTML5 解析规则分析
Aug 14 HTML / CSS
有关HTML5 Video对象的ontimeupdate事件(Chrome上无效)的问题
Jul 19 HTML / CSS
HTML5 Canvas画线技巧——实现绘制一个像素宽的细线
Aug 02 HTML / CSS
html5是什么_动力节点Java学院整理
Jul 07 HTML / CSS
导出HTML5 Canvas图片并上传服务器功能
Aug 16 HTML / CSS
html5移动端禁止长按图片保存的实现
Apr 20 HTML / CSS
使用css3实现的tab选项卡代码分享
Dec 09 #HTML / CSS
使用css3实现的windows8开机加载动画
Dec 09 #HTML / CSS
css3的transform中scale缩放详解
Dec 08 #HTML / CSS
css3实例教程 一款纯css3实现的发光屏幕旋转特效
Dec 07 #HTML / CSS
css3的transform造成z-index无效解决方案
Dec 04 #HTML / CSS
一款利用纯css3实现的超炫3D表单的实例教程
Dec 01 #HTML / CSS
一款纯css3实现的漂亮的404页面的实例教程
Nov 27 #HTML / CSS
You might like
Admin generator, filters and I18n
2011/10/06 PHP
PHP中对各种加密算法、Hash算法的速度测试对比代码
2014/07/08 PHP
CentOS下PHP安装Oracle扩展
2015/02/15 PHP
PHP实现获取某个月份周次信息的方法
2015/08/11 PHP
PHP的Json中文处理解决方案
2016/09/29 PHP
PHP让数组中有相同值的组成新的数组实例
2017/12/31 PHP
prototype 1.5 &amp; scriptaculous 1.6.1 学习笔记
2006/09/07 Javascript
checkbox全选/取消全选以及checkbox遍历jQuery实现代码
2009/12/02 Javascript
jQuery 核心函数以及jQuery对象
2010/03/23 Javascript
js静态方法与实例方法分析
2011/07/04 Javascript
php图像生成函数之间的区别分析
2012/12/06 Javascript
js判断文本框剩余可输入字数的方法
2015/02/04 Javascript
对Web开发中前端框架与前端类库的一些思考
2015/03/27 Javascript
jquery实现从数组移除指定的值
2015/06/24 Javascript
jQuery on()方法绑定动态元素的点击事件无响应的解决办法
2016/07/07 Javascript
js利用for in循环获取 一个对象的所有属性以及值的实例
2017/03/30 Javascript
ES6新特性之字符串的扩展实例分析
2017/04/01 Javascript
MUI顶部选项卡的用法(tab-top-webview-main)详解
2017/10/08 Javascript
基于Bootstrap表单验证功能
2017/11/17 Javascript
nodejs实现超简单生成二维码的方法
2018/03/17 NodeJs
详解Vue基于 Nuxt.js 实现服务端渲染(SSR)
2018/04/05 Javascript
vue-content-loader内容加载器的使用方法
2018/08/05 Javascript
bootstrap table表格插件之服务器端分页实例代码
2018/09/12 Javascript
node.js使用stream模块实现自定义流示例
2020/02/13 Javascript
JavaScript创建表格的方法
2020/04/13 Javascript
[45:46]2014 DOTA2国际邀请赛中国区预选赛5.21 HGT VS DT
2014/05/23 DOTA
Diango + uwsgi + nginx项目部署的全过程(可外网访问)
2018/04/22 Python
Django 路由控制的实现代码
2018/11/08 Python
Python中__repr__和__str__区别详解
2019/11/07 Python
英语系毕业生自荐信
2013/10/31 职场文书
我的五年职业生涯规划
2014/01/23 职场文书
旅游安全协议书
2014/04/21 职场文书
公司股东合作协议书
2014/09/14 职场文书
2014学习十八届四中全会精神思想汇报范文
2014/10/23 职场文书
2015年创先争优工作总结
2015/05/23 职场文书
详细谈谈JavaScript中循环之间的差异
2021/08/23 Javascript