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 相关文章推荐
纯HTML+CSS3制作导航菜单(附源码)
Apr 24 HTML / CSS
CSS3中:nth-child和:nth-of-type的区别深入理解
Mar 10 HTML / CSS
CSS3 Media Queries详细介绍和使用实例
May 08 HTML / CSS
简单几步用纯CSS3实现3D翻转效果
Jan 17 HTML / CSS
CSS3 边框效果
Nov 04 HTML / CSS
HTML5如何实现元素拖拽
Mar 11 HTML / CSS
html5指南-6.如何创建离线web应用程序实现离线访问
Jan 07 HTML / CSS
html5使用canvas绘制文字特效
Dec 15 HTML / CSS
解析HTML5的存储功能和web SQL的相关操作方法
Feb 19 HTML / CSS
iframe在移动端的缩放的示例代码
Oct 12 HTML / CSS
webView加载html图片遇到的问题解决
Oct 08 HTML / CSS
html5表单的required属性使用
Jul 07 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
基于AppServ,XAMPP,WAMP配置php.ini去掉警告信息(NOTICE)的方法详解
2013/05/07 PHP
Symfony控制层深入详解
2016/03/17 PHP
php实现生成验证码实例分享
2016/04/10 PHP
Yii框架组件和事件行为管理详解
2016/05/20 PHP
详解PHP中cookie和session的区别及cookie和session用法小结
2016/06/12 PHP
Yii框架自定义数据库操作组件示例
2019/11/11 PHP
跟我一起学写jQuery插件开发方法(附完整实例及下载)
2010/04/01 Javascript
nodejs win7下安装方法
2012/05/24 NodeJs
javascipt匹配单行和多行注释的正则表达式
2013/11/20 Javascript
在页面上用action传递参数到后台出现乱码的解决方法
2013/12/31 Javascript
JQuery异步加载无限下拉框级联功能实现示例
2014/02/19 Javascript
js语法学习之判断一个对象是否为数组
2014/05/13 Javascript
使用jQuery实现input数值增量和减量的方法
2015/01/24 Javascript
浅谈Javascript中Object与Function对象
2015/09/26 Javascript
AngularJS中watch监听用法分析
2016/11/04 Javascript
详解用vue.js和laravel实现微信授权登陆
2017/06/23 Javascript
node.js实现的装饰者模式示例
2017/09/06 Javascript
微信小程序媒体组件详解(视频,音乐,图片)
2017/09/19 Javascript
基于vue2实现左滑删除功能
2017/11/28 Javascript
浅谈 vue 中的 watcher
2017/12/04 Javascript
浅谈webpack-dev-server的配置和使用
2018/05/17 Javascript
[54:08]LGD女子刀塔学院 DOTA2炼金术士教学
2014/01/09 DOTA
深入讲解Python中面向对象编程的相关知识
2015/05/25 Python
将Python代码嵌入C++程序进行编写的实例
2015/07/31 Python
python中range()与xrange()用法分析
2016/09/21 Python
使用python实现下载我们想听的歌曲,速度超快
2020/07/09 Python
CSS3中HSL和HSLA的简单使用示例
2015/07/14 HTML / CSS
Html5新标签解释及用法
2012/02/17 HTML / CSS
Expedia丹麦:全球领先的旅游网站
2018/03/18 全球购物
上海微创软件面试题
2012/06/14 面试题
“向国旗敬礼”活动策划方案(4篇)
2014/09/27 职场文书
会议开幕词
2015/01/28 职场文书
2015年检验科工作总结
2015/04/27 职场文书
小学班主任教育随笔
2015/08/15 职场文书
详解Go语言中配置文件使用与日志配置
2022/06/01 Golang
html用代码制作虚线框怎么做? dw制作虚线圆圈的技巧
2022/12/24 HTML / CSS