CSS模型教程:boxes,borderes,margins和padding

2016-02-20 00:13 9 1 收藏

今天图老师小编给大家精心推荐个CSS模型教程:boxes,borderes,margins和padding教程,一起来看看过程究竟如何进行吧!喜欢还请点个赞哦~

【 tulaoshi.com - Web开发 】

序言

乍看之下, CSS 布局模式简单明了。盒子,边框和边距都是相当简单的对象, CSS 语法对它们的特性描述并不复杂。

然而, 浏览器渲染引擎遵循着 CSS 2.1 推荐中所规定的一大堆规则,此外还有一些自己的规则。因此,对设计师而言,在将某个高级技巧添加到自己的技术集之前,需要先了解大量细节问题。

在本文中,我们将对那些控制 HTML 元素的布局的 CSS 属性进行介绍,这些 CSS 属性包括 HTML 元素的边框,边距和许多其它属性。本文所涵盖的范围还包括上面提到的一些规则。高级的栏式布局以及栅网聚焦技术将在后面的文章中讨论,这些文章将更加详细地对布局,浮动,清除,以及定位进行探讨。

变化的组合:CSS 中的边距,边框和填充距

在默认情况下,许多 HTML 元素如 div 元素和标题会渲染到占据浏览器画布的全部宽度,并且会强制实行末端断行,因此成串的这种元素的渲染效果在文档画布上会处于从上到下的堆叠中。

但是,HTML 元素和其通常的浏览器样式并不能满足开发员想达成的所有用途。把 CSS 与 HTML 合在一起用来弥合差距,从而 class 和 id 给标签添加语义,而样式表规则可以精确地改变布局和页面内容外观甚至可能通过抵消掉浏览器默认样式的大部分效果来实现这一点。

对空白的细致控制是设计者最重要的工具之一笔者认为它是重中之重。然而,尽管对空白的控制度能给网站设计带来高产品价值,但在默认的浏览器样式表中却缺乏这种控制,这就意味着设计师会频繁用到本文所说的边距,边框,填充距, 和其它 CSS 布局属性。

边距,边框和填充距的分布如图1所示。

how css layout works with margin outside the box and padding inside the box

图1:一个元素盒中各组成成分的详细图示,标有相关CSS属性。

在对象周围添加空白:margin-top、margin-right、margin-bottom、margin-left 及边距属性

边距可单独指定,也可在一条缩写规则中加以指定。另外缩写规则还可以对某个对象周围的各个边框进行控制。合法的值通常是用 px 或 em 单位指定的(像素或字体高)。而在 print-specific 样式表单中会相反用 in、cm 或 pt 单位(英寸、厘米或点)。

在所有情况下 %(百分比)值都是合法的,但须谨慎使用;此类值是按照父元素宽度的比例来计算的,漫不经心的赋值会造成意外的后果。这一问题将会在下面对 CSS 盒模型的讨论中加以详述。

除图像外所有内联元素都没有边距,因而无需边距值。关于这些元素的列表,请参阅下面的表2.

自动边距

依据不同的情况,auto 的赋值会指示浏览器按照自己样式表中的值来渲染边距。但是,在将这样的边距应用到某个元素上,而该元素的宽度具有意义时,auto 边距会将所有可用空间渲染成空白。

看看下列规则:

.narrowWaisted {  width: 16.667em;  margin: 1em auto 1em auto;}

class narrowWaisted 的块元素会将自身对齐到可用画布的中心。

或可将某个适当元素的右边距设成某个相对较小的值,而左边距设为 auto 值。

设置完成后,这样的元素就会接近于右对齐。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)负边距

所有边距属性都可以设为 negative。进行这种设置之后,就能以任意程度抵消相邻的边距。如果将一个足够大的负边距应用到一个足够大的元素上,受其影响的相邻元素甚至可以被重叠

例如,看看下面简单的 div 元素(取自示例文件 negativemargin1.html。)

div id="header"h1Lovely header/h1/div
div id="content"pOverlapping text is entirely unreadable/p/div

如果用下面的CSS来样式化

body {background-color:white font-family:Geneva, Arial, Helvetica, sans-serif;}
#header { background-color:yellow }
h1 { color:red; font-size:2em; }

就会产生如图 2 所示的效果:

Two elements with no negative margins applied

图2:这个简单示例中的两个元素。看起来很普通。

有意思的是下面这部分。现在我们要通过下面的规则给位于下边的元素的顶部添加一个相当大的负边距:

#content {margin-top:-3em;}

这样我们就会看到该元素上移了,重叠在标题上,如图3所示(实际例子参见negativemargins2.html 示例文件)。

Two elements with negative margins applied

图 3:应用了负边距之后,下边的元素上移并重叠在标题上。

合并边距

两个相似并相邻的块元素都有正边距时,两个边距中只有较大那个才会得以应用。如,试试下面的规则:

p {  margin: 1em auto 1.5em auto;}

如果按照字面含义对含有这种样式规则的文件进行渲染,连续的两个段落之间的最终边距应该是 2.5em ,即段落 1(1.5em)的底部边距与段落 2(1em)的顶部边距之和。但是,由于合并边距的应用,它们之间的边距只有 1.5em。

在块元素中列表和标题是特例,它们的边距不会与其它块元素的边距相合并。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

来源:http://www.tulaoshi.com/n/20160220/1631494.html

延伸阅读
标签: Web开发
出处:当我们布局一个网页的时候,经常会遇到这样的一种情况,那就是最终网页成型的宽度或是高度会超出我们预先的计算,其实就就是所谓的CSS的盒模型造成的。 #test{margin:10px;padding:10px;width:100px;height:100px;} 如上一段的代码,很多时候我们会把它所占的位置计算成width:120px,height:120px,因为在正常的理解下,padding是...
标签: Web开发
Cascading Style Sheets: The Definitive Guide, 2nd Edition is a thorough review of all aspects of CSS2.1 and a comprehensive guide to CSS implementation. The book includes new content on positioning, lists and generated content, table layout, user interface, paged media, and more. It explores in detail each individ...
标签: Web开发
如果想熟练掌握DIV和CSS的布局方法,首先要对盒模型有足够的了解。每个HTML元素都可以看作一个装了东西的盒子,盒子里面的内容到盒子的边框之间的距离即填充(padding),盒子本身有边框(border),而盒子边框外和其他盒子之间,还有边界(margin),如图1所示。 图1 盒模型图解 填充、边框和边界都分为“上右下左”四个方向...
标签: Web开发
如果页面包含有效的DOCTYPE声明,则以严格模式呈现。 如果页面没有DOCTYPE声明或没有有效的DOCTYPE声明,则以兼容模式呈现。 下面将一个两种模式的区别,两种呈现模式的主要差别是对元素width和height样式的计算上。如下面的样式 代码如下: { width:180px; height:72px; padding:10px; bording-width:5px; } 在W...
标签: Web开发
原文:http://jorux.com/archives/property-4-if-you-love-css/ 本文作为属性篇的最后一篇文章, 将讲述HTML和CSS的关键盒子模型(Box model). 理解Box model的关键便是margin和padding属性, 而正确理解这两个属性也是学习用css布局的关键. 注: 为什么不翻译margin和padding? 原因一, 在汉语中并没有与之相对应的词语; 原因二: 即使有这...

经验教程

900

收藏

98
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部