CSS基础:浮动(float)的3种方式,清除浮动3种方式的详解

你好,我是云桃桃。

一个希望帮助更多朋友快速入门 WEB 前端的程序媛。

云桃桃-大专生,一枚程序媛,感谢关注。回复 “前端基础题”,可免费获得前端基础 100 题汇总,回复 “前端工具”,可获取 Web 开发工具合集

281篇原创内容-更多前端系列内容可以go公众.h:云桃桃

后台回复“前端工具”可获取开发工具,持续更新中

后台回复“前端基础题”可得到前端基础100题汇总,持续更新中

后台回复“前端电子书”可获取20+本精选电子书

前言

CSS 中常见的传统布局方式,包括普通流(标准流)、定位和浮动。这三种方式是网页布局中常用的基本手段,可以实现不同的排列和定位效果。

所谓普通流,也称为标准流或文档流,是指在没有进行特殊定位或浮动的情况下,元素按照其在 HTML 文档中的顺序从上到下依次排列的布局方式。

在普通流中,块级元素会垂直排列,各元素占据自己的一行,内联元素则水平排列在各自所在的行内。这种布局方式是 HTML 元素默认的排列方式,也是最常见的网页布局方式之一。

所谓定位,就是咱们之前文所说的CSS基础:position定位的5个类型详解!,指的是使用 CSS 中的定位属性(如 position: relative;position: absolute;position: fixed; 等)对元素进行定位,从而脱离文档流的布局方式。在定位流中,元素的位置不再受到普通流中其他元素的影响,可以根据指定的定位属性相对于父元素或视口进行定位。

而今天聊就是浮动了。浮动的主要作用是实现页面布局的多列设计,例如实现2~多栏布局。通过浮动,可以将多个元素水平排列。比如,淘宝的这个 3 栏布局,多行多栏的产品布局,都可以通过浮动实现。

图片

图片

浮动元素的特点和表现方式包括:

  1. 脱离文档流:浮动元素不再占据文档流中的位置,其他元素会围绕浮动元素进行排列。

  2. 元素块化:浮动元素表现为块级元素,会独占一行或一块空间。

  3. 水平移动:浮动元素默认是水平移动的,可以通过设置float: left;float: right;来控制移动方向。

了解并实践了浮动以后,基本就可以完成大多数非动态元素过多的网站了,比如,网易云音乐,淘宝,腾讯新闻,公众号等。

好,我们开始吧。

float 的 3 个属性值

CSS 中的 float 属性有三个属性值,分别是:

  1. left:元素向容器左侧浮动。

代码如下:

* {
  margin: 0;
  padding: 0;
}
.item {
  height: 200px;
  float: left;
  margin-right: 10px;
  line-height: 200px;
  text-align: center;
  color: #fff;
}
.item1 {
  width: 100px;

  background-color: #f00;
}
.item2 {
  background-color: #0f0;
  width: 400px;
}
.item3 {
  width: 200px;
  background-color: #00f;
}
<div class="parent-box">
  <div class="item item1">块1</div>
  <div class="item item2">块2</div>
  <div class="item item3">块3</div>
</div>

效果如下:

图片

  1. right:元素向右浮动。

代码如下,我们让前 2 个左浮动,最后一个右浮动:

* {
  margin: 0;
  padding: 0;
}
.item {
  width: 200px;
  height: 200px;
  margin-right: 20px;
  line-height: 200px;
  text-align: center;
  color: #fff;
}
.item1 {
  background-color: #f00;
  float: left;
}
.item2 {
  width: 800px;
  background-color: #0f0;
  float: left;
}
.item3 {
  float: right;
  background-color: #00f;
}

html 部分和上个案例一样。

效果如下:

图片

  1. none:默认值,元素不浮动,按照文档流正常排列。

代码就不举例了,默认不设置就是 none。

浮动带来的问题:

我们看一下第一个浮动的案例,当我们用 F12 开发者工具检查元素的时候,发现父级 parent-box 的高度,貌似并没有被子元素的 200 像素的高度,撑起来,是吧。而是这样,高度是 0,如图。

图片

这是因为,浮动元素脱离了文档流,可能导致父容器塌陷或者与其他元素重叠,影响页面布局的正常显示。怎么塌陷和重叠了呢?

比如,我们想在案例 1 下面,再写一行,希望它另起一行,代码如下:

<div class="parent-box">
  <div class="item item1">块1</div>
  <div class="item item2">块2</div>
  <div class="item item3">块3</div>
</div>
<div>
  <h1>我是新行的内容</h1>
  <div class="parent-box">
    <div class="item item1">块1</div>
    <div class="item item2">块2</div>
    <div class="item item3">块3</div>
  </div>
</div>

结果,发现,它跑到第一行右侧去了,这就是第一个父元素 parent-box 塌陷了,布局重叠了。

图片

那怎么办呢,清除浮动,就派上用场了。

