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控制台在域名解析页面,全部域名页签下,单击域名,进入解析设置页面 在解析设置页面,单击 添加记录 按钮 添加记录会话框中各项参数的添加说明。 …

python fabric实现远程操作和部署

博客迁往:新地址 (点击直达) 新博客使用markdown维护,线下有版本号库,自己写的所以会定时更新同步,同一时候提供更好的导航和阅读体验 csdn对markdown支持不好,所以旧版不会花时间进行同步修订&…

[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 创建及管理控制压缩包…

【计算机网络】端口和进程的区别

端口和进程的区别 用一个例子说明二者的区别 现在有一个手机&#xff0c;这个手机好比一个和外界通信的端口。 你现在想给你女朋友打电话&#xff0c;可是手机被占用了&#xff0c;你就开始大喊&#xff0c;谁拿了我的手机&#xff08;翻译一下就是&#xff1a;哪个进程占用…

[python]如何清屏?也就是实现clear?

import os os.system( cls ) 由此也可见,想要执行任何一条系统命令,都只需要执行os.system( COMMAND )就行了. 因此&#xff0c;在windows命令提示符下清屏就是&#xff1a;os.system("cls") 在linux终端下清屏就用&#xff1a;os.system("clear")

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

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

【官方文档】《暗黑世界V1.4》API说明!

指令号说明账号注册 100{username str 用户名password str 密码}返回信息{result bool 指令调用是否成功message str 指令调用返回的信息}账号登陆 101请求信息{username str 用户名password str 密码}返回信息{result bool …

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;注意引号是不分中英文的…

raw_input() 与 input() __ Python

>>> input ("my age is : ") my age is :23 23 >>> raw_input("my age is : ") my age is : 23 23 有什么不一样&#xff1f;再看一个例子 >>> age input(" how old r u ?") how old r u ?23 >>> p…

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

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

系统监控

SAP系统监控在生产系统中&#xff0c;我们要根据实际需要来进行实时监控系统&#xff0c;目的是为了保证系统的平稳运行在ERP系统中&#xff0c;我们的生产系统会部署在各个服务器节点上&#xff0c;每台服务器对应的客户端节点又有很多个尤其是在系统压力比较大的时候&#xf…

PKU 1061 青蛙的约会

/*扩展欧几里德求模线性方程 感谢logic_space的指正*/#include <iostream>#defineabs(a) ((a)<0?-(a):(a))usingnamespacestd; __int64 exGCD(__int64 a, __int64 b, __int64 &x, __int64 &y) { if(b 0) { x 1; y 0; return…

小程序根据手机机型设置自定义底部导航距离

需求: iponeX 以上机型,手机底部有弧度,自己写的导航栏会被遮住, 需要判断手机机型,做兼容设置. 解决: //app.js App({/*** 当小程序初始化完成时&#xff0c;会触发 onLaunch&#xff08;全局只触发一次&#xff09;*/onLaunch: function() {var that this;//获取手机型号…

CSS之基于视窗单位的排版

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

C++ STL 遍历 map 的时候如何删除其中的 element

首先看一段他人的一段文章&#xff1a;from: http://www.cnblogs.com/super119/archive/2011/10/11/2207541.html 我们通过map的erase(iterator it)方法删除元素的时候&#xff0c;如果此时erase处于遍历map的代码中&#xff0c;那么调用erase就需要小心一些。因为erase会导致…