CSS之Box-sizing

W3C的标准盒模型:

这里写图片描述

IE的传统盒模型:

这里写图片描述

实例:

这里写图片描述

这里写图片描述

1.W3C 盒子模型的范围包括 margin、border、padding、content,并且 content 部分不包含其他部分

2.IE 盒子模型的范围也包括 margin、border、padding、content,和标准 W3C 盒子模型不同的是:IE 盒子模型的 content 部分包含了 border 和 pading

用内外盒来说的话,W3C标准浏览器的内盒宽度等于IE6以下版本浏览器的外盒宽度

下面开始我们今天的主题——CSS3的Box-sizing:

这里写图片描述

取值说明:

1.content-box:此值为其默认值,其让元素维持W3C的标准Box Model,也就是说元素的宽度/高度(width/height)等于元素边框宽度(border)加上元素内边距(padding)加上元素内容宽度/高度(content width/height)即:Element Width/Height = border+padding+content width/height

2.border-box:此值让元素维持IE传统的Box Model(IE6以下版本),也就是说元素的宽度/高度等于元素内容的宽度/高度。(从上面Box Model介绍可知,我们这里的content width/height包含了元素的border,padding,内容的width/height【此处的内容宽度/高度=width/height-border-padding】)

3.为了更能形像看出box-sizing中content-box和border-box两者的区别,我们先简单来看一人示例图,如下所示

这里写图片描述

从图上可以看出来,给W3C盒模型的元素设置的width属性值208px就只指定content的宽度,并不包括padding和border。而给IE盒模型的元素设置相同的width值208px是包涵了padding和border的

注:box-sizing现代浏览器都支持,但IE家族只有IE8版本以上才支持,虽然现代浏览器支持box-sizing,但有些浏览器还是需要加上自己的前缀,Mozilla需要加上-moz-,Webkit内核需要加上-webkit-,Presto内核-o-,IE8-ms-,所以box-sizing兼容浏览器时需要加上各自的前缀

实例1:

上面主要介绍了box-sizing的理论知识,我们还是理论和实践结合吧,下面就一起先来看一个简单点的例子

这里写图片描述

这里写图片描述

这里写图片描述

上面效果图让大家很明显的区分开了content-box和border-box的区别了,为了更好的理解,我截了一份他们在Firebug下的一layout分析图

这里写图片描述

结论:Layout分析图再次证明了box-sizing:content-box是维持了W3C的标准Box Model,而box-sizing:border-box是维持了IE传统(IE怪异模式)下的Box Model。

那么box-sizing主要运用在哪些方面呢?我总结了一下,第一点就是我们布局上,第二点就是表单元素上。为什么呢?我想大家在平时布局中都有碰到当两个块元素的宽度刚好是其父元素总宽度时我们布局不会有任何问题,但当你在其中一个块加上padding或border时(哪怕是1px)整个布局就会完全打乱,因为其总宽度超过了父元素的宽度。第二点表单元素,前面我提到过,form有很多元素还是使用的IE传统Box Model,针对这两点,box-sizing将在其身上发挥强大的作用

实例2:box-sizing拯救我们的布局

为了能更好的说明问题,我们先来模仿一个两栏布局,先来看其HTML Code

这里写图片描述

简单的分析一下,这里把LayoutDemo的div当作我们页中的body,而div#header是页面头部,div#left是页面左边栏,div#main-content是页面主内容,div#footer是页面的页脚,下面我们来模仿一个960的布局(比例缩小一半),我们加上平时布局的样式上去

这里写图片描述

这里写图片描述

到目前布局来说一点问题都没有,那是因为我们子元素宽度加起来刚好与元素的是相等,那么我们现在来变动一下,如果根据设计需要,每个块中内容都离边缘有10px的距离,那么我们先来看看基header,left,main-content,footer这几个块加一个padding:10px,看看有什么变化

这里写图片描述

