CSS之浮动属性
创始人
2025-05-31 19:37:24
0

系列文章目录

前端系列文章——传送门
CSS系列文章——传送门


文章目录

  • 系列文章目录
    • 1.HTML 页面的文档流
      • 1.标准文档流
      • 2.留存弊端
    • 2.什么是浮动?
    • 3.浮动的属性
    • 4.浮动的特征
    • 5.浮动的作用
    • 6.浮动的弊端
      • 导致高度塌陷
      • 解决方案:
        • 1. 直接添加高度(不推荐)
        • 2. 额外标签法(不推荐)
        • 3. 父级添加 `overflow` 属性(不推荐)
        • 4. 使用 `after` 伪元素清除浮动
        • 5. 使用 before 和 after 双伪元素清除浮动


1.HTML 页面的文档流

1.标准文档流

标准文档流指的是元素排版布局过程中,
元素会默认自动从左往右,
从上往下的流式排列方式,
当前面内容发生了变化,
后面的内容位置也会随着发生变化!

2.留存弊端

无论多么复杂的布局,其基本出发点均是:“如何在一行显示多个div元素”
显然标准流已经无法满足需求,这就要用到浮动
以及某些元素会出现的特定区域,这就要用到定位

2.什么是浮动?

浮动可以理解为让某个div元素脱离标准流,漂浮在标准流之上,和标准流不是一个层次

浮动层:给元素的 float 属性赋值后,就是脱离文档流,进行左右浮动,紧贴着父元素(默认为body文本区域)的左右边框

而此浮动元素在文档流空出的位置,由后续的(非浮动)元素填充上去

块级元素直接填充上去,若跟浮动元素的范围发生重叠,浮动元素覆盖块级元素

3.浮动的属性

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

浮动后的div宽度会变成 0,但是其内边框可能撑起它的宽和高

4.浮动的特征

  1. 块级元素失去“块状”换行显示特征,变为行内元素
  2. 紧贴着上一个浮动元素(同方向)或父元素的边框,如果宽度不够将换行显示
  3. 占据行内元素的空间、导致行内元素围绕显示 — 图文环绕效果
  4. 可以强迫浮动元素换行显示, 使用 clear 属性
clear:none:	默认值,允许两边都可以有浮动对象left:	不允许左边有浮动对象right:	不允许右边有浮动对象both:	两边都不允许都浮动对象

5.浮动的作用

  • 使多个div显示在同一行
  • 常见的效果:各种导航栏,商品的排版,新闻的排版,文字环绕效果…

6.浮动的弊端

导致高度塌陷

当对于所有的子元素都设置了浮动之后,
而父元素没有去设置高度,
父元素失去了支撑同时父元素的高度消失,
缩成了一条线,高度出现了塌陷

解决方案:

1. 直接添加高度(不推荐)

高度固定死,内容如果是后端返回的数据不固定的话,不够灵活

2. 额外标签法(不推荐)

在最后一个浮动标签后,新加一个标签,给其设置 clear:both
clear: both, 本质是闭合浮动,就是让父盒子闭合出口和入口,不让子盒子出来
如果我们清除了浮动,父元素自动检测子盒子最高的高度,然后与其同高

  • 优点:通俗易懂,方便
  • 缺点:添加无意义标签,语义化差

3. 父级添加 overflow 属性(不推荐)

父元素添加 overflow:hidden
overflow: hidden, 本质是通过触发BFC方式,实现清除浮动

  • 优点:代码简洁
  • 缺点:内容增多的时候容易造成不会自动换行导致内容被隐藏掉,无法显示要溢出的元素

4. 使用 after 伪元素清除浮动

  • 优点:符合闭合浮动思想,结构语义化正确
  • 缺点:ie6-7不支持伪元素::after,使用zoom:1触发hasLayout
.clear::after {content: '';display: block;(必须变成块元素)height:0; 处理兼容,让没有高度visbility: hidden;处理兼容,让消失clear: both;}
.clear {*zoom: 1;/* ie6 清除浮动的方式, * 号 只有在IE6 IE7执行,其他浏览器不执行 */
}

5. 使用 before 和 after 双伪元素清除浮动

  • 优点:代码更简洁
  • 缺点:用zoom:1触发hasLayout
.clear::after, .clear::before {content: '';display: block;
}
.clear::after {clear: both;
}
.clear {*zoom: 1;/* ie6 清除浮动的方式, * 号 只有在IE6 IE7执行,其他浏览器不执行 */
}

相关内容

热门资讯

linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
C++ 机房预约系统(六):学... 8、 学生模块 8.1 学生子菜单、登录和注销 实现步骤: 在Student.cpp的...
JAVA多线程知识整理 Java多线程基础 线程的创建和启动 继承Thread类来创建并启动 自定义Thread类的子类&#...
【洛谷 P1090】[NOIP... [NOIP2004 提高组] 合并果子 / [USACO06NOV] Fence Repair G ...
国民技术LPUART介绍 低功耗通用异步接收器(LPUART) 简介 低功耗通用异步收发器...
城乡供水一体化平台-助力乡村振... 城乡供水一体化管理系统建设方案 城乡供水一体化管理系统是运用云计算、大数据等信息化手段࿰...
程序的循环结构和random库...   第三个参数就是步长     引入文件时记得指明字符格式,否则读入不了 ...
中国版ChatGPT在哪些方面... 目录 一、中国巨大的市场需求 二、中国企业加速创新 三、中国的人工智能发展 四、企业愿景的推进 五、...
报名开启 | 共赴一场 Flu... 2023 年 1 月 25 日,Flutter Forward 大会在肯尼亚首都内罗毕...
汇编00-MASM 和 Vis... Qt源码解析 索引 汇编逆向--- MASM 和 Visual Studio入门 前提知识ÿ...
【简陋Web应用3】实现人脸比... 文章目录🍉 前情提要🌷 效果演示🥝 实现过程1. u...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
windows安装JDK步骤 一、 下载JDK安装包 下载地址:https://www.oracle.com/jav...
分治法实现合并排序(归并排序)... 🎊【数据结构与算法】专题正在持续更新中,各种数据结构的创建原理与运用✨...
在linux上安装配置node... 目录前言1,关于nodejs2,配置环境变量3,总结 前言...
Linux学习之端口、网络协议... 端口:设备与外界通讯交流的出口 网络协议:   网络协议是指计算机通信网...
Linux内核进程管理并发同步... 并发同步并发 是指在某一时间段内能够处理多个任务的能力,而 并行 是指同一时间能够处理...
opencv学习-HOG LO... 目录1. HOG(Histogram of Oriented Gradients,方向梯度直方图)1...
EEG微状态的功能意义 导读大脑的瞬时全局功能状态反映在其电场结构上。聚类分析方法一致地提取了四种头表面脑电场结构ÿ...
【Unity 手写PBR】Bu... 写在前面 前期积累: GAMES101作业7提高-实现微表面模型你需要了解的知识 【技...