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轻松实现圆角效果
Nov 09 HTML / CSS
HTML5时代CSS设置漂亮字体取代图片
Sep 04 HTML / CSS
纯CSS实现右侧底部悬浮效果(悬浮QQ、微信、微博、邮箱等联系方式)
Apr 24 HTML / CSS
利用css3画个同心圆示例代码
Jul 03 HTML / CSS
使用HTML5 IndexDB存储图像和文件的示例
Nov 05 HTML / CSS
HTML5的标签的代码的简单介绍 HTML5标签的简介
May 28 HTML / CSS
html5文字阴影效果text-shadow使用示例
Jul 25 HTML / CSS
不可轻视HTML5!App三年内将被html5顶替彻底消失
Nov 18 HTML / CSS
用html5的canvas和JavaScript创建一个绘图程序的简单实例
Jul 06 HTML / CSS
关于h5中的fetch方法解读(小结)
Nov 15 HTML / CSS
html5视频媒体标签video的使用方法及完整参数说明详解
Sep 27 HTML / CSS
用position:sticky完美解决小程序吸顶问题的实现方法
Apr 24 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无限分类的类
2007/01/02 PHP
php部分常见问题总结
2008/03/27 PHP
两个php日期控制类实例
2014/12/09 PHP
[原创]ThinkPHP中SHOW_RUN_TIME不能正常显示运行时间的解决方法
2015/10/10 PHP
PHP 实现的将图片转换为TXT
2015/10/21 PHP
详解WordPress中提醒安装插件以及隐藏插件的功能实现
2015/12/25 PHP
PHP实现字母数字混合验证码功能
2019/07/11 PHP
jQuery 使用手册(六)
2009/09/23 Javascript
js关闭当前页面(窗口)的几种方式总结
2013/03/05 Javascript
jQuery中Form相关知识汇总
2015/01/06 Javascript
JQuery实现防止退格键返回的方法
2015/02/12 Javascript
jQuery使用hide方法隐藏指定元素class样式用法实例
2015/03/30 Javascript
js图片轮播手动切换特效
2017/01/12 Javascript
angularjs实现的前端分页控件示例
2017/02/10 Javascript
js实现省份下拉菜单效果
2017/02/15 Javascript
使用 Node.js 对文本内容分词和关键词抽取
2017/05/27 Javascript
Angular中支持SCSS的方法
2017/11/18 Javascript
Vue侧滑菜单组件——DrawerLayout
2017/12/18 Javascript
在vue 中使用 less的教程详解
2018/09/26 Javascript
前端面试知识点目录一览
2019/04/15 Javascript
react 中父组件与子组件双向绑定问题
2019/05/20 Javascript
解决layui表格的表头不滚动的问题
2019/09/04 Javascript
几个提升Python运行效率的方法之间的对比
2015/04/03 Python
Python 元类实例解析
2018/04/04 Python
python如何写try语句
2020/07/14 Python
super关键字的用法
2012/04/10 面试题
简述数据库的设计过程
2015/06/22 面试题
本科生个人求职自荐信
2013/09/26 职场文书
商场促销活动方案
2014/02/08 职场文书
总会计师岗位职责
2014/02/19 职场文书
公司投资建议书
2014/05/16 职场文书
老公婚前保证书
2015/02/28 职场文书
农业项目投资意向书
2015/05/09 职场文书
《女娲补天》读后感5篇
2019/12/31 职场文书
Element实现动态表格的示例代码
2021/08/02 Javascript
MySQL限制查询和数据排序介绍
2022/03/25 MySQL