深入理解CSS盒子模型
在CSS中浮动、定位和盒子模型,都是很核心的东西,其中盒子模型是CSS很重要基石之一,感觉还是很有必要把CSS盒子模型相关知识更新一下......
CSS盒子模型<BoxModel>示意图


通过CSS盒子模型示意图所示,我们知道由内到外内容<content>、填充<padding>、边框<border>、外边距<margin>组成盒子模型
CSS盒子模型宽度
a.设置固定宽度的情况下,在盒子模型中,在没有使用box-sizing情况下,设置的宽度都是内容宽度,不是整个盒子的宽度。看例子如下
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<style>
body {
margin: 0;
padding: 0;
}
.boxModel {
width: 300px;
border: 5px solid #00AABB;
padding: 10px;
margin: 15px;
}
</style>
</head>
<body>
<div class="boxModel">盒子模型组成部分:
自身内容:width、height
宽高内边距: padding
盒子边框:border
边框线与其他盒子距离:margin外边距内容+内边距+边框+外边距=面积</div>
</body>
</html>
F12打开浏览器控制台,此时我们设置的宽度都是内容宽度,不是整个盒子的宽度。区分这一点是很重要的!!!

而整个盒子模型宽度面积计算是(内容宽度 + border宽度*2 + padding宽度*2 )之和.
即: 盒子模型宽度 = 内容的宽度 + 内边距*2 + 边框*2
说明浏览器对盒子模型解析存在不一致情况(ie盒子模型与为w3c盒子模型)
在上述案例中为boxModel类名使用使用属性名box-sizing属性值border-box(有关box-sizing请点击box-sizing重置盒子模型计算规则)

这样就使得设置的width值,变成整个盒子模型宽度,使得在盒子模型宽度面积保持不变的情况下,改变padding内边距/border边框值时,内容宽度自动缩小

盒子模型宽度 = 内容的宽度 + 内边距*2 + 边框*2 (不包括margin)
CSS盒子模型外边距叠加
对于css盒子模型在垂直方向上两个盒子外边距相遇时,形成一个外边距,这个外边距的高度等于两个发生叠加外边距的高度中的取最大值.
情景一.垂直方向单纯段落<p>标签并列情况
重置<p>标签默认外边距margin值为16px.这里<p>标签叠加后的外边距是16px而不是32px

情景二.垂直方向标签之间嵌套情况
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<style>
body {
background-color: #efefef;
}
.box {
margin: 25px;
}
p {
background-color: #FF1493;
margin: 16px;
}
</style>
</head>
<body>
<div class="box">
<p>文本外边距测试</p>
</div>
</body>
</html>

(body浏览器默认外边距margin是8px )

这里垂直外边距取最大25px,而不是49px哦!!! 当然在水平方向外边距上是49px
在水平方向上,两个盒子外边距是两盒子外边距之和
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>盒子模型水平方向外边距</title>
<style>
.wrap {
font-size: 0;
}
.box-1 {
width: 100px;
height: 100px;
background-color: #00AABB;
margin-right: 10px;
display: inline-block;
}
.box-2 {
width: 100px;
height: 100px;
background-color: #FF1493;
margin-left: 15px;
display: inline-block;
}
</style>
</head>
<body>
<div class="wrap">
<div class="box-1"></div>
<div class="box-2"></div>
</div>
</body>
</html>

归纳总结 margin外边距在水平方向外边距累加; margin垂直方向合并,合并规则大吃小(外边距大的值吃掉外边距小的值)
2种盒子模型说明
a.W3C标准盒子模型

标准盒子模型 = 内容的宽度(不包含border+padding)
b.IE盒子模型

