前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >小结CSS的float属性

小结CSS的float属性

原创
作者头像
前端林子
修改于 2019-01-26 23:35:30
修改于 2019-01-26 23:35:30
5.2K00
代码可运行
举报
文章被收录于专栏:前端技术总结前端技术总结
运行总次数:0
代码可运行

本文将从以下三个方面介绍CSS的float属性:

  • 什么是float
  • 浮动引发的问题
  • 几种清除浮动的方法

1.什么是float

应用了float属性的元素,就像在印刷布局中,形成文字环绕图片的效果。除此之外,浮动还可以用于创建网页布局

1.1文本环绕图片

通过给图片设置float属性,形成文字环绕图片的效果,是float属性的常见应用场景之一:

效果:

附上实现代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html lang="en">

<head>
	<meta charset="UTF-8">
	<title>float:文字环绕效果</title>
	<style type="text/css">
		body {
			margin: 0;
			padding: 0;
		}

		img {
			float: left;
		}
	</style>
</head>

<body>
	<div class="container">
		<img src="./images/gakki.jpg" alt="gakki" />
		新垣结衣(Aragaki Yui),1988611日出生于冲绳县那霸市。日本女演员、歌手、模特。毕业于日出高中。
		2001年,参加《nicola》模特比赛并获得最优秀奖。2005年,因出演现代剧《涩谷15》而作为演员出道。2006年,参演校园剧《我的老大,我的英雄》;同年,她还出版了个人首本写真集《水漾青春》。2007年,她从日出高校毕业后开始专注于演艺发展,并发表个人首张音乐专辑《天空》;同年,新垣结衣还主演了爱情片《恋空》,而她也凭借该片获得了多个电影新人奖项
		。2010年,主演爱情片《花水木》。
		2011年,主演都市剧《全开女孩》。2012年,相继参演现代剧《Legal
		High》、剧情片《剧场版新参者:麒麟之翼》。2013年,主演都市剧《飞翔情报室》。2014年,她主演了剧情片《黎明的沙耶》。2016年,主演爱情喜剧《逃避虽可耻但有用》,并凭借该剧获得了多个电视剧女主角奖项。2017年,主演爱情片《恋爱回旋》,凭借该片获得第60届蓝丝带奖最佳女主角;同年11月,她还凭借医疗剧《Code
		Blue 3》获得第94届日剧学院赏最佳女配角 。2018年,出演电影《Code Blue》 ;主演爱情剧《无法化为野兽的我们》。
		新垣结衣长相甜美、笑容纯真,拥有天使般笑容的她被受访者们称为“治愈系”美女。而在电影《恋空》中她的表演既具深度又生活化。

	</div>
</body>

</html>

1.2创建网页布局

float属性还常用于网页布局:

效果:

实现原理:

侧边栏、中间内容区域的元素设置向左浮动(float:left;),最下面的footer元素设置为清除左右两边的浮动(clear:both;)

2.float的属性值

float有四个可用的属性值:

left:元素向左浮动

right:元素向右浮动

none:默认值。元素不浮动,并会显示在其在文本中出现的位置。

inherit: 规定应该从父元素继承 float 属性的值。

3.浮动引发的问题

3.1破坏性

这个在我的上一篇文章小结BFC的基本知识与应用中也提过:如果父元素的子元素都是浮动元素,那么父元素的高度会发生高度塌陷。

导致这一现象的原因在于:

应用了float的元素会脱离文档流,即子元素都脱离了文档流,而父元素还处在正常的文档流中。自然,父元素不能被浮动子元素撑开,导致父元素的高度塌陷为零。

3.2包裹性

我们都知道,div元素是块级元素,会占据一行。而如果给div元素增加设置了float,看起来这个div元素会变得紧凑,宽度就是能把内容包裹住的宽度,例如:

3.3 其他问题

被设置了float的元素会脱离文档流,效果是布局时看起来是会尽量往一边靠拢,空格、换行这些都和该元素没关系了。

例如下面三个是正常的三个img图片,可以看到每个图片之间是有空格的:

而如果给img图片设置了float属性,就会看到图片直接没有空格了:

3.4 老IE中的问题

IE6、IE7有一些浮动相关 bug,由于越来越多的设计师不再支持 IE6 了,你也可以不关注它。不过对于那些要关注的人来说,这里有些大概[1]:

