深入理解盒子模型

  盒子模型是CSS控制页面的基础。需要清楚“盒子”的含义是什么,以及盒子的组成。此外,应该理解DOM的基本概念,以及DOM树是如何与一个HTML文档对应的,在此基础上充分理解“标准流”的概念。

3.1 盒子的内部结构

  padding-border-margin模型是一个极其通用的描述矩形对象布局形式的方法。这些矩形对象被统称为”盒子“,英文为”Box“。 模型 就是对某种事物的本质特性的抽象。

  在CSS中,一个独立的盒子模型由content(内容)、border(边框)、padding(内边距)和margin(外边距)4个部分组成。

  一个盒子实际所占有的宽度(或高度)是由”内容+内边距+边框+外边距“组成的。在CSS中可以通过设定width和height的值来控制内容所占的矩形的大小。

3.2 边框(border)

  border一般用于分隔不同元素,border的外围即为元素的最外围,因此计算元素实际的宽和高时,就要将border纳入。

  border的属性主要有3个,分别是 color(颜色)、width(粗细)和style(样式)。在使用CSS设置边框的时候,可以分别使用 border-color、border-width、border-style设置它们。

  border-color指定border的颜色。通常设置为十六进制的值,如#336699,可以缩写为 #369

  border-width指定border的粗细程度,可以设为thin、medium、thick和<length>(指具体的数值)。 默认值为”medium“,一般浏览器解析为2px宽。

  border-style,可以设为 none、hidden、dotted、dashed、solid、double、groove、ridge、inset和outset等。其中none和hidden都不显示border,在运用表格中时,hidden可以用来解决边框冲突的问题。

3.2.1 实验1-border-style

  

3.2.2 属性值的简写形式

  1. 对不同的边框设置不同的属性值

    设别设置border-color,border-width,border-style这3个属性,是对上下左右4个边框同时产生作用。还可以设置不同属性值:

    A. 如果给出2个属性值,前者表示 上下边框的属性,后者表示 左右边框;

      B. 如果给出3个属性值,前者表示上边框的属性,中间数值表示左右边框的属性,后者表示下边框的属性;

    C. 如果给出4个属性值,依次表示:上、右、下、左边框的属性,即顺时针排序。

  2. 对一条边框设置与其他边框不同的属性。如设置左边框的颜色为红色,可写作:border-left-color:red;

    当有多条规则作用于同一个边框时,会产生冲突,后面的设置会覆盖前面的设置。

3.2.3 实验2-属性的缩写形式

3.2.4 实验3-边框与背景

  在给元素设置background-color背景色时,IE作用的区域为 content+padding,而Firefox则是 content+padding+border。 

3.3 内边距(padding)

  padding 又称为内边距,用于控制内容与边框之间的距离。

  当一个盒子设置了背景图像后,默认情况下背景图像覆盖的范围是padding和内容组成的范围,并以padding的左上角为基准点平铺背景图像。

  IE浏览器: 背景色覆盖 padding+内容; 火狐浏览器 border+padding+内容。

3.4 外边距 (margin)

  margin指的是元素与元素之间的距离。

  从直观上而言,margin用于控制块与块之间的距离。倘若将盒子模型比作展览馆里展出的一幅幅画,那么content就是画面本身,padding就是画面与画框之间的留白,border就是画框,而margin就是画与画之间的距离。

3.5 盒子之间的关系

  CSS规范的思路是:首先确定确定一种标准的排版模式,这样可以保证设置的简单化,各种网页元素构成的盒子按照这种标准的方式排列布局。这种方式就是”标准流"方式.

3.5.1 HTML和DOM

  DOM是 Document Object Model的缩写,即“文档对象模型”。一个网页的所有元素组织在一起,就构成了一个棵“DOM”树。

  一个HTML文档并不是一个简单的文本文件,而是一个具有层次结构的逻辑文档,每一个HTML元素都作为这个层次结构中的一个节点存在。每个节点反应在浏览器上回具有不同的表现形式,具体的表现形式是由CSS来决定的。

  CSS的目的是使网页的表现形式与内容结构分离,CSS控制网页的表现形式,HTML控制网页的内容结构。

