盒子模型(Box Model)是从CSS诞生之时便产生的一个概念,对网页中的大部分对象,实际呈现形式就是一个盒子形状对象(即块状对象),对于这个基础又重要的概念,只要掌握盒子模型的尺寸及占位的标准技术方法,那就可以灵活驾驭盒子模型了!
CSS盒子模型
网页设计中的每个元素都是长方形的盒子。怎样精确的计算盒子的尺寸?请看下面一幅图:
盒子里面的内容到盒子的边框之间的距离即填充(padding),盒子本身有边框(border),而盒子边框外和其他盒子之间,还有边界(margin)。
如果你是一个Firebug的用户,就会很熟悉下面的图表了。这个图表很好地展示了作用于页面上任意盒子的数值。
注意到上面两个例子中,margin都是白色的,margin 比较特别,它不会影响盒子本身的大小,但是它会影响和盒子有关的其他内容,因此 margin 是盒模型的一个重要的组成部分。
盒子本身的大小是这样计算的:
Width |
width + padding-left + padding-right + border-left + border-right |
Height |
height + padding-top + padding-bottom + border-top + border-bottom |
值为声明的情况
如果未声明 padding 或者 border,那他们或者值为零(使用 css reset 时),或者为浏览器的默认值(很可能不是零,尤其是那些通常没有重置的表单元素)。
如果未声明盒子的width(而且这个盒子是一个块级元素),那么事情就变得有点怪异,我们先看这点,然后再看一下其他优秀的关于盒子模型的资料。
块级盒的默认宽度
如果没有声明宽度,而且盒子是静态或者相对定位,那么宽度将保持100%且padding和border将向内推动而不是向外扩展。
如果明确的确定宽度为100%,那么padding就会向外扩展。
从这个例子可以看出,盒子的默认宽度并不是100%,也可能是其他值,应该了解这种特别有价值的情况,因为在现存的很多情况下,它对于设置/不设置宽度是很多帮助的。
我遇到的最大的麻烦就是 textarea(文本框) 元素了,它们需要设为宽度为所需的”cols”属性,并且不能包含子元素。因此通常需要明确的设置 textarea 的宽度为 100%,但有 padding 时,就会延 展 textarea 的宽度。固定宽度环境下,通常可以设置为合适的像素值宽度,但是变宽情况就没那么幸运了。
无宽度的绝对定位盒子
未设定宽度的绝对定位的盒子的表现有点不一样。它们的宽度只需要适合它们所包含的内容即可。因此,如果盒中只有一个单词,盒子就会像那个词的表现一样宽。如果变成两个词,盒子的宽度也会相应增加。
这种情况会持续到盒子的宽度达到父元素宽度的 100%(最近的相对定位的父元素或者浏览器窗口),然后就会折行。
对盒子来说,垂直扩展以适应包含的内容是很自然的。值得奇怪的是,不仅仅是不同平台下的文本表现不同,不同的浏览器处理这个问题时,也有很多怪癖。
无宽度浮动盒子
同无宽度的绝对定位盒子的表现一样。盒子的宽度只需要扩展到所包含内容的宽度,直到其父元素的宽度(其父元素不必是相对定位的)。由于这些无宽度盒 子的脆弱性,我们要学到的是关键任务模式的时候它们是不能依赖的,像总体页面布局中。如果浮动一列作为侧边栏使用,并指望那些内部元素(如图片)来负责包 含它的宽度,你就是在自找麻烦。
内联元素也是盒子
我们这里一直把重点放在块级元素的盒子上。很容易就可以把块级元素想象为盒子,但是内联元素也是盒子。可以把他们想象为非常长而窄的长方形,它们也可以像其它盒子一样有 margin, padding 和 border。
折行使它看起来有些不好理解。如上所示的左 margin 把盒子推向右边,但是只在第一行有效,因为那是盒子的起点。padding 正常的应用在文本的上部或下部,当折行时它会忽略上面行的 padding 并且以行高(line-height)要求的位置作为起点。透明背景是为了让效果看起来更清楚。
亲眼目睹一下
想看看组成页面的每个单独的“盒子”吗?试着把这行代码暂时放入样式表:
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->* { border: 1px solid red !important; }
FROM:http://www.qianduan.net/css-box-model.html
分享到:
相关推荐
CSS 盒子模型教程 CSS 盒子模型是指浏览器对网页中的各个元素(图片、段落、单元格等)进行排列和定位的模式。只有很好地掌握了盒子模型以及其中每个元素的用法,才能真正地控制好页面中的各个元素。本节主要介绍...
**CSS+DIV 盒子模型详解** 在网页设计与开发中,CSS(层叠样式表)和DIV元素是构建布局的基础。"CSS+DIV-盒子模型示例.zip"中的内容显然是为了帮助理解CSS中的盒子模型及其应用。盒子模型是CSS布局的核心概念,它将...
CSS盒子模型是CSS布局的基础,理解和掌握它对于网页设计至关重要。"京东快报"可能是一个项目或者课程,涉及到使用CSS来构建符合京东风格的页面布局。在这里,我们将深入探讨CSS盒子模型及其在实际应用中的运用。 **...
CSS 盒子模型是网页设计中的核心概念,尤其对于使用CSS进行布局的初学者而言,理解和掌握盒子模型至关重要。在传统的HTML布局中,表格被广泛用于网页内容的排版,但随着网页技术的发展,CSS(层叠样式表)的引入带来...
1.1 CSS盒子模型概述 1.3 CSS 盒子模型边框 1.4 CSS盒子模型外边距 1.5CSS盒子模型的应用
在CSS世界中,盒子模型(Box Model)是一个至关重要的概念,它定义了元素在网页布局中的行为方式。这个模型描述了HTML元素所占用的空间,包括元素的内容、内边距(padding)、边框(border)以及外边距(margin)。...
【CSS盒子模型定位浅析】 CSS(层叠样式表)是一种强大的样式控制工具,它使得网页设计者可以精细地控制页面元素的外观和布局。盒子模型是CSS布局的核心概念,它将HTML元素视为一个个具有内容(content)、内边距...
CSS盒子模型教程学习教案.pptx
CSS 盒子模型 CSS 盒子模型是 CSS 的基石之一,它指定元素如何显示以及(在某种程度上)如何相互交互。在网页设计中,每个 HTML 元素都可以看作是一个装了东西的盒子,这个盒子由元素的内容、填充、边框和边界组成...
"CSS盒子模型和三大特性" CSS盒子模型是一个基本的布局模型,它由内容区域、边框区域、内边距区域和外边距区域组成。在这个模型中,每个标签都是一个盒子,通过盒子的视角可以更方便地进行布局。 一、CSS三大特性 ...
html的CSS盒子模型
本文将深入探讨CSS中的两种主要盒子模型——标准盒子模型与IE盒子模型,并详细对比它们之间的区别。 #### 一、盒子模型概念 在CSS中,每个HTML元素都可以被视为一个矩形盒子,这个概念称为“盒子模型”。每个盒子...
其中,盒子模型(Box Model)是CSS布局的基础,它定义了元素如何占据空间并与其他元素交互。接下来,我们将深入探讨这个重要概念。 首先,盒子模型描述了一个HTML元素在页面上占用的空间,包括元素的内容区域...
内容概要:本文详细讲解了 CSS 盒子模型的各项关键概念及其具体属性的设置方法,覆盖从内容宽度到高度、内外边距(padding)、边界(border)、外边距(margin),还涉及到盒模odel-radius 和 text-shadow 属性的...
CSS 盒子模型 CSS 盒子模型,也称为框模型,是一种将 HTML 元素表示为一个矩形区域的模型。这个模型由多个部分组成,包括元素内容、内边距、边框、外边距等。 一、什么是盒子模型? CSS 盒子模型是将 HTML 元素...
**DIV CSS 盒子模型详解** 在网页设计中,DIV CSS是构建页面布局的重要工具,而盒子模型(Box Model)则是理解CSS布局的关键概念。这个PPT演讲将深入探讨这一核心知识点,帮助初学者掌握网页设计的基础。 首先,...
### CSS盒子模型详解 #### 一、引言 CSS(层叠样式表)是Web设计中不可或缺的一部分,它用于控制HTML文档的布局和外观。在CSS中,元素的布局通过盒子模型来定义,该模型决定了元素如何占用空间以及与其他元素交互...
### CSS盒子模型详解 #### 一、概述 CSS盒子模型是网页布局的基础,它定义了元素如何占据空间以及元素间的相互关系。理解CSS盒子模型对于前端开发者来说至关重要,因为这直接影响到网页的设计与布局。 #### 二、...
本文通过配图详细解释了CSS盒子模型,并提供了一个具体的几何题来帮助理解各个部分的宽度计算。 首先,我们来看水平方向的宽度计算。以题目中的例子为例: 1. `a` 是body元素的左外边距,由于设置为0,所以`a`的值...