前言
关于float,我相信大家都接触过,也都用过,应该都知道float的作用以及使用float时呈现的效果。但是,如果你仅仅是停留在了解的基础上,我相信float的很多行为会让你大吃一惊。下面我将根据一些例子来描述下float的一些特性。(博客从CSDN博客导入,排版有问题,原博客可看:css浮动float
测试例子
例子1 - 所有元素使用float:
<div class="dt">
<div>测试块一</div>
<span class="float">
普通流 - 非float
</span>
</div>
css代码
float {
/* float:right;*/ 先不赋予float属性
background-color:#FFC0CB;
color:#fff;
展示结果很正常,很好理解,没有什么问题。那让我们看看给元素赋上float属性会是什么样吧。
.float {
float:right;
background-color:#FFC0CB;
}
- 现象一:父元素(虚线部分)高度收缩了,为什么呢? 哦,原来是float元素会脱离文档流,不再占用父元素的空间,既然不占用空间,对父元素来说,float就好像不存在一样咯;
- 现象二:还有个特性,不知大家注意到没,float元素和父元素(width:400px)是右边对齐的,所以我们又得出一个结论:虽然float是脱离文档流的,对父元素来说好像不存在似的,但它是不会跑到父元素边界的外面,浮动还是受到父元素的限制的;
-
现象三:如果浮动元素前面有相邻的块级元素(block)的话,会把浮动元素挤到下面。
提示:有时我们仅仅希望使用浮动来进行文档布局,浮动元素的尺寸仍然保留,这就需要用到浮动清除(clear)了,关于浮动清除,主要应用到css元素clear: both处理,更详细的了解可以去网上搜索相关资料
关于现象三,如果元素前面有相邻的行内元素(inline)呢,又会出现什么样的结果?测试一下,HTML代码修改如下:
<div class="dt">
<span>测试块一</span>
<span class="float">
普通流 - 非float
</span>
</div>
为了更清晰看见效果,修改css中 float值为left:
.float {
float:left;
background-color:#FFC0CB;
}
看到了吧,如果浮动元素前面有相邻的行级元素(inline)的话,是不会把浮动元素挤到下面,相反浮动元素会把行级元素内容挤到后面去
例子2 - 当块级元素或行内元素遇上文档流
为了更好的演示,将HTML作以下修改:
<div class="dt">
<div>测试块一</div>
<span class="float">
普通流 - float:left
</span>
<div style="background-color:red;color:#fff;">
No wonder there's so much cynicism out there. No wonder there's so much disappointment.
</div>
</div>
float {
float:left;
background-color:#FFC0CB;
border:solid 1px blue;
/* 设置透明样式 */
filter:alpha(opacity=50);
-moz-opacity:0.5;
-khtml-opacity: 0.5;
opacity: 0.5;
}
通过半透名的float元素可看到,float元素脱离文档流了,对块级元素框(红色北京部分)进行了覆盖,但块级元素(block)里的行内元素(英文字母)在float元素后,所以float元素并没有对这些文字进行覆盖。所以这里可得出结论:浮动是脱离文档流的,会覆盖块级元素(block)的框,但不能覆盖行内元素(inline)的框。
可以参照下面例子作进一步验证:
修改HTML如下(将块级元素标签div换成行内元素标签span):
<div class="dt">
<div>测试块一</div>
<span class="float">
普通流 - float:left
</span>
<span style="background-color:red;color:#fff;">
No wonder there's so much cynicism out there. No wonder there's so much disappointment.
</span>
</div>
看见了吧,通过半透明的float元素,已经不能看见红色的背景色了。所以浮动元素不会覆盖行内元素(inline),只会”挤压”行内元素的空间。
例子3- 行内元素(inline)带上浮动属性
<div class="dt">
<div>测试块一</div>
<span class="float" style="width:300px;height:200px;">
普通流 - 非float
</span>
</div>
.float {
/*float:left;*/
background-color:#FFC0CB;
}
span是一个行内元素(inline),所以,对它设置width和height属性,是不会有任何效果的,从展示结果可以看出,确实无任何影响。那我将span元素加上浮动属性,会是什么样呢?看下面例子:
.float {
float:left;
background-color:#FFC0CB;
}
看见了吧,行内元素(inline)加上浮动属性,就有了block的特性啦。
总结
float在网页设计中是用的非常广的一个特性,但它也是一个非常古怪、难琢磨的东西,要想透彻的理解它的特性,看来还是需要好好测试、验证。
版权声明:本文为博主原创文章,未经博主允许不得转载。
相关推荐
CSS浮动float属性详解 在Web开发中,布局是非常重要的一方面,浮动float属性是CSS布局中非常关键的属性。通过对浮动float属性的理解和掌握,我们可以更好地实现网页的布局和排版。 Float浮动属性基本释义 float...
DIVCSS布局:CSS浮动float属性详解.doc
从零开始学前端 - 6. CSS浮动float详解 示例代码 : 她不美却常驻我心 博客地址: https://blog.csdn.net/qq_39506551 CSDN 上传的资源会自动涨积分,如有需要留下邮箱
CSS 浮动属性 Float 详解 CSS 浮动属性 Float 是一种重要的定位属性,允许页面元素浮动在其他元素旁边。Float 属性可以取四个值:Left、Right、None 和 Inherit。其中,Left 和 Right 分别浮动元素到左边和右边,...
【CSS浮动(float属性)详解】 一、浮动的概念 浮动(float)是CSS布局中的一个重要概念,它使得元素能够脱离正常文档流,向左或向右移动,直至其边框接触到包含框或另一个浮动元素的边框。这个特性最初设计是为了...
浮动(float)和定位(position)是CSS布局中的两个关键概念,它们在网页设计中扮演着重要角色,用于控制元素的位置和排列方式。 一、浮动(float) 浮动最初设计的目的是为了实现文本环绕图片的效果,但后来发展成为一种...
css float是一个经常需要使用的css属性,该属性用于设置css块级元素的浮动方向(左右浮动)。本文向码农介绍css float使用方法和实例应用。 Css的float浮动属性,用于设置标签对象(如:标签盒子、标签、标签、标签...
CSS浮动属性Float详解 CSS浮动属性Float是CSS中的一种定位方式,它可以使元素在网页流中浮动,周围的元素可以围绕它排列。浮动元素仍然是网页流的一部分,这与使用绝对定位的页面元素不同。绝对定位的页面元素被从...
**一、CSS浮动** 浮动(Float)最初是为了实现图文混排而引入的,但现在已成为构建多列布局的基础。当一个元素被设置为浮动,它会脱离当前的正常流(normal flow),向左或向右移动,直到其边框碰到包含元素的边框...
浮动(float)是CSS布局中的一个核心概念,尤其在传统网页设计中扮演了重要角色。它允许元素在容器内水平移动,直到其边缘碰到容器的边框或其他浮动元素。本篇文章将深入探讨浮动的工作原理,以及如何有效地利用它来...
如何正确的理解CSS的float浮动属性.pdf
在CSS世界中,`float`和`clear`是两个非常重要的布局属性,它们在网页设计中扮演着不可或缺的角色。这两个属性对于理解盒模型以及创建复杂的网页布局至关重要。在这篇文章中,我们将深入探讨`float`和`clear`的概念...
具体详细的阐述了css浮动如何解决和浮动产生的原因。
CSS浮动是网页布局中一个重要的概念,主要用于创建多列布局。当一个元素被设置为浮动(float:left或float:right),它将从当前的流中移出,向左或向右移动,直到碰到边框或者另一个浮动元素。这个特性在早期网页设计...
内容概要:本文档全面讲解CSS浮动概念,浮动规则、实际应用及解决方案。详细讲述了通过使用float属性进行左右布局的基本方法,包括浮动的基础、浮动的常见规则以及在各种布局场合的应用示例,并着重解决了由浮动引发...
在这个特定的案例中,“div+css float 布局,适配手机”指的是利用 CSS 的浮动属性 (`float`) 来创建响应式网页布局,以便在手机等移动设备上也能正常显示。 浮动布局(float layout)是 CSS 中一个经典但仍然广泛...