登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
园子
关于
博客
发1篇日志+1圆
记录
发1条记录+2圆币
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
VIP申请
网盘
联系我们
道具
勋章
任务
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
业界
›
Web前端入门第 40 问:CSS float 浮动布局应用场景 ...
Web前端入门第 40 问:CSS float 浮动布局应用场景
[ 复制链接 ]
姨番单
前天 22:01
CSS float 浮动属性最早用于文字环绕图片效果,就像传统报纸上的印刷排版一样。
CSS2 的规范推动了浮动用于其他元素,float 便被大范围应用于布局,当年常说的 div + css 布局,float 绝对占有一席之地,float 用于布局手段便颠覆了再之前的表格布局,如今表格只用于数据展示。
而今 CSS3 推动 flex 弹性盒子和 grid 网格布局规范,float 的地位有点像当年的表格布局一样,有种退出舞台的感觉,但一些简单的布局用 float 比 flex 更简单。而且最初的文字环绕效果,其他的 CSS 属性都不好使,非 float 莫属。
float 应用场景
虽说如今 CSS 的 float 浮动属性在布局领域败北,被 flex 一脚踢在了岸边上,但这一脚还不至死,float 多少还有一口气在~
两列左右布局
还是以经典的左右两端布局为例,看看浮动的用处:
看 left 和 right 两个位置,分别位于左右两侧,使用 float 的实现:
left
right
复制代码
直接将两个元素分别设置 float 即可实现以上布局,但这里埋了一个坑!
父级元素高度塌陷
我们给 .box 的容器添加一个小小的边框属性,看看效果就会发现问题:
left
right
复制代码
显示效果:
父级元素高度没有了,四条边框变成了一条线,这是为何?
原因便是 float 的名字 浮动,float 不只是名字叫浮动,还在于它的作用也是 浮动,让元素飘起来,不在占用空间位置,但是与定位又不一样,float 的元素还受父级控制,但又不占用父级元素空间,所以就造成了高度塌陷,那怎么解决这个问题??
最简易的做法是给 .box 添加一个 overflow: hidden; 便可以让父级高度恢复:
left
right
复制代码
显示效果:
overflow: hidden; 的问题:
虽然高度塌陷的问题是解决了,但是 overflow: hidden; 也会造成其他问题,比如:如果有内容溢出了容器,就再也看不到了~~
此方法仅适用于没有内容溢出的容器清除浮动。
最佳的清除浮动方法
MDN 的一个小角落里面,有这么一个 CSS 属性 clear,它的名称就是它的作用:清除,对头,就是用来清除浮动的,没其他意思。
用法嘛,它有多个属性值,别想那么多,就用最常见的 both 就行,其他值等要用了再说,扣代码这么多年的前端经历,也没见用上其他值~~
这儿建议用一个伪对象 after,别问为什么,问就是不想再新增一个空的 html 元素用来清除浮动,代码如下:
/**清除浮动**/
.clearfix:after {
visibility: hidden;
display: block;
font-size: 0;
content: " ";
clear: both;
height: 0;
}
.clearfix {
*zoom:1;
}
复制代码
至于为什么要那么多的代码,嘿嘿...为了兼容各种赖克宝浏览器。百度首页的代码中都还找到有这样的代码,嘿,说明百度还在支持赖克宝浏览器~~
如果不考虑兼容,直接可以这样玩:
.clearfix:after {
content: "";
display: block;
clear: both;
}
复制代码
用法:
left
right
复制代码
显示效果:
这个 clearfix 类可丢公用样式中,要清除浮动时候,直接加载容器盒子上即可!
美中不足的是,容器 box 伪对象 after 被占用了,其他地方再想使用伪对象就会有冲突!!
改变元素位置
某某天,产品突发奇想,在左边的那个 left 给我放在右边去呗,右边的 right 给放在左边来下吧。
按照懒人思想,我肯定不想再去动 HTML 结构了,看看使用 float 来做到 flex 的 order 排序效果:
left
right
复制代码
注意看代码中的 float: right; 和 float: left; 位置。
仅需要对调一下 float 的位置,即可实现左右互换,而不用改变 HTML 结构!显示效果:
终极应用场景
float 的初衷是用于文字排版,虽说在布局方面,float 干不过 flex 和 grid,但在文字环绕这个场景中,float 还是老大哥。
文字环绕
以上这种文字环绕的效果,如果用 flex 和 grid 来做,不知道要将 HTML 结构拆成啥样,但对于 float 来说就是信手拈来的事儿。
代码:
<p>CSS float 浮动属性最早用于文字环绕图片效果,就像传统报纸上的印刷排版一样。</p>
浮动元素 left
浮动元素 right
<p>CSS2 的规范推动了浮动用于其他元素,float 便被大范围应用于布局,当年常说的 `div + css` 布局,float 绝对占有一席之地,float 用于布局手段便颠覆了再之前的表格布局,如今表格只用于数据展示。</p>
复制代码
几何形状文字环绕
利用 shape-outside 属性,可实现各种几何图形的文字环绕效果:
<p>CSS float 浮动属性最早用于文字环绕图片效果,就像传统报纸上的印刷排版一样。</p>
浮动元素 left
浮动元素 right
<p>CSS2 的规范推动了浮动用于其他元素,float 便被大范围应用于布局,当年常说的 `div + css` 布局,float 绝对占有一席之地,float 用于布局手段便颠覆了再之前的表格布局,如今表格只用于数据展示。</p>
复制代码
以上代码定义了一个 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。
技术的发展让曾经的经典布局已经逐渐退出舞台,我们在学习新的方案时,也需要回望一下过去,也许某个需求,这些旧的技术也会重新被摆上案桌。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
那些年搞不懂的高深术语——依赖倒置•控制反转•依赖注入•面向接口编程
如何优雅的使用RabbitMQ
分布式锁1 Java常用技术方案
浅谈我对DDD领域驱动设计的理解
游戏编程十年总结(下)
【前端性能】高性能滚动 scroll 及页面渲染优化
验证码对抗之路及现有验证机制介绍
从零开始入门 K8s | 手把手带你理解 etcd
中文写程序,何陋之有?
公司的中场
NHibernate之旅(2):第一个NHibernate程序
谈谈如何从本质上理解sql语句, 存储过程,ORM之间的联系和取舍。
Android 系统缺陷不完全点评
.net环境下跨进程、高频率读写数据
FFmpeg开发笔记(六十二)Windows给FFmpeg集成H.266编码器vvenc
第二个iPhone应用程序:“Say Hello”
从零开始学习jQuery (十一) 实战表单验证与自动完成提示插件
关于编程的胡扯
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
签约作者
程序园优秀签约作者
发帖
姨番单
前天 22:01
关注
0
粉丝关注
1
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
敖可
9998
喝岖
9998
森萌黠
9998
4
姨番单
9998
5
裒噎
9998
6
里豳朝
9998
7
愤血冒
9998
8
澹台忆然
9998
9
少屠
9998
10
蜴间囝
9998
查看更多