3.5.2 标准文档流

  “标准文档流”简称“标准流”。指在不适用其他的与排版和定位相关的特殊CSS规则是,各种元素的排列规则。

  1. 块级元素(block level)

    总是以一个块的形式表现出来,并且跟同级的兄弟块依次竖直排列,左右撑满。

  2. 行内元素(inline)

    标记本身不占有独立的区域,仅仅实在其他元素的基础上指出了一定的范围。

  行内元素在DOM树种同样是一个节点。从DOM的角度来看,块级元素和行内元素是没有区别的,都是树上的一个节点;而从CSS的角度来看,二者有很大的区别,块级元素拥有自己的区域,行内元素则没有。

  标准流就是CSS规定的默认的块级元素和行内元素的排列方式。

3.5.3 <div>标记和<span>标记

  <div>是一个块级元素,他保卫的元素会自动换行。而<span>仅仅是一个行内元素,在它的前后不会换行。

3.6 盒子在标准流中的定位原则

3.6.1 实验1-行内元素之间的水平margin

  当两个行内元素紧邻时,他们之间的距离为 第一个元素的 margin-right 加上第2个元素的margin-left。

3.6.2 实验2-块级元素之间的竖直margin

  两个竖直块级元素之间的距离不是margin-bottom与margin-top的总和,而是两者中的较大者。这个现象称为 margin 的“塌陷”现象。

3.6.3 实验3-嵌套盒子之间的margin

  如果父div的高度值小于子块div的高度加上margin的值,此时IE浏览器会自动扩大,保持子元素的margin-bottom的空间以及父元素自身的padding-bottom。而firefox会保证父元素的高度完全吻合,子元素会超出父元素的范围。

  CSS规范中有四个宽度和高度的相关属性,为:min-height、max-height、min-width、max-width。 IE浏览器不支持。

3.6.4 实验4- 将margin设置为负值

  当margin设为负数时,会使被设为负数的块向相反的方向移动,甚至覆盖在另外的块上。

3.7 CSS中的几何题

  盒子实际占据的宽度是 width+padding+border+margin的总宽度。

时间: 2024-10-12 23:00:52

深入理解盒子模型的相关文章

CSS 设计彻底研究(三)深入理解盒子模型

第三章 深入理解盒子模型 盒子模型是CSS控制页面的基础.需要清楚“盒子”的含义是什么,以及盒子的组成.此外,应该理解DOM的基本概念,以及DOM树是如何与一个HTML文档对应的,在此基础上充分理解“标准流”的概念. 3.1 盒子的内部结构 padding-border-margin模型是一个极其通用的描述矩形对象布局形式的方法.这些矩形对象被统称为”盒子“,英文为”Box“. 模型 就是对某种事物的本质特性的抽象. 在CSS中,一个独立的盒子模型由content(内容).border(边框).

CSS设计指南之理解盒子模型

原文:CSS设计指南之理解盒子模型 一.理解盒模型 每一个元素都会在页面上生成一个盒子.因此,HTML页面实际上是由一堆盒子组成的.默认情况下,每个盒子的边框不可见,背景也是透明的,所以我们不能直接看到页面中盒子的结构.使用WebDeveloper工具条中的"OutLine"->"OutLine Level Element"菜单项,可以方便地显示盒子的边框和背景,从而让我们能从另外一个角度来审视页面的构成. 1.1 元素盒子的属性 1.边框(border):可

1.深入理解盒子模型