(1)推倒:

浮动元素内的元素(大多是图片)比浮动元素本身宽造成的现象。大多数的浏览器会在浮动之外渲染图片,但是不会有伸出来的部分影响其他布局。IE 会扩展浮动来包含图片,突破伸出主内容之外把侧栏推到下面。

快速修正:确保不是图片造成这种情况,使用 overflow:hidden 来切除多余的部分。

(2)双倍边距bug:

处理 IE6 时,需要记住的事情是,如果在和浮动方向相同的方向上设置外边距(margin),会引发双倍边距。

快速修正:给浮动设置 display:inline; 而且不用担心,它依然是块级元素。

(3)3像素间距:

挨着浮动元素的文本会神奇的被踢出去3像素,好像浮动元素的周围有一个奇怪的力场一样。

快速修正:在受影响的文本上设置宽度或高度。

(4)IE7 中,底边距 bug是当浮动父元素有浮动子元素时,这些子元素的底边距会被父元素忽略掉。快速修正:用父元素的底内补白(padding)代替。

4.如何清除浮动

4.1clear属性

规定元素的哪一侧不允许有其他浮动元素

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
clear: none | left | right | both

left:不允许左侧有浮动对象;

right:不允许右侧有浮动对象;

none:默认值,允许两边都有浮动对象;

both:两侧不允许有浮动对象。

例如上面1.2中创建网页布局中,就是将最下面的footer元素,设置为清除左右两边的浮动(clear:both;)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#footer {
			...
			clear: both;
		}

4.2使用空标签清除浮动

还是以上述为例,侧边栏、中间内容区域的元素设置向左浮动(float:left;),为了清除浮动,把侧边栏、中间栏外包一层父元素,然后在父元素的闭合标签前,增加一个空元素,并且设置它的clear:both;。<div>是最常用的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div style="clear:both;"></div>

代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div>
		<div id="side-bar">
			//侧边栏
		</div>
		<div id="main-content">
			//中间栏
		</div>
		<div style="clear:both;"></div>
	</div>

4.3触发BFC

还是以上述为例,侧边栏、中间内容区域的元素设置向左浮动(float:left;),为了清除浮动,给包含浮动元素的父元素,设置overflow:hidden;触发父元素生成BFC。由于BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素,反之亦然。所以父元素里面的浮动元素不会影响到外面的其他元素,达到清除浮动的效果。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div style="overflow: hidden;">
		<div id="side-bar">
			//侧边栏
		</div>
		<div id="main-content">
			//中间栏
		</div>
	</div>

4.4clearfix(推荐)

给设置了浮动的元素的父元素,设置clearfix样式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.clearfix:after {
            content: '';
            display: block;
            clear: both;
        }

        .clearfix {
            zoom: 1;//兼容低版本IE
        }

代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div class="clearfix">
		<div id="side-bar">
			//侧边栏
		</div>
		<div id="main-content">
			//中间栏
		</div>
	</div>

5.小结

本文主要结合了具体事例,分别介绍了什么是浮动、设置浮动会有什么影响,以及如何消除浮动。如有问题,欢迎指正。

参考:

