第三章 CSS网页布局与定位
3.1 div
几乎XHTML中的任何标签都可以用于浮动与定位,而div首当其冲。对于其他标签而言,往往有它自身存在的目的,而div元素存在的目的就是为了浮动与定位。
3.1.1 div是什么
div是XHTML中制定的、专门用于布局设计的容器对象。在传统表格式布局中,之所以能够进行页面的排版布局设计,完全依赖于表格对象table。如今,接触另一种布局方式——CSS布局。div正是这种布局方式的核心对象。仅从div的使用上说,做一个简单的布局只需要依赖两样东西:div与CSS。因此有人称CSS布局为div+css布局。
3.1.2 如何使用div
只需要应用<div></div>标签,将内容放置其中,便可以应用div标签。但是,div标签之声一个标识,作用是把内容标识成一个块区域,并不负责其他事情。
div标签中除了直接放入文本外,也可以放入其他标签,还可以多个div进行嵌套使用,最终目的是合理地标识出内容区域。
在使用div标签时,可以加入一些属性,比如id、class、align、style等。在CSS布局方法,为了实现内容与表现的分离,不应当将align、style两个属性编写在XHTML页面的div标签中,因此,最终的div代码只能拥有以下两种形式:
3.1.3 理解div
在一个没有任何CSS应用的页面中,即使应用了div,也没有任何实际效果。那又如何理解div在布局上的重大潜能呢?尝试编写两个div,用于左分栏与右分栏,代码如下:
<div>左分栏</div>
<div>右分栏</div>
此时浏览器能够看到的仅仅是上下两行文字,并没有看出div的任何特征。
要记住一点,div是一个block对象——块对象(或者块级元素)。XHTML中的所有对象,几乎都默认为两种对象类型:
块状div说明,它在页面中并非用于类似于文本那样的行间排版,而是用于大面积,大区域的块状排版。
从页面效果发现,网页中除了文字之外,没有任何其他效果。两个div之间的关系只是前后关系,并没有出现类似于表格的田字型,因此,div本身与样式没有任何关系。样式是需要编写CSS来实现的。
在CSS布局中,所要做的工作可以简单归集为两件事:一是使用div将内容标记出来,二是为了这个div编写所需的CSS样式。
3.1.4 并列与嵌套div结构
div可以多层进行嵌套使用,嵌套的目的是为了实现更为复杂的页面排版。比如:
<div id="header">头部</div>
<div id="center">
<div id="left">左分栏</div>
<div id="right">右分栏</div>
</div>
<div id="footer">底部</div>
上述代码中,为每个div定义了一个id名以供识别。可以看到id名为header、center和footer的3个div对象,它们之间属于并列关系,在网页布局结构中以垂直方向布局而至上而下。
在center中,为了内容的需要,又使用了一个左右分栏的布局,这两个div本身是并列关系,而它们都处于center之中,因此它们与center形成了一种嵌套关系。
注:在适当情况下,应当尽可能少地使用嵌套,以保证浏览器不用过分消耗资源来对嵌套关系进行解析,简单的嵌套结构更有利于对版式的理解与控制。
3.1.5 使用合适对象来布局
Web标准推荐使用尽可能符合页面中元素意义的标签来标识元素。在CSS布局中,要求尽可能多地使用XHTML所支持的各种标签,最终网页对象都将拥有良好的可读性。再通过进一步的CSS定义,其样式表现能力丝毫不比表格差,而且拥有比表格更多的样式控制方法,这正体现了CSS布局的基本优势。
XHTML标签与功能简述:
结构标签 | 简述 |
html | html跟元素 |
head | html头部区域 |
body | html主体区域 |
div | 区块定义标签 |
span | 行间区块定义标签 |
Meta信息 | 简述 |
DOCTYPE | 文档类型指定 |
title | 浏览器标题栏 |
link | 链接到扩展资源 |
meta | Meta信息 |
vstyle | 样式表区域 |
文本控制 | 简述 |
p | 段落 |
h1-h6 | 标题1-6级 |
strong | 加重重点 |
em | 重点/强调 |
abbr | 定义文本的简写词 |
acronym | 定义首字母简写词 |
address | 标签联系信息 |
bdo | 字母顺序左右反转 |
blockquote | 块状引用内容 |
cite | 行间引用内容 |
q | 行间小型的引用 |
code | 源代码区 |
ins | 编辑注解:插入内容 |
del | 编辑注解:删除内容 |
dfn | 文本术语注释 |
kbd | 文本需要键盘输入 |
PRe | 预格式化文本 |
samp | 举例 |
var | 文本是一个变量 |
br | 回车 |
表格 | 简述 |
table | 表格 |
tr | 行 |
td | 单元格 |
th | 表头 |
tbody | 表格主体 |
thead | 表格头部 |
tfoot | 表格底部 |
col | 表格列 |
colgroup | 表格列的集合 |
caption | 表格标题 |
列表 | 简述 |
ul | 无序列表 |
ol | 有序列表 |
li | 列表项 |
dl | 带描述的列表 |
dt | 描述列表中的名词 |
dd | 描述列表中的描述 |
表单 | 简述 |
form | 表单区域 |
input | 输入框 |
textarea | 文本框 |
select | 下拉列表 |
option | 下拉列表项 |
optgroup | 下拉列表项集合 |
button | 按钮 |
label | 标签 |
fieldset | 标签页 |
legent | 标签页的标题 |
表现 | 简述 |
b | 加粗 |
i | 斜体 |
tt | 打字机字体 |
sub | 下标 |
sup | 上标 |
big | 加大 |
small | 减小 |
hr | 分割线 |
链接 | 简述 |
a | 链接 |
vbase | 基础链接类 |
脚本 | 简述 |
script | 脚本区域 |
noscript | 无法执行脚本的替代 |
图像和对象 | 简述 |
img | 插入图像 |
area | 图像热区细节 |
map | 图像热区 |
object | 插入对象 |
param | 对象的参数 |
上述列举了全部的XHTML标签对象,但并非所有对象都会经常使用到。
3.2 一列固定宽度
使用div设置一个带有header、center和footer三个并列的布局,这3个div的基本表现形式正是:一列式布局。
一列式布局是所有布局的基础,也是最简单的布局形式。一列式布局是一种固定宽度的布局样式。
注:默认状态下,即在未设定div宽度的情况下,div将占据整行空间。
3.3 一列宽度自适应
自适应布局是一种非常灵活的布局形式,它能够根据浏览器窗口的大小,自动改变其宽度或高度值。
实际上,默认状态下的div将占据整行空间,即是宽度为100%的自适应布局。一列适应布局需要改变这个设置,将宽度由固定值改为百分比值的形式便可以完成。
一列固定宽度居中
页面整体居中是网页设计中常见的形式。在传统表格式布局中,使用表格的align="center"属性来实现表格居中,再在其单元格中装内容,实现整个页面居中。
而div本身也支持align="center"属性,同样可以让div呈现居中状态。但是,CSS布局是为了实现表现与内容的分离,align对齐属性是一种样式代码,书写在XHTML的div属性中,有违于分离原则,因此应当使用CSS的方法来实现内容居中。居中的CSS样式:margin: 0px auto;
除了直接使用数值外,margin还支持一个值叫auto的属性值,auto值是让浏览器自动判断边距。在这里,给当前的div左右边距设置为auto,浏览器就会将div的左右边距设为相同,从而呈现出居中的状态。
注:margin属性用于控制对象的上、右、下、左(顺时针旋转)4个方向的外边距。当margin使用两个参数时,第一个参数表示上下边距,第二个参数则表示左右边距。
3.4 二列固定宽度
对于二列布局自然需要用到两个div。分别使用两个id为left和right的div。为了实现二列式布局,必须使用另一个属性——float。
float属性是CSS布局中非常重要的一个属性,用于控制对象的浮动布局。float的可选参数分别为:none/left/right。float使用none值时表示对象不浮动,使用left时对象将向左浮动,而使用right时对象将向右浮动。
3.5 二列宽度自适应
与一列自适应宽度布局设置一样,是通过对百分比宽度值进行指派。比如:设置左栏宽度为20%,右栏宽度为70%。为什么没有将右栏设置为80%?
这是因为,在CSS布局中,一个对象的宽度不仅仅由width值来决定。对象的真实宽度是由对象本身的宽(width)、对象的左右外边距(margin)以及左右边框(border),还有内边距(padding)等属性相加而成。
3.6 两列右列宽度自适应
在实际应用中,有时候需要左栏固定宽度,而右栏根据浏览器窗口大小自适应。这只需要设置左栏的宽度值,右栏不设置任何宽度值,并且右栏不浮动即可。
3.7 二列固定宽度居中
对于二列分类居中问题,再使用margin: 0px auto;似乎不能达到效果,这时就需要进行div的嵌套设计来完成。可以使用一个居中的div作为容器,将二列分栏的两个div放置在容器中,从而实现二列居中显示的效果。XHTML代码结构如下:
<div id="layout">
<div id="left">左列</div>
<div id="right">右列</div>
</div>
CSS代码如下:
#layout {
margin: 0px auto;
...
}
3.8 三列浮动中间列宽度自适应<
新闻热点
疑难解答