上图清晰告诉我们,加了一个padding,恶梦就开始来了,header,footer撑破容器伸出去了,main-content也被掉到left的下面了。跟刚才当初的效果可是完全不一样的呀,有人可能会问,如果我不使用padding我只使用border什么怎么样呢?大家猜猜会怎么样?不用猜了,马上换个代码给大家看看,我们只要把刚才的padding注掉换成border,如下所示

这里写图片描述

这里写图片描述

上图是去掉了padding只加了10px的边框,同样把布局给打乱了。接着把padding和border同时加进去,反正都撑破了布局,就破罐子破摔。加上的效果如下

这里写图片描述

不上我说,大家都知道上图是因为加上了padding和border把布局给打乱了,下面主要看如何用box-sizing来修复这个撑破的布局,前面介绍了,上图中box-sizing是取了其默认值content-box,其Box Model完全符合W3C的标准,为了修复这样的布局,我们需要把Box Model改用IE传统下的解析,这样一加,我们给他加上下面box-sizing属性

这里写图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/407411.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

javascript学习系列(9):原数组发生变化的情况

最好的种树是十年前,其次是现在。歌谣 每天一个前端小知识 提醒你改好好学习了 知乎博主 csdn博主 b站博主 放弃很容易但是坚持一定很酷 我是歌谣 喜欢就一键三连咯 你得点赞是对歌谣最大的鼓励 1前言 在我们的日常开发中 不免会有很多需要处理数据的方法 本节主要说一说形…

阿里云设置域名解析到主机ip

A记录 使用场景 添加 A 记录可实现将域名指向 IP 地址。 设置方法 登录云解析DNS控制台在域名解析页面,全部域名页签下,单击域名,进入解析设置页面 在解析设置页面,单击 添加记录 按钮 添加记录会话框中各项参数的添加说明。 …

[Windows]python+PyQT+Eric安装配置

From: http://www.cnblogs.com/lhj588/archive/2011/10/05/2198472.html 一、大纲内容: 1、预备PC环境: 2、预备安装程序: 2、1、下载Python3.2 2、2、下载PyQt4 2、3、下载Eric5 3、安装配置步骤: 3、1、安装Pyhon3.2 3、2、安装Py…

CSS之BFC

1.BFC(Block Formatting Context)是Web页面中盒模型布局的CSS渲染模式。它的定位体系属于常规文档流 2.创建一个BFC 一个新的BFC可以通过给容器添加任何一个触发BFC的CSS样式,如overflow: scroll, overflow: hidden, display: flex, float: left,或者 display: tabl…

[导入]WINRAR 命令行语法[转载]

WINRAR 命令行语法 [ 2006-10-13 23:33:44 | 作者: 碳酸氢钠 ] Font Size: Large | Medium | Small 语法:RAR <命令> [-<开关>] <压缩包> <文件列表...> [<文件...>] [<解压缩路径\>]命令行选项(命令及开关)提供 RAR 创建及管理控制压缩包…

javascript学习系列(10):数组中的slice方法

最好的种树是十年前,其次是现在。歌谣 每天一个前端小知识 提醒你改好好学习了 知乎博主 csdn博主 b站博主 放弃很容易但是坚持一定很酷 我是歌谣 喜欢就一键三连咯 你得点赞是对歌谣最大的鼓励 1前言 在我们的日常开发中 不免会有很多需要处理数据的方法 本节主要说一说s…

SpringSide示例之HelloWorld

SpringSide是个什么东西呢&#xff1f;这么说吧&#xff0c;就是“采众家之长”的一个一站式框架&#xff0c;它吸取了开源界许多优秀组件的精华部分&#xff0c;非常简约的一个东西&#xff0c;具体就不多介绍了&#xff0c;自己可以参考官方文档。下面来看看运用这个框架实现…

CSS之viewports剖析

1.设备的pixels和CSS的pixels 首先你应当理解CSS的pixels&#xff0c;以及它和设备的pixels的区别 我们姑且认定设备的pixels为标准的pixels宽度。这些pixels决定了你工作所用的那些设备上正式的分辨率。在大多数情况下&#xff0c;能够从screen.width/height上取出具体值 如…

