float 属性最初只用于在成块的文本内浮动图像,后来成为了在网页上创建多列布局的最常用工具之一。
一个例子
.float-box-1 { width: 100px; height: 80px; border-radius: 5px; background-color: lightgreen; padding: 1em; }
准备一个盒子的样式的样式,应用在 div 上。
<h1>CSS入门教程之浮动(float)的例子</h1> <div class="float-box-1">浮动(float)</div> <p> CSS 全称 Cascading Style Sheets,层叠样式表。 样式表的作用,就像给房子装修差不多,它就是为 HTML 页面进行装修,让它变得更好看。 </p> <p> 在学习 CSS 之前,需要首先知道 HTML,如果你还不会的话,可以先去把 HTML21 天入门教程啃完。 CSS 的学习,同样需要大量的练习,而练习所使用的工具,和 HTML 的学习一致。 </p> <p> 这里需要说一下,学习 CSS 和 HTML 略微不太一样。 之前在学习 HTML 时,建议大家一定要多手写,那是因为 HTML 的标签就那么多,而且都不长,多写写基本上都能记住。 </p>
它的显示效果如下,这是普通的流布局。
应用浮动效果
在刚才的盒子样式里,添加 float:left。
.float-box-2 { float: left; /*增加了float*/ margin-right: 15px; width: 100px; height: 80px; border-radius: 5px; background-color: lightgreen; padding: 1em; }
应用到盒子元素 div 上。
<div class="float-box-2">浮动(float)</div> <!--略去其它HTML内容-->
此时看到显示在盒子下面的文本内容显示在了盒子的右边。
float 值可以指定 left 或 right,当指定了之后浮动盒子会吸附在文档的左边或右边。
直观地感受浮动
为了清晰感受盒子的浮动,为第一个段落加上背景色。定义如下样式。
.first-p { background-color: orange; padding: 10px; }
应用到第一个段落上。
<div class="float-box-2">浮动(float)</div> <p class="first-p"> CSS 全称 Cascading Style Sheets,层叠样式表。 样式表的作用,就像给房子装修差不多,它就是为 HTML 页面进行装修,让它变得更好看。 </p> <!--略去其它HTML内容-->
可以看到,内容的背景色处于盒子之下。换言之,盒子浮动在内容之上。
清除浮动
上图中,第二段内容也显示在了盒子的右边,意思是此时的浮动并没有结束,如果想让浮动从第二段开始结束。可以使用 clear 属性。
为第二段文本添加如下 clear 样式类。
.second-p { clear: left; }
应用到第二个段落中。
<div class="float-box-3">浮动(float)</div> <p class="first-p"> CSS 全称 Cascading Style Sheets,层叠样式表。 样式表的作用,就像给房子装修差不多,它就是为 HTML 页面进行装修,让它变得更好看。 </p> <p class="second-p"> 在学习 CSS 之前,需要首先知道 HTML,如果你还不会的话,可以先去把 HTML21 天入门教程啃完。 CSS 的学习,同样需要大量的练习,而练习所使用的工具,和 HTML 的学习一致。 </p> <!--略去其它HTML内容-->
此时看到第二段内容显示在了盒子下面。
clear 的值有如下:
left:停止任何活动的左浮动 right:停止任何活动的右浮动 both:停止任何活动的左右浮动
清除浮动元素周围的盒子
虽然使用 clear 可以清除活动的浮动,但如果存在一个盒子 同时 包含了很高的浮动元素和一个很短的段落,情况就不太一样了。
.wrapper-1 { background-color: lightblue; padding: 10px; }
将前面的浮动盒子和第一个段落,放到一个盒子容容器 div 里。
同时去掉第二个段落上应用的 clear 样式。
<div class="wrapper-1"> <div class="float-box-3">浮动(float)</div> <p> CSS 全称 Cascading Style Sheets,层叠样式表。 样式表的作用,就像给房子装修差不多,它就是为 HTML 页面进行装修,让它变得更好看。 </p> </div> <p> 在学习 CSS 之前,需要首先知道 HTML,如果你还不会的话,可以先去把 HTML21 天入门教程啃完。 CSS 的学习,同样需要大量的练习,而练习所使用的工具,和 HTML 的学习一致。 </p>
可以看到,盒子依然是浮动在容器之上。这是因为盒子处于文档流之外,没有被窗口包围。
有三种办法处理这情况,一个一个来看。
clearfix 小技巧
这个办法被称为 clearfix 小技巧,它用于伪元素::after,在容器元素后面创建了一个内容为空的块元素,然后应用 clear 属性在它上面。
.wrapper-1::after { content: ''; clear: both; display: block; }
这样看到容器完全包围了盒子。
使用 overflow
另外一办法是在容器中使用 overflow 属性。
.wrapper { background-color: lightblue; padding: 10px; overflow: auto; }
在容器中添加 overflow,并且去掉前面添加的::after 伪元素样式,看到的效果和前面一样。
display: flow-root
另一种新的方式,是在容器中定义 display 属性为 flow-root,它的效果和前面两种一样。
.wrapper { background-color: lightblue; padding: 10px; display: flow-root; }
到此我们大概讲完了浮动属性,它的这些特定被早期的布局大量使用,了解它有助于理解早期布局。
总结
该文章在 2024/10/19 12:44:05 编辑过