头闻号

上海柏雅化工有限公司

塑料油墨|印刷耗材|印纸油墨|丙烯酸树脂|其他合成材料助剂|矿物原药材

首页 > 新闻中心 > 科技常识:深入讲解CSS中盒模型的用法
科技常识:深入讲解CSS中盒模型的用法
发布时间:2023-02-01 10:07:25        浏览次数:4        返回列表

今天小编跟大家讲解下有关深入讲解CSS中盒模型的用法 ,相信小伙伴们对这个话题应该有所关注吧,小编也收集到了有关深入讲解CSS中盒模型的用法 的相关资料,希望小伙伴们看了有所帮助。

视觉类型的媒体根据CSS的视觉格式化模型(Visual formatting model)的规则来处理文档树中的元素 从而将(X)HTML转化成制作者设计的样子。

例如:

如何生成元素框;处理各元素之间的关系;根据框的尺寸、定位等CSS属性来确定元素的位置等;因此 要掌握使用CSS控制页面内元素的技巧 就需要深入了解框模型(Box Model)及视觉格式化模型的原理。

文档树中的元素都产生矩形的框(Box) 这些框影响了元素内容之间的距离、元素内容的位置、背景图片的位置等等。而浏览器根据视觉格式化模型(Visual formatting model)来将这些框布局成访问者看到的样子。

视觉格式化模型中也有“布局(layout)”的概念 但是这个与页面设计经常用到的类似“3行2列”或者“3行3列”中的“排版布局”的概念不同 视觉格式化模型中的“布局”是指每个元素该如何来显示。

CSS 2.1中 一个控制框的布局可以根据三种定位方案:

常规流向。CSS 2.1中 常规流向包含块框的块格式化 行内框的行内格式化 块框或行内框的相对定位 以及插入框的定位。浮动。在浮动模型中 一个框首先根据常规流向布局 再将它从流中取出并尽可能地向左或向右偏移。内容可以排列在一个浮动的边上。绝对定位。在绝对定位模型中 一个框整个地从常规流向中脱离(它对后续的兄弟元素没有影响) 并根据包含块来分配其定位。在理解视觉格式化的概念之前 要明确一点:包含块(Containing Block)是视觉格式化模型的一个重要概念 它也可以理解为一个矩形 而这个矩形的作用是为它里面包含的元素提供一个参考 元素的尺寸和位置的计算往往是由该元素所在的包含块决定的。

框模型(Box model 也译作“盒模型”)是CSS非常重要的概念 也是比较抽象的概念。

文档树中的元素都产生矩形的框(Box) 这些框影响了元素内容之间的距离、元素内容的位置、背景图片的位置等等。而浏览器根据视觉格式化模型(Visual formatting model)来将这些框布局成访问者看到的样子。

因此 要掌握使用CSS布局的技巧 就需要深入了解框模型和视觉格式化模型的原理。

浏览器内显示的元素都可以看作是一个装了东西的矩形的盒子 这些矩形的盒子嵌套、叠加或者并列在一起 形成了页面。

提示:“box model”往往被译为“盒模型”。但是盒子是具有厚度的 也就是说盒子是三维的 而框则没有厚度 是二维的 因此本书采用了“框模型”这个译法。

图1显示了每一个元素的“框(Box)”由几部分组成:

内容(content)例如:文字、图片或者其他元素等 内容也可以看作是一个长方形的框 width(宽度)和height(高度)2个CSS属性设定的就是内容框的宽度和高度。边框(border)边框(也译为边界)是可以具体显示出来的 可以设定宽度、外观样式和颜色。补白(padding)补白(也译为填充、内边距、内补丁等)是内容框与边框之间的距离 补白部分显示的是背景。边距(margin)边距(也译为边白、外边距、外补丁等)是边框外的透明区域 用来设定本元素与其它元素之间的距离。一个元素框 又有上、右、下、左四个方向的边 如图2所示。

由图2大家可以发现 1个元素所占的区域其实是由几个矩形框组成:元素的内容框、补白形成的框、元素的边框以及边距形成的框。这些框的边缘又有如下定义:

元素内容框的边缘 称为“内容边(content edge)”或“内边(inner edge)” 4条内容边形成“内容框(content box)”。补白形成的框的外边缘 称为“补白边(padding edge)” 补白边围绕框的补白。如果补白宽度为0 则补白边和内容边重合。4条补白边形成“补白框(padding box)”。边框形成的框的外边缘 称为“边框边(border edge)”。如果边框宽度为0 则边框边和补白边重合。4条边框边形成“边框框(border box)”。边距形成的框的外边缘 称为“边距边(margin edge)”或“外边(outer edge)” 边距边围绕框的边距。如果边距宽度为0 则边距边和边框边重合。4条边距边形成“边距框(margin box)”。内容框的尺寸(宽度和高度)取决于若干个因素 例如:

产生框的元素是否设定了width属性或height属性;框是否包含文本或其它框;框是否是一个表格等等。例如下列代码(查看实例)其内容框与框之间的关系 如图3、图4所示。

CSS Code复制内容到剪贴板 *{margin:0;padding:0;color:#666;} div{border:4pxsolid#F90;background:#FC6;} ul{list-style:none;margin:10px;padding:10px;background:#FC6;} li{padding:10px010px10px;background:#FF9;margin:15px;} .sample{margin-right:0;border:5pxdashed#F90;} <ul> <li>第1个li里面的示例文字示例文字</li> <li>第2个li里面的示例文字</li> </ul> <div>ul下面的div</div>

由图3和图4 我们可以发现:

元素的框宽度 = 左边距(margin-left) + 左边框宽(border-left-width) + 左补白(padding-left) + 内容宽度(width) + 右补白(padding-right) + 右边框宽(border-right-width) + 右边距(margin-right)元素的框高度 = 上边距(margin-top) + 上边框宽(border-top-width) + 上补白(padding-top) + 内容高度(height) + 下补白(padding-bottom) + 下边框宽(border-bottom-width) + 下边距(margin-bottom)提示:关于margin在垂直方向重叠的情况 请参见本章[8.9.2.2 边距的重叠]一节。

在IE 5.5及更早的版本 以及在怪异模式中的IE 6.0/7.0中 会错误地将框模型理解为:

width = border-left + padding-left + 内容宽度 + padding-right + border-rightheight = border-top + padding-top + 内容高度 + padding-bottom + border-bottom也就是说 错误的框模型把width和height理解为边框框的宽度和高度 而不是内容框的。(当然 很多人都认为这样的设定更容易计算布局的尺寸。)

例如下列代码:

XML/HTML Code复制内容到剪贴板 div{width:300px;margin:10px;padding:15px;border:5pxsolid#ccc;}

则div的框宽度应为360px(10px + 5px + 15px + 300px + 15px + 5px +10px) 而在IE的错误框模型中 框的宽度为320px(10px + 300px +10px) 实际的内容宽度为260px(300px – 15px*2 – 5px*2)。

因此会造成元素尺寸显示的不正确。

提示:在CSS 3中 制作者可以通过“box-sizing ”属性来指定width和height的值应用在内容框或者边框框上。

来源:爱蒂网