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动画效果之animation的常用样式
Mar 09 HTML / CSS
使用JS+CSS3技术:让你的名字动起来
Apr 27 HTML / CSS
css3 条纹化和透明化表格Firefox下测试成功
Apr 15 HTML / CSS
HTML5时代CSS设置漂亮字体取代图片
Sep 04 HTML / CSS
分享CSS3制作卡片式图片的方法
Jul 08 HTML / CSS
详解HTML5表单新增属性
Dec 21 HTML / CSS
用HTML5实现鼠标滚轮事件放大缩小图片的功能
Jun 25 HTML / CSS
HTML5页面中尝试调起APP功能
Sep 12 HTML / CSS
能用CSS实现的就不要麻烦JavaScript了
Oct 05 HTML / CSS
CSS基础详解
Oct 16 HTML / CSS
css 边框添加四个角的实现代码
Oct 16 HTML / CSS
HTTP中的Content-type详解
Jan 18 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获取程序执行的时间
2013/06/09 PHP
php+js iframe实现上传头像界面无跳转
2014/04/29 PHP
php实现求相对时间函数
2015/06/15 PHP
PHP数据的提交与过滤基本操作实例详解
2016/11/11 PHP
Laravel5.1 框架Request请求操作常见用法实例分析
2020/01/04 PHP
一个加密JavaScript的开源工具PACKER2.0.2
2006/11/04 Javascript
基于JQuery的密码强度验证代码
2010/03/01 Javascript
js function使用心得
2010/05/10 Javascript
基于jQuery的弹出警告对话框美化插件(警告,确认和提示)
2010/06/10 Javascript
Firefox中autocomplete=&quot;off&quot; 设置不起作用Bug的解决方法
2011/03/25 Javascript
js创建元素(节点)示例
2014/01/02 Javascript
禁止拷贝网页内容的js代码
2014/01/22 Javascript
在Mac OS下使用Node.js的简单教程
2015/06/24 Javascript
AngularJS 使用 UI Router 实现表单向导
2016/01/29 Javascript
简单讲解jQuery中的子元素过滤选择器
2016/04/18 Javascript
js H5 canvas投篮小游戏
2016/08/18 Javascript
BootStrap入门教程(一)之可视化布局
2016/09/19 Javascript
Node.js常用工具之util模块
2017/03/09 Javascript
解决vue router使用 history 模式刷新后404问题
2017/07/19 Javascript
vue2之简易的pc端短信验证码的问题及处理方法
2019/06/03 Javascript
jQuery实现checkbox全选、反选及删除等操作的方法详解
2019/08/02 jQuery
浅谈Vuex的this.$store.commit和在Vue项目中引用公共方法
2020/07/24 Javascript
python 解析XML python模块xml.dom解析xml实例代码
2014/02/07 Python
Python脚本判断 Linux 是否运行在虚拟机上
2015/04/25 Python
Python基于递归和非递归算法求两个数最大公约数、最小公倍数示例
2018/05/21 Python
python实现从文件中读取数据并绘制成 x y 轴图形的方法
2018/10/14 Python
解决webdriver.Chrome()报错:Message:'chromedriver' executable needs to be in Path
2019/06/12 Python
python 基于dlib库的人脸检测的实现
2019/11/08 Python
Python原始套接字编程实例解析
2020/01/29 Python
Django中Q查询及Q()对象 F查询及F()对象用法
2020/07/09 Python
全球知名旅游社区巴西站点:TripAdvisor巴西
2016/07/21 全球购物
Oral-B荷兰:牙医最推荐的品牌
2020/02/25 全球购物
幼儿园中班教学反思
2014/02/10 职场文书
二年级学生评语大全
2014/04/23 职场文书
团支部组织委员竞选稿
2015/11/21 职场文书
win10电脑双屏显示一个黑屏怎么办?win10电脑双屏显示一个黑屏解决方法
2022/07/15 数码科技