Float在CSS中是一个重中之重的东西,因为他是一个强大的,极有作用的一个CSS属性,但如果你没有理解透这个Float的话,那将是一个难搞的事情,特别是对于初学者来说,更是一个棘手事情。那么从今天开始我们一起来探讨这个Float。
刚才说过了,Float是一个极有用的属性,首先表现在布局上,全前提是你要清楚他,了解他。这样才能达到知已知彼,方能百战百胜。下面我们先来看一段代码:
<div class="item"> <img src="w6144.gif alt="" /"> Widget 6144 <br>$39.95 </div> <div class="item"> <img src="w6145.gif" alt="" /> Widget 6145 <br>$44.95 </div>
div.item {border: 1px solid; padding: 5px;} div.item img {float: left; margin: 5px;}
上面的一段代码大家很容易能懂,但是像上面这样使用“float”就很容易出现下面这样的问题:
上图显示的效果很清楚的告诉我们,“img”浮动后,其父元素“div.item”就得不到拉伸,也就形像点说其内容无法撑开其本身的高度(如果里 面元素都进行浮动的话更是明显,)。那这样是不是一个Bug呢?我想这至少是一个败笔吧,有很多同学将要花大部分时间去解决这样的问题。
知道问题根源
我们在Office排版中常碰到图文混排的格式,如下图所示:
当然我们在Web应中是没有那么强大的,我们来看一种图片在左,文字在右的混排样式,这也是我们在网页中常用的格式之一(另一种是文字在左,图片在右的风格),如下图所示:
根据上图所示,我们很快能想像到要使用下面这样的一种结构来制作:
<p> ...text... <img src="jul31-03-sm.jpg" height="200" border="0" class="picture"> ...text... </p> <p> ...text... </p>
为了至使文字环在图片周围,我们将图片进行了浮动设置。而此时造成一个这样的现像:图像浮动后,此时图像伸出其包含的父元素“p”,换句话说,此时改变了父元素的自身高度。我们在段落“p”上加一个边框,效果更加明显:
上图这样的效果我们还可以接受,但是如果把浮动图像的父元素的高度改变一下呢?你将会看到这样的效果:
上图那样的效果你肯定是无法接受得了的吧。为了保持与传统的网页设计和作者的期望一样,css可以使浮动元素的父元素内容粘在其底部。这也是正常的文本流,所以“float”用于布局是强大的功能。
上面通过一个实例介绍了“float”问题的根源,下面我们一起来看看如何解决这样的问题?让我们的效果更趋于正常化:
解决问题方法
如果使用“float”创建一个非表格的布局,此时需要一种方法,要让这个浮动元素的周围元素得到伸展。目前,这需要一个结构性的Hack,换句话说我们只需要插入一个块元素,用这个块元素来关闭浮动,试想一下这样的一个结构:
<div class="item"> <img src="w6144.gif"> Widget 6144 <br>$39.95 <div class="clearer"> </div> </div> <div class="item"> <img src="w6145.gif"> Widget 6145 <br>$44.95 <div class="clearer"> </div> </div>
接着我们在“hr”元素上加上下面的样式代码:
div.clearer {clear: left; line-height: 0; height: 0;}
此时你将得到下图的效果:
上面我们使用的是“clear”属性来解决关闭浮动的问题,接下来我们在看一个设置“float”来清除浮动。
div.item {float: left; border: 1px solid; padding: 5px; width: 60%;} div.item img {float: left; margin: 5px;}
使用浮动“float”来清除浮动,我们只需要在浮动元素的父元素上也设置一个浮动,这两种方法相比较:第一种方法,我们需要增加一个额外的标签, 并且需要注意各浏览器下的微高兼容性;而第二种方法虽然不需要增加额外的标签,但在父元素设置“float”后,元素宽度会随其内容进行变化,此时我们需 要设置一个宽度,此处设了一个宽度大于“50%”,主要是让元素不相邻显示在同一行。
上面展示的只是其中的两种关闭浮动的方法,其实关闭浮动的方法我们还有多种,如果大家感兴趣的话可以参考本站的《Clear Float》一文。
总结一点:上 面主要通过实例让大家了解到,任何元素设置了“float”都会改变文档的默认流,换句话说浮动元素改变了当初的文档流,造成其父元素无法自动伸展其高 度,为了让浮动元素的周围元素能恢复到正常文档流,我们需要想办法来关闭浮动元素。总而言之,你的元素开始了浮动,你就要想办法去关闭浮动。这句话听起来 好像自相矛盾一样,但当你理解了浮动是怎么一回事,那么你就不会这么想了。
回顾起来,自己都觉得这篇博文写的难以理解,希望大家能通过自己的方式理解清楚float是怎么一回事,或者大家可以点击Eric A. Meyer的《Containing Floats》。如果大家有更好的分享受,可以在评论中随时留言。希望大家能喜欢。
相关推荐
在实际开发中,理解并熟练运用CSS的`float`属性是构建响应式和自适应网页设计的关键技能之一。同时,掌握如何正确管理和清除浮动对于保持页面布局的稳定性至关重要。通过阅读压缩包内的CHM文档,开发者可以深入学习`...
然而,`float`带来的问题之一是“浮动塌陷”(Float Drop)。当一个父容器的所有子元素都设置了`float`,父容器可能会失去其高度,导致背景颜色、边框等无法正确显示。解决这个问题的方法通常有以下几种: 1. 添加...
尽管大多数CSS属性可以通过上述两种方式之一来操作,但是`float`属性却是个例外。如果我们尝试使用`obj.style.float`来操作`float`属性,会发现这种方式在某些浏览器(尤其是IE)中不起作用。 正确的处理方法是: ...
CSS(层叠样式表)是前端开发者必须掌握的基本技术之一,它负责网页的样式和布局。早期的CSS 2.1版本缺乏现代化的布局工具,而到了CSS3时代,引入了flex和grid这样的布局模型,极大地方便了Web布局的设计。然而,...
在“css3-image-float-reversal”这个示例中,可能包含了使用上述技术之一或多种组合,以实现图片或元素的浮动方向反转。学习这样的例子有助于深化对CSS3布局技术的理解,提升网页设计和开发的技巧。为了更好地掌握...
float官方文档概念 float属性指定一个盒子(元素)是否应该浮动,可以设置浮动方向。 css语法 float:left|right|none|inherit ;... CSS之float详解 .left { height: 60px; width: 60px; background-color: #ff
本资源"CSS布局之道"是一个专为初学者准备的学习资料,旨在帮助新手掌握CSS布局的核心概念和技术。 1. **CSS基础知识**:首先,了解CSS的基本语法和选择器至关重要。包括ID选择器、类选择器、元素选择器等,以及...
其中,利用 JavaScript 动态控制元素样式的能力是实现页面动态效果的重要手段之一。本文主要介绍如何通过 JavaScript 来操作 CSS 中的 `float` 属性,并探讨其特殊之处。 #### 一、背景知识 1. **CSS `float` 属性...
总的来说,理解并熟练运用CSS的`float`属性是创建复杂网页布局的关键技能之一。然而,随着现代CSS布局技术如Flexbox和Grid的发展,`float`在某些场景下可能不再是首选解决方案,但仍对理解网页布局机制至关重要。
浮动(float)是CSS布局中的一个重要概念,它使得元素能够脱离正常文档流,向左或向右移动,直至其边框接触到包含框或另一个浮动元素的边框。这个特性最初设计是为了实现图文环绕效果,但现在在网页布局中有着广泛的...
然而,这种浮动特性可能会导致一些意料之外的结果,其中之一就是“父级元素无法被子元素完全撑开”,即父级`div`不会根据内部浮动`div`的大小自动调整其高度。 这个现象的原因在于,当元素浮动后,它会脱离常规文档...
【CSS基础学习】是网页设计领域中的重要环节,它是一种用于描述HTML或XML(包括如SVG、MathML等各种XML方言)文档样式的样式表语言。CSS(层叠样式表)让网页设计...开始探索这个丰富的资源库,开启你的CSS学习之旅吧!
CSS布局是其核心功能之一,它决定了元素在页面上的排列方式。 3. **盒模型**:理解CSS布局的基础是盒模型,每个HTML元素都可视为一个矩形的盒子,包含边距(margin)、边框(border)、填充(padding)和内容区域。...
标题中的“CSS布局详解浮动属性Float”指的是CSS布局中的一项重要技术——浮动(Float),它在网页设计中扮演着关键角色。描述虽然未提供具体内容,但可以推测文章将深入探讨浮动属性及其在创建网页布局中的应用。 ...
1. **层叠和继承**:CSS2.0的核心概念之一是层叠,它决定了哪些规则对元素生效。层叠根据规则的优先级来决定,优先级包括选择器的特异性、权重、继承和顺序。继承是CSS的一大特点,允许子元素继承父元素的一些样式...
在CSS布局中,`float`属性是一个至关重要的概念,它允许元素脱离正常文档流,并向左或向右移动,直到其边缘接触到包含框或另一个浮动元素的边缘。然而,`float`属性在不同浏览器间可能存在兼容性问题,尤其是在较旧...