CSS float 浮动布局应用场景
笔记哥 /
04-23 /
45点赞 /
0评论 /
600阅读
CSS float 浮动属性最早用于文字环绕图片效果,就像传统报纸上的印刷排版一样。
CSS2 的规范推动了浮动用于其他元素,float 便被大范围应用于布局,当年常说的 `div + css` 布局,float 绝对占有一席之地,float 用于布局手段便颠覆了再之前的表格布局,如今表格只用于数据展示。
而今 CSS3 推动 flex 弹性盒子和 grid 网格布局规范,float 的地位有点像当年的表格布局一样,有种退出舞台的感觉,但一些简单的布局用 float 比 flex 更简单。而且最初的文字环绕效果,其他的 CSS 属性都不好使,非 float 莫属。
## float 应用场景
虽说如今 CSS 的 float 浮动属性在布局领域败北,被 flex 一脚踢在了岸边上,但这一脚还不至死,float 多少还有一口气在~
### 两列左右布局
还是以经典的左右两端布局为例,看看浮动的用处:

看 left 和 right 两个位置,分别位于左右两侧,使用 float 的实现:
```html
left
right
```
直接将两个元素分别设置 `float` 即可实现以上布局,但这里埋了一个坑!
### 父级元素高度塌陷
我们给 `.box` 的容器添加一个小小的边框属性,看看效果就会发现问题:
```html
left
right
```
显示效果:

父级元素高度没有了,四条边框变成了一条线,这是为何?
原因便是 float 的名字 `浮动`,float 不只是名字叫浮动,还在于它的作用也是 `浮动`,让元素飘起来,不在占用空间位置,但是与定位又不一样,float 的元素还受父级控制,但又不占用父级元素空间,所以就造成了高度塌陷,那怎么解决这个问题??
最简易的做法是给 `.box` 添加一个 `overflow: hidden;` 便可以让父级高度恢复:
```html
left
right
```
显示效果:

\*\*overflow: hidden; 的问题:\*\*
虽然高度塌陷的问题是解决了,但是 `overflow: hidden;` 也会造成其他问题,比如:如果有内容溢出了容器,就再也看不到了~~
此方法仅适用于没有内容溢出的容器清除浮动。
### 最佳的清除浮动方法
MDN 的一个小角落里面,有这么一个 CSS 属性 `clear`,它的名称就是它的作用:`清除`,对头,就是用来清除浮动的,没其他意思。
用法嘛,它有多个属性值,别想那么多,就用最常见的 `both` 就行,其他值等要用了再说,扣代码这么多年的前端经历,也没见用上其他值~~
这儿建议用一个伪对象 `after`,别问为什么,问就是不想再新增一个空的 html 元素用来清除浮动,代码如下:
```css
/\*\*清除浮动\*\*/
.clearfix:after {
visibility: hidden;
display: block;
font-size: 0;
content: " ";
clear: both;
height: 0;
}
.clearfix {
\*zoom:1;
}
```
至于为什么要那么多的代码,嘿嘿...为了兼容各种赖克宝浏览器。百度首页的代码中都还找到有这样的代码,嘿,说明百度还在支持赖克宝浏览器~~
如果不考虑兼容,直接可以这样玩:
```css
.clearfix:after {
content: "";
display: block;
clear: both;
}
```
用法:
```html
left
right
```
显示效果:

这个 `clearfix` 类可丢公用样式中,要清除浮动时候,直接加载容器盒子上即可!
美中不足的是,容器 box 伪对象 `after` 被占用了,其他地方再想使用伪对象就会有冲突!!
### 改变元素位置
某某天,产品突发奇想,在左边的那个 `left` 给我放在右边去呗,右边的 `right` 给放在左边来下吧。
按照懒人思想,我肯定不想再去动 HTML 结构了,看看使用 float 来做到 flex 的 order 排序效果:
```html
left
right
```
注意看代码中的 `float: right;` 和 `float: left;` 位置。
仅需要对调一下 float 的位置,即可实现左右互换,而不用改变 HTML 结构!显示效果:

## 终极应用场景
float 的初衷是用于文字排版,虽说在布局方面,float 干不过 flex 和 grid,但在文字环绕这个场景中,float 还是老大哥。
### 文字环绕