9个好用的搜索小技巧

百度一下&#xff0c;你就知道。搜索是我们常用的工具&#xff0c;怎么又快又准的搜索出想要的结果是现代人必备的技能&#xff0c;下面就教你9个好用的搜索小技巧吧 1 . 完全匹配搜索。 在查询词的外边加上双引号“”。 如 “北京地坛” &#xff0c;注意引号是不分中英文的…

javascript学习系列(11):数组中的findIndex方法

最好的种树是十年前,其次是现在。歌谣 每天一个前端小知识 提醒你改好好学习了 知乎博主 csdn博主 b站博主 放弃很容易但是坚持一定很酷 我是歌谣 喜欢就一键三连咯 你得点赞是对歌谣最大的鼓励 1前言 在我们的日常开发中 不免会有很多需要处理数据的方法 本节主要说一说f…

CSS之基于视窗单位的排版

1.使用视窗单位进行排版 这里还有一个为什么要考虑使用视窗单位进行排版的原因 - 根据客户端的浏览器&#xff0c;视窗单位会自动重新计算。这就意味着我们不需要显式声明媒体查询的字体大小 实例1&#xff1a;让我们用一个例子清楚地说明这一点 考虑下面的代码&#xff0c;…

React开发(111):写注释的方法

放上去会显示(method) Template.getDictionary(): void

数据库范式(1NF 2NF 3NF BCNF)详解

数据库的设计范式是数据库设计所需要满足的规范&#xff0c;满足这些规范的数据库是简洁的、结构明晰的&#xff0c;同时&#xff0c;不会发生插入&#xff08;insert&#xff09;、删除&#xff08;delete&#xff09;和更新&#xff08;update&#xff09;操作异常。反之则是…

再学 GDI+[98]: TGPImage(18) - 获取 GDI+ 图像格式对应的 GUID

和在 Net 中不同的是, 在具体指定图像格式时, 这里常常需要的不是格式名称, 而是格式的 GUID;知道了格式名称, 用 GetEncoderClsid 函数可以获取格式的 GUID;GetEncoderClsid 函数来自 GDIPUTIL 单元, 本例并没有用到前面一直不可或缺的 GDIPOBJ、GDIPAPI 单元.如果要获取 imag…

JS之连接数组方法concat

作用&#xff1a;用于连接两个或多个数组&#xff0c;该方法不会改变现有的数组&#xff0c;而仅仅会返回被连接数组的一个副本 语法&#xff1a;arrayObject.concat(arrayX,arrayX,……,arrayX) 参数&#xff1a;arrayX&#xff0c;必需。该参数可以是具体的值&#xff0c;也…

微信小程序:生命周期

下面从三个方面来介绍小程序的生命周期&#xff1a; &#xff08;1&#xff09;应用生命周期 &#xff08;2&#xff09;页面生命周期 &#xff08;3&#xff09;应用及页面生命周期的触发顺序 1.应用生命周期 App() 必须在 app.js 中调用&#xff0c;必须调用且只能调用一次…

在.NET3.5平台上使用LinQ to SQL + NBear 创建三层WEB应用

看了《一步一步学Linq to sql》和《在.NET 3.5 平台上使用LINQ to SQL创建三层/多层Web应用系统》 这两个系列文章后,因为一直使用NBear,所以试着综合了一下主要用NBear.IOC其它的NBear.data里的就没有会了,相应的使用LINQ来做数据处理. 之前一直使用NBear做些WEB应用主要感觉N…

JS之字符串连接方法join

作用&#xff1a;join() 方法用于把数组中的所有元素放入一个字符串&#xff0c;元素是通过指定的分隔符进行分隔的。&#xff08;作用和split正好相反&#xff09; 语法&#xff1a;arrayObject.join(separator) 参数&#xff1a;可选。指定要使用的分隔符。如果省略该参数&…