IE盒子模型width = padding+border+内容
2种盒子模型说明
- 假如不用
doctype声明,那么各个浏览器会根据自己的标准去解析网页,即ie浏览器会采用ie盒子模型去解析盒子模型,而 Chrome浏览器会采用标准w3c盒子模型解析盒子,所以网页在不同的浏览器中就显示的不一样了。 - 反之,使用
doctype声明,那么所有浏览器都会采用标准w3c盒子模型解析盒子,网页就能在各个浏览器统一显示。 - 在使用
doctype声明情况下,设置属性box-sizing:border-box就可以定义使用ie盒模型
【参考资料】
《精通CSS高级Web标准解决方案》(第2版)
《CSS设计指南》(第三版)
http://www.cnblogs.com/cchyao/archive/2010/07/12/1775846.html
深入理解CSS盒子模型的更多相关文章
- <转>HTML+CSS总结/深入理解CSS盒子模型
原文地址:http://www.chinaz.com/design/2010/1229/151993.shtml 前言:前阵子在做一个项目时,在页面布局方面遇到了一点小问题,于是上stackoverf ...
- 理解CSS盒子模型
概述 网页设计中常听的属性名:内容(content).填充(padding).边框(border).边界(margin),CSS盒子模型都具备这些属性,也主要是这些属性. 这些属性我们可以把它转移到我 ...
- 聊聊css盒子模型
css盒子模型原理: 在网页设计中常听的属性名:内容(content).填充/内边距(padding).边框(border).外边距(margin), CSS盒子模式都具备这些属性. 这些属性我们可以 ...
- CSS盒子模型的理解
标准的CSS盒子模型包括:内容(content).填充(padding).边框(border).边界(margin) 这些属性,可以把它转移到我们日常生活中的盒子(箱子)上来理解,日常生活中所见的盒子 ...
- css 盒子模型理解
盒子模型是html+css中最核心的基础知识,理解了这个重要的概念才能更好的排版,进行页面布局.下面是自己积累和总结的关于css盒子模型的知识^_^,希望对初学者有用. 一.css盒子模型概念 CSS ...
- css盒子模型的深入理解,在块级、行内元素的区别和特性
css盒子模型用于处理元素的内容.内边距.边框和外边距的方式简称.元素框的最内部分是实际的内容,直接包围内容的是内边距.内边距呈现了元素的背景.内边距的边缘是边框.边框以外是外边距,外边距默认是透明的 ...
- 几个容易出错的css盒子模型细节
css是前端必须掌握的技能之一.其中的box模型,如图所示: 大体就是border.margin.padding和content,概念挺好理解.但当盒子模型与其他属性一块使用时产生的现象,或许您还难以 ...
- CSS盒子模型之详解
前言: 盒子模型是css中最核心的基础知识,理解了这个重要的概念才能更好的排版,进行页面布局.一.css盒子模型概念 CSS盒子模型 又称框模型 (Box Model) ,包含了元 ...
- 前端面试必备的css盒子模型
今天同学发给了我一份前端基础的面试题,第一道便是对css盒子模型的理解,我看到的第一眼想到的是div,然后就...懵逼了,知其然不知其所以然.所以打算写一写盒子模型的概念理解啥的,如有写的不当的地方, ...
随机推荐
- 如果用css的border属性画一个三角形
假设页面中有个div,如何通过css做一个三角形.这是我们项目中用到的今天就稍微总结下.顺便说一句偷偷写博客的感觉还挺爽 div { width: 0; height: 0; border-top: ...
- Ajax_04之jQuery中封装的Ajax函数
1.PHP中json_encode编码规则: PHP索引数组编码为JSON:[...] PHP关联数组编码为JSON:{...}2.jQuery中AJAX封装函数之load: ①使用:$('选择器') ...
- Tips for newbie to read source code
This post is first posted on my WeChat public account: GeekArtT Reading source code is always one bi ...
- 搜狗输入法wp风格皮肤
换了个nexus 发现输入法真的没有wp的好用 没办法,刚好搜狗输入法有定制皮肤的选项,所以自己做了个wp风格的输入法皮肤. 一点微小的工作 http://pan.baidu.com/s/1kVsHd ...
- CSS系列:CSS中盒子模型
盒子模型是CSS控制页面时一个很重要的概念.所有页面中的元素都可以看成是一个盒子,占据着一定的页面空间.可以通过调整盒子的边框和距离等参数,来调节盒子的位置和大小. 1. 盒子的内部结构 在CSS中, ...
- C#设计模式系列:开闭原则(Open Close Principle)
1.开闭原则简介 开闭原则对扩展开放,对修改关闭,开闭原则是面向对象设计中可复用设计的基石. 2.开闭原则的实现 实现开闭原则的关键就在于抽象,把系统的所有可能的行为抽象成一个抽象底层,这个抽象底层规 ...
- Android之SqlLite数据库使用
每个应用程序都要使用数据,Android应用程序也不例外,Android使用开源的.与操作系统无关的SQL数据库—SQLite.SQLite第一个Alpha版本诞生于2000年5月,它是一款轻量级数据 ...
- MVC实用架构设计(三)——EF-Code First(5):二级缓存
前言 今天我们来谈谈EF的缓存问题. 缓存对于一个系统来说至关重要,但是是EF到版本6了仍然没有见到有支持查询结果缓存机制的迹象.EF4开始会把查询语句编译成存储过程缓存在Sql Server中,据说 ...
- Ruby之入门(一)
前言 这门语言很少去听过,可能是没怎么用到就不会听到太多关于ruby的消息,工作需要这门语言,需要从0开始学习这门语言,慢慢学习简直...太神奇了...,原谅我见识浅薄.原来很早就已经出世了,园子中也 ...
- ksoap调用webservice
Web service是一个平台独立的,低耦合的,自包含的.基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述.发布.发现.协调和配置这些应用程序,用于开发分布 ...