随便打开一个网页,按下F12,你会发现一堆密密麻麻的“DIV”,没错,现在大部分的网页都用了css+DIV的布局方式。
上篇说了盒子模型,这里就以盒子模型为基础来简单了解一下常用的一种网页布局的方式:CSS+DIV布局。
CSS+DIV布局,就是在整体上用
标记把页面分为若干个块,然后对各个块进行CSS定位,最后再在各个块中添加相应内容。就如建造一座钢结构的建筑物似的,先把整个网页的框架搭建起来,再分别对局部进行细化,这里
就如同钢筋,负责搭建框架,CSS就相当于搭建的规则,按照一定的规则(即业务需求)把钢筋焊接起来。
那么我们就把网页布局想象成一个盖这座建筑物的过程,这里把它分为两个步骤:
1、选择材料,要对需要用到的钢筋有所了解,即了解DIV
之前有个朋友问过我:“盒子模型是什么,是DIV吗?” 我否决了他,在笔者看来,网页里的许多元素,都可以看做是一个“盒子”,比如p、h1、form、div、span、table、tr、td等等,他们都有margin、border、padding属性。
只不过我们在搭建整体的网页布局时,一般用DIV来充当上例中“钢筋”的角色。
盒子模型是DIV+CSS的基础,也是关键。简单来说,盒子模型的核心就在那些“盒子”的margin、border、padding这几个属性上,想要布局出合理漂亮的网页,这是基本功。
2、对材料进行切割、焊接
了解了DIV及盒子模型等基础知识后,就要对这些材料进行切割(设计不同大小的DIV)并焊接(用CSS定位相应的DIV)。
切割不用多说,就是画出DIV并用CSS规定其大小形状(即margin、border、padding的值)。
这里的重点是焊接,焊接时需要挑选大小不一的DIV块,进行合理的摆放,也就是所说的DIV定位,包括对DIV的position、float、z-index属性的设置。
position属性:四个属性值分别为static、absolute、relative、fixed,下表是W3C对这几个属性值的说明:
值 | 描述 |
static | 默认值。没有定位,元素出现在正常的流中(忽略 top, bottom, left, right 或者 z-index 声明)。 |
inherit | 规定应该从父元素继承 position 属性的值。 |
absolute | 生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。 元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。 |
relative | 生成相对定位的元素,相对于其正常位置进行定位。 因此,"left:20" 会向元素的 LEFT 位置添加 20 像素。 |
fixed | 生成绝对定位的元素,相对于浏览器窗口进行定位。元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。 |
一般情况下,当元素的position属性值为absolute或fixed时,它就不再受父元素的约束,只根据到页面的left、top、right和bottom的值来定位。
float属性,有left、right、none、inherit四个属性值:
值 | 描述 |
none | 默认值。元素不浮动,并会显示在其在文本中出现的位置。 |
inherit | 规定应该从父元素继承 float 属性的值。 |
left | 元素向左浮动。 |
right | 元素向右浮动。 |
细节不再多说,不清楚的同学可以自己做几个小例子动手实践一下,或者到W3School上实践一下,这里有丰富的web教程和一些可以在线练习的小例子。
float在这里是难点也是重点,希望读者熟练掌握。
z-index属性:
z-index的值可以为任意整数值,可以为正数也可以为负数,代表着元素“显示的优先级”,值越大,显示的优先级越高。两张简单的图片足以说明:
这两幅图片,第一幅图片中三个div的z-index值分别为:AB>C。
这些都只是CSS+DIV布局最基础的知识,想要真正吃透,还需要不断练习,体会布局的一些小技巧。比如对margin使用负值就是一个很实用的小技巧,假如想让container固定宽度居中显示(假设container宽度为700px),则可以对container采用relative的定位方法,left值为页面的50%,再设置margin-left为自己宽度的一半,这样,无论在哪种分辨率的浏览器中显示效果都是固定宽度且居中,如下图:
当页面中的内容显示不够多时,如何让最底部的footer(版权注册部分)永远保持在最底部,也可以用对margin设置负值的方法来实现。
多多地积累吧,期待与您共同成长。