第5章CSS盒子模型本章概述通过本章的学习,重点掌握CSS中盒子模型的各个属,熟练使用margin、padding、border、width等属,掌握盒子模型的3种定位机制,了解display属、显示及隐藏的方法。通过对5个盒子项目的实施,掌握浮动、position定位等机制。
学习重点与难点重点:(1)盒子相关属。
(2)浮动定位。
(3)位置定位。
(4)display属。
难点:(1)浮动定位。
(2)clear属。
(3)CSS的层叠。
重点及难点学习指导建议:盒子模型在前端开发中重要,重点掌握CSS中盒子模型的各个属,学须通过大量编码练习强化记忆。
浮动和定位在页面布局中有着重要的意义,是学习时必须掌握的重点,通过编码实践,比较每一个属值不同的含义。
了解clear属知识,从而设置元素的某个方向不允许出现浮动元素。5.1盒子相关属在页设计中,经常会使用内容(content)、内边距(padding)、边框(border)、外边距(margin)等属。如图5.1所示,可以视这些CSS属为日常生活中的盒子模型,盒子模型是实现网页布局的基础,学习网页布局必须了解盒子模型。
盒子模型如图5.1所示。俯视这个盒子,margin为盒子边缘与物体的距离,一般称为边界或外边距;border类似于盒子的厚度,称为边框;padding是填充的厚度,一般称为填充或者内边距;而content为盒子的内容。也就是说,整个盒子在页面中占的位置大小应该是内容的大小加上填充的厚度再加上框边的厚度再加上它的外边距。
图5.1盒子模型5.1.1内边距和外边距在HTML中,每个元素都可以被视为一个“盒子”,不管这个元素是段落,还是图像。想象一个盒子,它有上、下、左、右4条边,所以每个属除了内容(content),都包括4个部分:上、下、左、右;这4部分可同时设置,也可分别设置,如图5.2所示。
图5.2标准盒子模型下面分别说明各个属的语法。
1.外边距外边距属也称为边界属,根据上、下、左、右4个方向可细分为上边距(margintop)、下边距(marginbottom)、左边距(marginleft)、右边距(marginright)。一般情况下,可以使用margin属一次设置4个边距,也可以分别对不同的边距设置不同的属,设置时必须按顺时针方向依次代表上、右、下、左4个方向的属值。如果省略,则按上下、左右同值处理。
例如,有如下语句:margin:1pxpxpx4px;有4个值,表示上外边距为1px,右外边距为2px,下外边距为3px,左外边距为4px。margin:1px4px;有两个值,表示上下外边距为1px,左右外边距为4px。
除了上述设置具体值之外,也可以设置水平位auto,这样做会使盒子里的水平位置自动居中。
如下面代码所示,样式设置为.marginwidth:200px;margin:0pxauto内容设置为使用auto效果
在浏览器中运行该代码,结果显示该段落位置为水平居中。
2.边框属边框(border)有3个属:颜色(bordercolor)、粗细(borderwidth)、样式(borderstyle)。
例如,边框粗细的说明如下。border-width:thin10pxthickmedium对边框的设置方法是:按照规定的顺序给出1个、个、个或者4个属值,它们的含义将有所区别,具体含义如下。
(1)如果给出1个属值,表示4个边框的属一样。
(2)如果给出2个属值,前者表示上下边框的属,后者表示左右边框的属。
(3)如果给出3个属值,前者表示上边框的属,中间的数值表示左右边框的属,后者表示下边框的属。
(4)如果给出4个属值,依次表示上、右、下、左边框的属,即顺时针排序。
3.内边距内边距(padding)属,也称为填充属,设置的是内容与边框的距离。同外边距属一样,内边距属也包括上、下、左、右4个方向的属值,其使用方法请参照外边距属代码。
如图5.3所示,有时候网页中或者盒子中的内容并不能完全填充到整个区域中,这时可以使用内边距padding调整盒子中内容的位置。
例如,要将图5.3中盒子的文字居中,可对代码进行如下更改。pwidth:150px;height:50px;background-color:pink;padding-left:40px;在IE11中其显示结果如下。
图5.3盒子示例图5.4内边距使用效果5.1.2块级元素与行内元素大多数HTML元素都被定义为块级元素(block)或行内元素(inline)。
(1)块级元素默认占一行,一行内添加一个块级元素后,一般无法再添加元素。例如,div、p、h1~h6、ul、ol、table都是块级元素。
(2)行内元素会在一条直线上排列(默认宽度只与内容有关),都是同一行的,水平方向排列。例如,a、span、img都是行内元素。
它们的区别如下。
块级元素可以包含行内元素和块级元素。行内元素不能包含块级元素,只能包含文本或者行内元素。
行内元素与块级元素属的不同,主要是盒模型属:块级元素的宽高、行高以及外边距和内边距都是可控的。行内元素设置width无效,height无效(可以设置lineheight),margin上下无效,padding上下无效。
块级元素的用法:div元素是块级元素,实际上,div就是一个容器,它把文档分成独立的、不同的部分。div还有一个常用的用途是文档布局。
例如,一个网页有头部、内容和尾部3个结构,那么在布局时就可以用3个div标签把3个部分划分出来。
行内元素的用法:span标签是行内元素,用来组合文档中的行内元素。通过使用span标签,可以更好地管理行内元素。如果不加样式,span元素中的文本与文本不会有任何区别。当想给某些文字设置特殊样式时,可以使用以下语句。
注释span是行内元素
其显示结果为:在CSS中,将各版块看作一个个盒子,可以利用盒子的属描述各版块的尺寸、边界等样式,而位置方面一般由浏览器自动控制。各版块一般用
标签进行描述,即采用CSS+DIV布局。使用CSS可以灵活设置div元素的样式,width属于设置其宽度,height属于设置其高度。一般用px作为固定尺寸的单位。单位为百分比时,div元素的宽度和高度为自适应状态。
盒子在标准流中的定位原则如下。
1.块级元素之间的竖直margin如下面语句所示:
块元素1 块元素2如下面语句所示。.leftmargin-right:30px;background-color:#a9d6ff;.rightmargin-left:-53px;/设置为负数/background-color:#eeb0b0;如果在margin中使用了负值,那么就会出现如图5.6所示的叠加现象。