css|浮动
层叠式样表(CSS)正迅速成为网页布局与定位的实际标准。它们易于使用、不需要任何特殊的软件、并可在大多数主要的浏览器上应用。但是,正确使用它们需要全面了解一个特殊布局的功能性目的,保证生成的样式表在逻辑和功能上都能正确使用,并能够与各种浏览器和查看设备兼容。
通常,Web开发者往往无法理解式样表的这个特殊问题,导致要在代码中使用大量的“hack”才能获得预期的结果。为解决这个问题,很值得花一些时间来理解CSS的一些核心驱动程序和概念。开发者需要了解的一个最重要的概念是所谓的浮动元素,它在对齐和定位网页元素方面发挥着重要的作用。
本文简单介绍这些浮动元素,解释CSS float和clear命令,并提供它们的一些应用实例,以更好的定位网页中的HTML元素。
浮动元素
基本上,一个属性为float的元素移出了网页的正常流程以外,它在空间“飘浮”,周围环绕着一些内容。因此,一个向左浮动的元素有文本在它的右侧运动,并环绕着它的底边;一个向右浮动的元素将有内容在它的左侧移动。
float属性可以取三个可能的值:left,使元素向左浮动;right,使元素向右浮动;none,消除浮动。对一个元素应用float属性会自动将它转变成一个块级元素。其它非式样元素忽略浮动,就好像它不存在一样。如果一个浮动撞上文件中在前面生成的同一侧的另一个浮动,它必须要么保持向前面生成的浮动右侧浮动(如果有足够的空间),要么在它下面浮动(如果空间不够)。
例1:在图像周围环绕文本
为了更好的理解浮动,我们来看一个简单的例子:用CSS的float属性代替HTML的ALIGN属性。查看下面的例子(列表A),它向左浮动一幅图片,并用描述性的文本环绕四周:
列表A
<html>
<head>
<style type="text/css">
.floater {
float: left;
border: solid 1px black;
padding: 5px;
margin: 5px;
width: 100px;
height: 75px;
}
</style>
</head>
<body>
<img class="floater" src="http://www.webjx.com/htmldata/2007-04-30/pix2180.jpg" />
Loremipsum dolor sit amet, consecteturadipisicingelit, sed do eiusmodtemporincididuntutlabore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteursintoccaecatcupidatat non proident, sunt in culpa qui officiadeseruntmollitanim id estlaborum. Loremipsumdolor sitamet, consecteturadipisicingelit, sed do eiusmodtemporincididuntutlabore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
</body>
</html>
图A显示输出结果。
在这种情况下,图片向左浮动,使得周围的内容流向右边然后包围它的下方。而且,当你改变浏览器窗口大小时,保存文本的“方框”的大小也随之动态地调整。
例2:两栏布局,两边都有图片
让我们看一个复杂一些的例子,建立一个两栏布局,每一栏中包含一幅图片和一些文字内容(列表B)。为增加趣味性,我们将左栏中的图片设为左对齐,右栏中的图片设为右对齐。
列表B
<html>
<head>
<style type="text/css">
div {
width: 48%;
padding: 5px;
}
img {
padding: 5px;
margin: 5px 15px 5px 5px;
width: 100px;
height: 75px;
}
</style>
</head>
<body>
<div left">
<img left" src="http://www.webjx.com/htmldata/2007-04-30/pix2180.jpg" />
Loremipsum dolor sit amet, consecteturadipisicingelit, sed do eiusmodtemporincididuntutlabore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteursintoccaecatcupidatat non proident, sunt in culpa qui officiadeseruntmollitanim id estlaborum.
</div>
<div right">
<img right" src="" />
Loremipsum dolor sit amet, consecteturadipisicingelit, sed do eiusmodtemporincididuntutlaboreetdolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteursintoccaecatcupidatat non proident, sunt in culpa qui officiadeseruntmollitanim id estlaborum.
</div>
</body>
</html>
应用浮动,实现这个页面并不特别困难:只要为每一栏建立一个<div>,然后在每个<div>里面放一幅浮动的图片和一些文字。接下来,浮动<div>本身,一个向左,另一个向右。图B显示输出结果。
图B
清除元素
float属性的一个同伴是clear属性,它控制跟随一个浮动的元素的位置。这个属性中用来防止内容跟随一个浮动的元素,迫使它移动到浮动的下一行。
clear属性可以取四个值:left,它把元素推到前面生成的向左浮动的元素下面;right,它把元素推到前面生成的向右浮动的元素下面;both,它把元素推到前面生成的所有元素下面;和none,它取消前面的定位。有趣的是,clear属性不像人们认为的那样,仅限于非浮动元素;相反,它还可以用来控制浮动元素的行为,把一个浮动元素推到其它浮动元素下面。
例3:垂直图片栏,周围环绕文本
要理解这种情况,请看下面的例子(列表C),它创造性的使用float和clear属性,将一组图片垂直排列。
列表C
<html>
<head>
<style type="text/css">
.floater {
float: left;
clear: left;
border: solid 1px black;
padding: 5px;
margin: 5px 15px 5px 5px;
width: 100px;
height: 75px;
}
</style>
</head>
<body>
<img class="floater" src="http://www.webjx.com/htmldata/2007-04-30/pix2180.jpg" />
<img class="floater" src="http://www.webjx.com/htmldata/2007-04-30/pix2181.jpg" />
Loremipsum dolor sit amet, consecteturadipisicingelit, sed do eiusmodtemporincididuntutlabore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteursintoccaecatcupidatat non proident, sunt in culpa qui officiadeseruntmollitanim id estlaborum. Loremipsumdolor sitamet, consecteturadipisicingelit, sed do eiusmodtemporincididuntutlabore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
</body>
</html>
这里的所有图片都向左浮动,clear的使用情况:第二幅图片的left属性保证它被推到第一幅图片下面,建立一种垂直结构。注意,第一幅图片也使用了clear属性,但因为它上面没有图片,所以没有产生效果。使用float属性也保证页面(重要的是,它是非式样页面)中的文本块围绕在图片栏周围。
以下是输出结果(图C):
当然,这三个例子只是浮动元素应用的冰山一角。应用float和clear属性,还可以实现更多布局和更灵活的界面设计。但是,上面的例子应能让你了解这些属性的实际应用,你现在应该有足够的知识开始自己的实践。那你还等什么?开始吧——编码快乐!