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 相关文章推荐
全面总结使用CSS实现水平垂直居中效果的方法
Mar 10 HTML / CSS
CSS3 简写animation
May 10 HTML / CSS
用纯css3实现的图片放大镜特效效果非常不错
Sep 02 HTML / CSS
纯CSS实现右侧底部悬浮效果(悬浮QQ、微信、微博、邮箱等联系方式)
Apr 24 HTML / CSS
详解CSS3阴影 box-shadow的使用和技巧总结
Dec 03 HTML / CSS
CSS3为背景图设置遮罩并解决遮罩样式继承问题
Jun 22 HTML / CSS
从一次项目重构说起CSS3自定义变量在项目的使用方法
Mar 01 HTML / CSS
Html5插件教程之添加浏览器放大镜效果的商品橱窗
Jan 07 HTML / CSS
Html5 canvas实现粒子时钟的示例代码
Sep 06 HTML / CSS
html+js 实现markdown编辑器效果
Oct 23 HTML / CSS
HTML页面滚动时部分内容位置固定不滚动的实现
Apr 14 HTML / CSS
CSS 左边固定宽右边自适应的6种方法
May 15 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
php 页面执行时间计算代码
2008/12/04 PHP
CI映射(加载)数据到view层的方法
2016/03/28 PHP
php封装json通信接口详解及实例
2017/03/07 PHP
PHP设计模式之状态模式定义与用法详解
2018/04/02 PHP
javascript 复杂的嵌套环境中输出单引号和双引号
2009/05/26 Javascript
jQuery EasyUI API 中文文档 - Panel面板
2011/09/30 Javascript
JavaScript操作XML 使用百度RSS作为新闻源示例
2012/02/17 Javascript
JS小功能(checkbox实现全选和全取消)实例代码
2013/11/28 Javascript
不提示直接关闭网页窗口的JS示例代码
2013/12/17 Javascript
JQuery实现表格动态增加行并对新行添加事件
2014/07/30 Javascript
深入解析JavaScript编程中的this关键字使用
2015/11/09 Javascript
jQuery实现选项卡切换效果简单演示
2015/12/09 Javascript
详解Angularjs中的依赖注入
2016/03/11 Javascript
JS函数定义方式的区别介绍
2016/03/22 Javascript
JS关闭窗口时产生的事件及用法示例
2016/08/20 Javascript
Javascript实现base64的加密解密方法示例
2017/06/27 Javascript
JS实现带导航城市列表以及输入搜索功能
2018/01/04 Javascript
Angular5.0 子组件通过service传递值给父组件的方法
2018/07/13 Javascript
深入Vue-Router路由嵌套理解
2018/08/13 Javascript
JavaScript函数定义方法实例详解
2019/03/05 Javascript
javaScript 实现重复输出给定的字符串的常用方法小结
2020/02/20 Javascript
原生js实现自定义难度的扫雷游戏
2021/01/22 Javascript
python字符串替换的2种方法
2014/11/30 Python
python实现梯度法 python最速下降法
2020/03/24 Python
python实现简单坦克大战
2020/03/27 Python
Django 设置admin后台表和App(应用)为中文名的操作方法
2020/05/10 Python
利用Python如何制作贪吃蛇及AI版贪吃蛇详解
2020/08/24 Python
悦木之源美国官网:Origins美国
2016/08/01 全球购物
Reformation官网:美国女装品牌
2018/09/14 全球购物
初二政治教学反思
2014/01/12 职场文书
情侣吵架检讨书
2014/02/05 职场文书
《赶海》教学反思
2014/04/20 职场文书
三方股东合作协议书
2014/10/28 职场文书
应届毕业生自荐信
2015/03/04 职场文书
《中国古代诗歌散文欣赏》高中语文教材
2019/08/20 职场文书
nginx proxy_cache 缓存配置详解
2021/03/31 Servers