清除浮动是指清除浮动元素对父容器的影响,使得父容器能够包含浮动元素及其后续内容。

清除浮动的 3 个方法

清除浮动的方法有多种,最通用的写法是最后 1 种,来一起看看。

  1. 使用空元素并设置 clear: both;:在浮动元素的后面添加一个空的块级元素,并通过设置 clear 属性为 both 来清除浮动。例如:

    <div style="clear: both;"></div>
    

    这种方法简单直接,但需要在 HTML 中添加额外的元素,不够简约,而且容易忘,对吧。

  2. 使用 overflow: hidden;清除浮动:将父容器设置为 overflow: hidden;,这样可以触发 BFC(块级格式化上下文),从而清除浮动。例如:

    .clearfix {
      overflow: hidden;
    }
    
    <div class="clearfix">
      <!-- 浮动元素 -->
      <div style="float: left;"></div>
      <div style="float: right;"></div>
    </div>
    

    这种方法不需要添加额外的元素,但可能会影响其他布局,不够合理。

  3. 使用 clearfix 技巧清除浮动(最常用,最推荐!):通过在父容器上应用 clearfix 类来清除浮动,通常使用伪元素来实现。例如:

    .clearfix::after {
      content: '';
      display: table;
      clear: both;
    }
    
    <div class="clearfix">
      <!-- 浮动元素 -->
      <div style="float: left;"></div>
      <div style="float: right;"></div>
    </div>
    

    这种方法不需要额外的 HTML 元素,也不会影响其他布局,只需要加上一个 class名 就行了,是一种最最最常用的清除浮动的方法。

    当清除后,那后续的布局也能正常重新开始了。拿我们案例 1 举例子,给父级加上.clearfix 以后,后续再多加几个块元素,高度,排版都没问题了。如图。

图片

图片

需要注意的是:这个 clearfix 呢,也是作为以后的 CSS 基础学习/项目中 重置里面的一个重要内容。项目里都带上就可以了。

下文,我们根据一些热门网站,我们来写几个浮动实例。

OK,本文完。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/564923.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【三维Dvhop定位】基于麻雀搜索算法的多通信半径和跳距加权的三维Dvhop定位算法【Matlab代码#81】

文章目录 【可更换其他算法&#xff0c;获取资源请见文章第6节&#xff1a;资源获取】1. Dvhop定位算法2. 麻雀搜索算法3. 多通信半径和跳距加权策略3.1 多通信半径策略3.2 跳距加权策略 4. 部分代码展示5. 仿真结果展示6. 资源获取 【可更换其他算法&#xff0c;获取资源请见文…

德迅云安全数据库审计——如何保障企业数据库安全

在当今快速发展的数字环境中&#xff0c;以人工智能 &#xff08;AI&#xff09; 的兴起和云计算的无处不在为标志&#xff0c;数据库安全的重要性从未如此突出。随着数据库日益成为人工智能算法和基于云的服务的支柱&#xff0c;它们积累了大量的敏感信息&#xff0c;使其成为…

1957C - How Does the Rook Move?

题目链接&#xff1a;How Does the Rook Move? 如图&#xff1a; 因为每行每列都只能放一个棋子&#xff0c;因此我们用绿点来表示下的棋子&#xff0c;发现一个规律&#xff0c;当红色格子都被绿线划过时&#xff0c;那么就不能下棋子。当这个白色点放在xy这个点&#xff0c…

7.机器学习-十大算法之一拉索回归(Lasso)算法原理讲解

7.机器学习-十大算法之一拉索回归&#xff08;Lasso&#xff09;算法原理讲解 一摘要二个人简介三前言四原理讲解五算法流程六代码实现6.1 坐标下降法6.2 最小角回归法 七第三方库实现7.1 scikit-learn实现&#xff08;坐标下降法&#xff09;&#xff1a;7.2 scikit-learn 实现…

扫描工具nmap

介绍 说到黑客&#xff0c;知识就是力量。您对目标系统或网络的了解越多&#xff0c;可用的选项就越多。因此&#xff0c;在进行任何利用尝试之前&#xff0c;必须进行适当的枚举。 假设我们获得了一个 IP&#xff08;或多个 IP 地址&#xff09;来执行安全审计。在我们做任何…

第八周学习笔记DAY.1-异常

本课目标 了解异常概念 理解Java异常处理机制 会捕捉异常 会抛出异常 了解Java异常体系结构 什么是异常 异常是指在程序的运行过程中所发生的不正常的事件&#xff0c;它会中断正在运行的程序 生活中&#xff0c;根据不同的异常进行相应的处理&#xff0c;而不会就此中断…

空间金字塔池化SPP、SPPF、ASPP、PPM、ASPP等汇总

Original SPP 最原版的SPP&#xff08;Spatial Pyramid Pooling&#xff09;是14年在何凯明大神的《Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition》这篇文章中提出的&#xff0c;具体介绍见SPP: Spatial Pyramid Pooling_spatial pyramid …

