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中31种选择器使用方法教程
Dec 05 HTML / CSS
利用纯css3实现的文字亮光特效的代码演示
Nov 27 HTML / CSS
用CSS3实现无限循环的无缝滚动的示例代码
Nov 01 HTML / CSS
CSS3 文字动画效果
Nov 12 HTML / CSS
详解Canvas事件绑定
Jun 27 HTML / CSS
HTML5梦幻之旅——炫丽的流星雨效果实现过程
Aug 06 HTML / CSS
基于html5实现的图片墙效果
Oct 16 HTML / CSS
HTML5之tabindex属性全面解析
Jul 07 HTML / CSS
html5中audio支持音频格式的解决方法
Aug 24 HTML / CSS
html5自定义video标签的海报与播放按钮功能
Dec 04 HTML / CSS
HTML5 HTMLCollection和NodeList的区别详解
Apr 29 HTML / CSS
HTML5拖拽文件上传的示例代码
Mar 04 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
制作美丽的拉花
2021/03/03 冲泡冲煮
从一个不错的留言本弄的mysql数据库操作类
2007/09/02 PHP
php分页代码学习示例分享
2014/02/20 PHP
PHP的Yii框架中Model模型的学习教程
2016/03/29 PHP
利用PHP访问带有密码的Redis方法示例
2017/02/09 PHP
jquery获得页面元素的坐标值实现思路及代码
2013/04/15 Javascript
使用indexOf等在JavaScript的数组中进行元素查找和替换
2013/09/18 Javascript
javascript 表格内容排序 简单操作示例代码
2014/01/03 Javascript
禁用页面部分JavaScript不是全部而是部分
2014/09/03 Javascript
NodeJS学习笔记之(Url,QueryString,Path)模块
2015/01/13 NodeJs
js父页面中使用子页面的方法
2016/01/09 Javascript
浅谈js的url解析函数封装
2016/06/28 Javascript
Bootstrap源码解读排版(1)
2016/12/23 Javascript
纯JS实现表单验证实例
2016/12/24 Javascript
ES6中的Promise代码详解
2017/10/09 Javascript
JS中判断字符串存在和非空的方法
2018/09/12 Javascript
Vue.js样式动态绑定实现小结
2019/01/24 Javascript
element-ui table组件如何使用render属性的实现
2019/11/04 Javascript
解决Vue的项目使用Element ui 走马灯无法实现的问题
2020/08/03 Javascript
Python正则表达式教程之一:基础篇
2017/03/02 Python
Python和C/C++交互的几种方法总结
2017/05/11 Python
浅谈python内置变量-reversed(seq)
2017/06/21 Python
Python基础学习之常见的内建函数整理
2017/09/06 Python
python验证码识别实例代码
2018/02/03 Python
python爬取足球直播吧五大联赛积分榜
2018/06/13 Python
详解pandas数据合并与重塑(pd.concat篇)
2019/07/09 Python
HTML5 的新的表单元素(datalist/keygen/output)使用介绍
2013/07/19 HTML / CSS
HTML5 文件上传下载的实例代码
2017/07/03 HTML / CSS
Rakuten Kobo台湾:电子书、eReaders和Reading应用程式
2017/11/24 全球购物
XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式?
2016/01/12 面试题
大学同学会活动方案
2014/08/20 职场文书
捐款感谢信
2015/01/20 职场文书
父亲节寄语大全
2015/02/27 职场文书
装饰施工员岗位职责
2015/04/11 职场文书
2016暑期政治学习心得体会
2016/01/23 职场文书
MongoDB数据库之添删改查
2022/04/26 MongoDB