以上这种文字环绕的效果,如果用 flex 和 grid 来做,不知道要将 HTML 结构拆成啥样,但对于 float 来说就是信手拈来的事儿。
代码:
```html
CSS float 浮动属性最早用于文字环绕图片效果,就像传统报纸上的印刷排版一样。
浮动元素 left
浮动元素 right
CSS2 的规范推动了浮动用于其他元素,float 便被大范围应用于布局,当年常说的 `div + css` 布局,float 绝对占有一席之地,float 用于布局手段便颠覆了再之前的表格布局,如今表格只用于数据展示。
```
### 几何形状文字环绕
利用 `shape-outside` 属性,可实现各种几何图形的文字环绕效果:
```html
CSS float 浮动属性最早用于文字环绕图片效果,就像传统报纸上的印刷排版一样。
浮动元素 left
浮动元素 right
CSS2 的规范推动了浮动用于其他元素,float 便被大范围应用于布局,当年常说的 `div + css` 布局,float 绝对占有一席之地,float 用于布局手段便颠覆了再之前的表格布局,如今表格只用于数据展示。
```
以上代码定义了一个 `circle` 的圆形区域,文字将会围绕这个圆形区域显示,效果:

更多几何图形参考 MDN:https://developer.mozilla.org/zh-CN/docs/Web/CSS/basic-shape
### float 新的属性值
float 属性值除了常用的 `left`、`right`和`none` 外,2023 的规范还新增了 `inline-start`、`inline-end` 这俩兄弟,他们主要用于处理不同的书写方式,比如有些语言是从右往左的书写模式,`float: inline-start;` 就会浮动到语言书写开始的地方,看例子:
将 `float: left` 改成 `float: inline-start;` 再将 box 的书写方向改为 `direction: rtl;`,再看效果:

可以看到 inline-start 就是往文字开始的地方浮动,这个值对于不同的书写方向还是有用的。但需注意兼容性,毕竟 2023 年才新增的。
## 总结
虽说 float 浮动属性很少再用于布局,但在文字环绕排版时,还是需要掏出 float。
本文来自投稿,不代表本站立场,如若转载,请注明出处:http//www.knowhub.vip/share/2/2502
- 热门的技术博文分享
- 1 . ESP实现Web服务器
- 2 . 从零到一:打造高效的金仓社区 API 集成到 MCP 服务方案
- 3 . 使用C#构建一个同时问多个LLM并总结的小工具
- 4 . .NET 原生驾驭 AI 新基建实战系列Milvus ── 大规模 AI 应用的向量数据库首选
- 5 . 在Avalonia/C#中使用依赖注入过程记录
- 6 . [设计模式/Java] 设计模式之工厂方法模式
- 7 . 5. RabbitMQ 消息队列中 Exchanges(交换机) 的详细说明
- 8 . SQL 中的各种连接 JOIN 的区别总结!
- 9 . JavaScript 中防抖和节流的多种实现方式及应用场景
- 10 . SaltStack 远程命令执行中文乱码问题
- 11 . 推荐10个 DeepSeek 神级提示词,建议搜藏起来使用
- 12 . C#基础:枚举、数组、类型、函数等解析
- 13 . VMware平台的Ubuntu部署完全分布式Hadoop环境
- 14 . C# 多项目打包时如何将项目引用转为包依赖
- 15 . Chrome 135 版本开发者工具(DevTools)更新内容
- 16 . 从零创建npm依赖,只需执行一条命令
- 17 . 关于 Newtonsoft.Json 和 System.Text.Json 混用导致的的序列化不识别的问题
- 18 . 大模型微调实战之训练数据集准备的艺术与科学
- 19 . Windows快速安装MongoDB之Mongo实战
- 20 . 探索 C# 14 新功能:实用特性为编程带来便利
- 相关联分享
- CSS position定位布局全解析
- CSS float 浮动布局应用场景
- JavaScript 3 种书写位置及 script 标签的正确存放位置
- JavaScript 的各种调试方法
- 细说 CSS grid 网格布局子元素相关属性
- 神奇的 transform 改变元素形状,matrix3d 矩阵变换算法演示
- CSS 选择器的优先级
- 移动端适配的视口元标签(meta)常见使用场景
- CSS @media 媒体查询不要只会视口宽度适配详解
- CSS 动画之过渡属性 transition 改变用户体验
- 纯 CSS 使用 column 属性实现瀑布流布局
- CSS offset 路径动画演示
- CSS flex 弹性盒子与 grid 网格布局区别及应用场景
- CSS Flex弹性盒子布局全解析
- Web前端入门之CSS 单位详解
- 浏览器如何确定最终的CSS属性值?解析计算优先级与规则
- 多图细说 CSS grid 网格布局父元素容器相关属性
- CSS 循环动画 animation 效果解析和演示
- Web前端入门之CSS中11种颜色写法全解析
- Web前端入门:CSS元素外观属性(边框、阴影、轮廓、透明度)
- 深入理解 CSS 变量 var() :实现主题换肤与代码功能
- CSS background 元素背景图用法全解
- Web前端入门:CSS常见布局的多种实现方式详解