制造数字化“管理套路”

在当今竞争激烈的市场环境中&#xff0c;制造企业始终关心三个核心问题&#xff1a;生产效率、产品质量、成本控制&#xff0c;所以许多企业渴望加强对生产过程的管理控制。 生产过程是一个相对复杂的过程&#xff0c;涉及到多个环节和因素。从原材料的采购到产品的设计、生产…

JavaSE-15笔记【注解(+2024新)】

文章目录 1.注解概述2.几个常用的JDK内置的注解2.1 Deprecated2.2 Override2.3 SuppressWarnings2.4 FunctionalInterface 3.自定义注解3.1 注解也可以定义属性3.2 注解的使用规则补充 4.元注解4.1 Retention4.2 Target4.3 Documented4.4 Inherited4.5 Repeatable 5.通过反射获…

docker环境搭建

项目环境搭建 1、安装 Linux 虚拟机 &#xff08;1&#xff09;下载安装&#xff1a; VM VirtualBox 下载安装&#xff1a;Downloads – Oracle VM VirtualBox&#xff0c;要先开启CPU虚拟化 &#xff08;2&#xff09;通过vagrant&#xff0c;在VirtualBox中安装虚拟机 下…

500道Python毕业设计题目推荐,附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

【Java基础】21.重写(Override)与重载(Overload)

文章目录 一、重写(Override)1.方法重写2.方法的重写规则3.Super 关键字的使用 二、重载(Overload)1.方法重载2.重载规则3.实例 三、重写与重载之间的区别 一、重写(Override) 1.方法重写 重写&#xff08;Override&#xff09;是指子类定义了一个与其父类中具有相同名称、参…

LeetCode - 150. 逆波兰表达式求值

LeetCode - 150. 逆波兰表达式求值 解题思路&#xff1a; 想要解决该题目&#xff0c;我们首先需要知道什么是逆波兰表达式&#xff0c;逆波兰表达式是一种后缀表达式&#xff0c;所谓后缀就是指算符写在后面。 我们平常使用的算式则是一种中缀表达式&#xff0c;如( 1 2 …

Spring基础 SpringAOP

前言 我们都知道Spring中最经典的两个功能就是IOC和AOP 我们之前也谈过SpringIOC的思想 容器编程思想了 今天我们来谈谈SpringAOP的思想 首先AOP被称之为面向切面编程 实际上面向切面编程是面向对象的编程的补充和完善 重点就是对某一类问题的集中处理 前面我们写的统一异常管理…

React Router 6 + Ant Design:构建基于角色的动态路由和菜单

要根据用户的角色生成不同的路由菜单并实现权限控制,你可以采取以下步骤: 定义路由配置 首先,你需要定义一个包含所有可能路由的配置文件,例如: const routes [{path: /dashboard,element: <DashboardPage />,roles: [admin, manager, user]},{path: /users,element:…

设计模式——模板方法

1)模板方法模式(Template Method Pattem)&#xff0c;又叫模板模式(Template Patern)&#xff0c;在一个抽象类公开定义了执行它的方法的模板。它的子类可以按需要重写方法实现&#xff0c;但调用将以抽象类中定义的方式进行。 2)简单说&#xff0c;模板方法模式 定义一个操作中…

Splashtop Cloud RADIUS 解决方案入围教育技术奖

2024年4月17日 加利福尼亚州库比蒂诺 Splashtop 在简化随处办公的远程解决方案领域处于领先地位&#xff0c;该公司自豪地宣布最近入围了《教育技术文摘》&#xff08;EdTech Digest&#xff09;的“2024年教育技术奖”的“炫酷工具”决赛。教育科技奖成立于2010年&#xff0c…

都2024 年了,可以卸载的VS Code 插件

在 VS Code 中&#xff0c;庞大的插件市场提供了丰富多样的扩展功能&#xff0c;以增强编码体验和效率。然而&#xff0c;如果你安装了很多插件&#xff0c;就可能会导致&#xff1a; 性能下降&#xff1a;过多的插件可能导致 VS Code 的启动速度变慢&#xff0c;特别是在启动或…

【自动驾驶车辆-运动控制】运动学模型(Kinematic Model) | 手写数学推导公式 by.Akaxi

【前言】 在设计自动驾驶规控算法时&#xff0c;常常需要获取车辆的各种位姿、角度等信息&#xff0c;要控制车辆的运动&#xff0c;首先要对车辆的运动建立数字化模型&#xff0c;模型建立的越准确&#xff0c;对车辆运动的描述越准确&#xff0c;对车辆的跟踪控制的效果就越…

【Leetcode笔记】236.二叉树的最近公共祖先

文章目录 题目要求ACM运行结果 题目要求 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个节点 p、q&#xff0c;最近公共祖先表示为一个节点 x&#xff0c;满足 x 是 p、q 的祖先且 x 的深度尽可能…