[1]https://blog.csdn.net/zhongqing_fzq/article/details/51454120

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
2万字|30张图带你领略glibc内存管理精髓
看了下面所有的回答,要么是没有回答到点上,要么是回答不够深入,所以,借助本文,深入讲解C/C++内存管理。
高性能架构探索
2022/08/25
1.9K1
2万字|30张图带你领略glibc内存管理精髓
记一次内存占用问题的调查过程
最近在维护一台CentOS服务器的时候,发现内存无端"损失"了许多,free和ps统计的结果相差十几个G,搞的我一度又以为遇到灵异事件了,后来Google了许久才搞明白,特此记录一下,以供日后查询。
早起的鸟儿有虫吃
2020/06/07
4.1K0
技术分享 | MySQL: 压测结果很差怎么办
爱可生 DBA 团队成员,擅长故障分析、性能优化,个人博客:https://www.jianshu.com/u/a95ec11f67a8,欢迎讨论。
爱可生开源社区
2021/12/20
8330
技术分享 | MySQL: 压测结果很差怎么办
神秘!申请内存时底层发生了什么?
内存的申请释放对程序员来说就像空气一样自然,你几乎不怎么能意识到,有时你意识不到的东西却无比重要,申请过这么多内存,你知道申请内存时底层都发生什么了吗?
小林coding
2021/02/23
7360
神秘!申请内存时底层发生了什么?
万字长文,别再说你不懂Linux内存管理了,30 张图给你安排的明明白白
之前写了两篇详细分析 Linux 内存管理的文章,读者好评如潮。但由于是分开两篇来写,而这两篇内容其实是有很强关联的,有读者反馈没有看到另一篇读起来不够不连贯,为方便阅读这次特意把两篇整合在一起,看这一篇就够了!
程序员小猿
2021/01/19
2.7K0
万字长文,别再说你不懂Linux内存管理了,30 张图给你安排的明明白白
【操作系统】内存管理概述
常见的内存分配函数有malloc,mmap等,但大家有没有想过,这些函数在内核中是怎么实现的?换句话说,Linux内核的内存管理是怎么实现的?
嵌入式与Linux那些事
2024/05/11
2180
【操作系统】内存管理概述
一文读懂 Linux 内存分配全过程
在《你真的理解内存分配》一文中,我们介绍了 malloc 申请内存的原理,但其在内核怎么实现的呢?所以,本文主要分析在 Linux 内核中对堆内存分配的实现过程。
用户7686797
2021/05/11
1.7K0
一文读懂 Linux 内存分配全过程
一文浅析内存管理机制
众所周知,程序需要加载到物理内存才能运行,多核时代会出现多个进程同时操作同一物理地址的情况,进而造成混乱和程序崩溃。计算机当中很多问题的解决都是通过引入中间层,为解决物理内存使用问题,虚拟内存作为中间层进入了操作系统,从此,程序不在直接操作物理内存,只能看到虚拟内存,通过虚拟内存,非常优雅的将进程环境隔离开来,每个进程都拥有自己独立的虚拟地址空间,且所有进程地址空间范围完全一致,也给编程带来了很大的便利,同时也提高了物理内存的使用率,可同时运行更多的进程。
范蠡
2021/04/08
1.4K0
一文浅析内存管理机制
77%的Linux运维都不懂的内核问题
来源:高效运维 ID:greatops 前言 之前在实习时,听了 OOM 的分享之后,就对 Linux 内核内存管理充满兴趣,但是这块知识非常庞大,没有一定积累,不敢写下,担心误人子弟,所以经过一个一段时间的积累,对内核内存有一定了解之后,今天才写下这篇博客,记录以及分享。 【OOM - Out of Memory】内存溢出 内存溢出的解决办法: 1、等比例缩小图片 2、对图片采用软引用,及时进行 recycle( ) 操作。 3、使用加载图片框架处理图片,如专业处理图片的 ImageLoader 图片加
小小科
2018/06/20
2.1K0
频繁分配释放内存导致的性能问题的分析
1 压力测试过程中,发现被测对象性能不够理想,具体表现为: 进程的系统态CPU消耗20,用户态CPU消耗10,系统idle大约70 2 用ps -o majflt,minflt -C program命令查看(pidstat也可以),
早起的鸟儿有虫吃
2019/05/05
7.2K0
频繁分配释放内存导致的性能问题的分析
【春节红包系列】一次"内存泄漏"引发的血案
2017年末,手Q春节红包项目期间,为保障活动期间服务正常稳定,我对性能不佳的Ark Server进行了改造和重写。重编发布一段时间后,结果发现新发布的Svr的机器内存一直在上涨。如下图示:
叫你不戴帽子
2018/05/29
7.1K4
【春节红包系列】一次"内存泄漏"引发的血案
为什么MySQL内存占用这么大? for InnoDB
这是 Innodb 引擎最重要的缓存,也是提升查询性能的重要手段。一般是global共享内存中占用最大的部分。在进行 SQL 读和写的操作时,首先并不是对物理数据文件操作,而是先对 buffer_pool 进行操作,然后再通过 checkpoint 等机制写回数据文件。占用的内存启动后就不会自动释放,默认通过LRU的算法镜像缓存淘汰,每次的新数据页,都会插入buffer pool的中间,防止前面的热数据被冲掉,长时间没动静的冷数据,会被淘汰出buffer pool,但是是被其它新数据占用了,所以一般这里不会释放的,除非重启(5.7 开始支持动态调整,默认以128M的chunk单位分配内存块)。innodb_buffer_pool主要包含数据页、索引页、undo 页、insert buffer、自适应哈希索引、锁信息以及数据字典等信息。
elontian田凌翔
2019/11/11
7.9K0
为什么MySQL内存占用这么大? for InnoDB
软件性能测试(连载9)
Linux内核给每个进程都提供了一个独立的虚拟地址空间,并且这个地址空间是连续的。Linux的空间又分为内核空间和用户空间,在32位中,内核空间占1G,用户空间占3G;而在64位中,内核空间和用户空间各占128T。如图3-24所示。
顾翔
2020/02/20
9840
linux 内存管理初探
导语 linux 内存是后台开发人员,需要深入了解的计算机资源。合理的使用内存,有助于提升机器的性能和稳定性。本文主要介绍 linux 内存组织结构和页面布局,内存碎片产生原因和优化算法,linux
郑剑
2017/08/11
10.1K2
linux 内存管理初探
进程内存管理初探
随着cpu技术发展,现在大部分移动设备、PC、服务器都已经使用上64bit的CPU,但是关于Linux内核的虚拟内存管理,还停留在历史的用户态与内核态虚拟内存3:1的观念中,导致在解决一些内存问题时存在误解。
刘盼
2020/06/19
2.5K0
进程内存管理初探
内存问题探微
因为这是我被问的最频繁的问题,哎呀我的程序 OOM 了怎么办,我的程序内存超过配额被 k8s 杀掉了怎么办,我的程序看起来内存占用很高正常吗?
范蠡
2020/12/15
9500
内存问题探微
Linux 了解内存使用
目前大部分的操作系统和应用程序并不需要16EB( 2^64 )如此巨大的地址空间, 实现64位长的地址只会增加系统的复杂度和地址转换的成本, 带不来任何好处. 所以目前的x86-64架构CPU都遵循AMD的Canonical form, 即只有虚拟地址的最低48位才会在地址转换时被使用, 且任何虚拟地址的48位至63位必须与47位一致(sign extension). 也就是说, 总的虚拟地址空间为256TB( 2^48 )
黄规速
2022/04/14
3.8K0
Linux 了解内存使用
十问 Linux 虚拟内存管理 ( 一 )
该文章介绍了如何通过 pmap 命令查看进程的虚拟地址空间使用情况,包括起始地址、大小、实际使用内存、脏页大小、权限、偏移、设备和映射文件等。通过分析这些信息,可以更好地了解程序运行时的内存使用情况,并找出潜在的内存泄漏、内存碎片等问题。
陈福荣
2016/11/02
11.5K0
十问 Linux 虚拟内存管理 ( 一 )
【Linux 内核 内存管理】内存管理架构 ② ( 用户空间内存管理 | malloc | ptmalloc | 内核空间内存管理 | sys_brk | sys_mmap | sys_munmap)
glibc 提供的 ptmalloc 函数 , FreeBSD 提供的 jemalloc 函数 , Google 提供的 tcmalloc 函数 ,
韩曙亮
2023/03/30
1.1K0
当Linux用尽内存
也许你很少面临这一情况,但是一旦如此,你一定知道出什么错了:可用内存不足或者说内存用尽(OOM)。结果非常典型:你不能再分配内存,内核会杀掉一个任务(一般是正在运行那个)。一般半随着大量的交换读写,你可以从屏幕和磁盘动向看出来。
一见
2018/08/10
5.1K0
推荐阅读
相关推荐
2万字|30张图带你领略glibc内存管理精髓
更多 >
LV.4
上海顶简软件Java开发工程师
目录
  • 1.什么是float
    • 1.1文本环绕图片
    • 1.2创建网页布局
  • 2.float的属性值
  • 3.浮动引发的问题
    • 3.1破坏性
    • 3.2包裹性
    • 3.3 其他问题
    • 3.4 老IE中的问题
  • 4.如何清除浮动
    • 4.1clear属性
    • 4.2使用空标签清除浮动
    • 4.3触发BFC
    • 4.4clearfix(推荐)
  • 5.小结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档