CSS3属性box-sizing使用指南
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() 方法不受影响。
上一篇: 纯css3实现的竖形无限级导航
下一篇: 微信js获得签名signature
推荐阅读
-
利用CSS3 animation动画属性实现轮播图效果的方法详解
-
css3:box-shadow边框阴影属性值详解_html/css_WEB-ITnose
-
简单掌握CSS3中resize属性的用法
-
简单了解CSS3的all属性_html/css_WEB-ITnose
-
CSS3的opacity属性带来的层叠顺序问题解决方法
-
CSS3透明属性opacity_html/css_WEB-ITnose
-
分享CSS3里box-shadow属性的使用方法,包括内阴影box-shadow:inset
-
CSS3 Backgrounds属性相关介绍
-
css3的@media属性实现页面响应式布局示例代码
-
使用css3 属性如何丰富图片样式(圆角 阴影 渐变)