盒子模型 1.盒子模型的组成:margin border padding content: 2.border: 在属性值的设置中,如果给出2个属性值,前者表示上下边框的属性,后者表示左右边框的属性:如果给出3个属性值,前者表示上边框,中间表示左右边框,后者表示下边框:如果给出4个属性值,按照上,右,下,左的顺序.设置背景的时候,浏览器覆盖的区域是content,padding,border. 2.margin: 1)需要记录的是水平的margin是相加,垂直方向的margin会造成塌陷,采用较大

理解盒子模型

1.盒子模型布局(祥细查看链接[http://www.chinaz.com/design/2010/1229/151993_3.shtml]) 非常值得注意的一点是,当一个元素的宽度被设置为100%时(也就是说父元素的内容宽度是100%),它不应该有任何的外边距,内边距,或者是边框,这只会使它放置的区域需要更大的面积.这通常会被设计师们所忽略忽略并且很严重的扰乱了页面的布局,这样的话内容要么溢出要么使元素比他们应该的样式更宽

CSS基础学习——理解盒子模型

初了解 CSS盒子模型,一个神秘的方形组织. MDN中的定义:W3C盒模型是 CSS 规范的一个模块,它定义了一个长方形的盒子,每个盒子拥有各自的内边距和外边距,并根据视觉格式化模型来对元素进行布局. 自己的话来解释一番:盒子模型是相对于块状元素和行内可替换元素而言的,当我们编辑好html与css,命令浏览器开始渲染时,浏览器的渲染引擎会根据盒子模型而将所有符合要求的元素表示为一个矩形的盒子,而我们编写好的CSS样式,便决定着这个盒子的各组成元素的大小.盒子的位置.颜色.背景.边框等等属性. 两

css 大话盒子模型

什么是盒子模型? CSS中, Box Model叫盒子模型(或框模型),Box Model规定了元素框处理元素内容(element content).内边距(padding).边框(border) 和 外边距(margin) 的方式.在HTML文档中,每个元素(element)都有盒子模型,所以说在Web世界里(特别是页面布局),Box Model无处不在. 什么是Box Model? 为什么要理解盒子模型? 因为(能够更好的装逼)? 如果你理解了盒子模型,你就能知道这个东西在页面上面的大小,既

CSS盒子模型之CSS3可伸缩框属性(Flexible Box)

CSS盒子模型(下) 一.CSS3可伸缩框(Flexible Box) 可伸缩框属性(Flexible Box)是css3新添加的盒子模型属性,有人称之为弹性盒模型,它的出现打破了我们经常使用的浮动布局,实现垂直等高.水平均分.按比例划分等分布方式以及如何处理可用的空间.使该模型,可以很轻松的创建自适应浏览器窗口的流动布局或自适应字体大小的弹性布局.但是它有一定的局限性,在firefox.chrome这浏览器下需要使用它们的私有属性来定义:firefox(-moz).chrome(-webkit

盒子模型、IFC、BFC和Collapsing margins

前言   盒子模型作为CSS基础中的基础,曾一度以为掌握了IE和W3C标准下的块级盒子模型即可,但近日在学习行级盒子模型时发现原来当初是如此幼稚可笑.本文尝试全面叙述块级.行级盒子模型的特性.作为近日学习的记录. 何为盒子模型?    盒子模型到底何方神圣居然可以作为CSS的基础?闻名不如见面,上图了喂!  再来张切面图吧!  下面我们以 <div></div> 为栗子.<div></div> 标签被浏览器解析后会生成div元素并添加到document tr

CSS——(2)盒子模型与标准流

上篇博客<CSS--(1)基础>中简单介绍了CSS的概念和几种使用方法,现在主要是介绍其的核心内容. 盒子模型 为了理解盒子模型,我们可以先从生活中的盒子入手.盒子是用来放置物品的,内部除了有物品外,还有填充部分的东西.盒子与盒子之间还会有间隙.如下图所示: 对于网页中的大部分对象,实际呈现形式都是一个盒子形状对象,理解了盒子模型才能更好的排版. CSS盒子模式具备的属性: 内容(content).填充(padding).边框(border).边界(margin).从上面的例子来看:内容即对应