CSS 的 Float

news2025/2/25 3:02:15

文档流

将窗体自上而下分成一行一行,并在每行中按从左至右的挨次排放元素,即为文档流。

文档流是 HTML 页面的底层结构,HTML 页面创建的元素默认都在文档流中。

  • 块级元素
    • 块级元素在文档流中自上向下排列(垂直方向排列)
    • 块级元素在文档流中默认的宽度是父元素的100%
    • 块级元素在文档流中默认的高度被是所有子元素的高度总和
  • 内联元素
    • 内联元素在文档流中自左向右水平排列(水平方向排列)
    • 内联元素的宽度和高度都由内容确定

值得注意的是: 如果在一行中不能容纳所有的元素,则会换到下一行,继续自左向右排列。

有三种状况将使得元素离开文档流而存在,分别是浮动、绝对定位、固定定位。

值得注意的是: 在 IE 浏览器中浮动元素也存在于文档流中。

浮动

CSS 的 Float(浮动),会使元素脱离文档流,向左或向右移动。其他元素会被重新排列。

Float(浮动),往往是用于图像,但它在布局时一样非常有用。

属性值描述
none默认值。元素不浮动。
left元素向左浮动。
right元素向右浮动。

设置元素浮动效果时,以下四种情况比较特殊:

  • 子元素只能在父元素的区域中进行浮动(子元素浮动不能超出父元素的范围)。

在 HTML 页面中定义两个 <div> 标签为父子元素,并设置 CSS 样式,具体代码如下:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
    <style>
      #d1 {
        height: 300px;
        background-color: lightskyblue;
      }
      #d2 {
        width: 50px;
        height: 50px;
        background-color: green;
      }
    </style>
  </head>
  <body>
    <div id="d1">
      <div id="d2"></div>
    </div>
  </body>
</html>

当为子元素 <div> 标签设置 float 属性值为 right 时,该 <div> 为浮动效果。

  • 兄弟元素同时设置相同浮动效果时,会进行自动排列。

在 HTML 页面中定义两个 <div> 标签为兄弟元素,并设置 CSS 样式,具体代码如下:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
    <style>
      #d1 {
        width: 300px;
        height: 300px;
        background-color: lightskyblue;
      }
      #d2 {
        width: 300px;
        height: 300px;
        background-color: green;
      }
    </style>
  </head>
  <body>
    <div id="d1"></div>
    <div id="d2"></div>
  </body>
</html>

当同时为两个 <div> 标签设置 float 属性值为 left 时,这两个 <div> 为浮动效果。

  • 如果兄弟元素中,前一个兄弟元素没有设置浮动,而后一个兄弟元素设置浮动的话,后一个兄弟元素的浮动不能超过前一个兄弟元素。

在 HTML 页面中定义两个 <div> 标签为兄弟元素,并设置 CSS 样式,具体代码如下:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
    <style>
      #d1 {
        width: 300px;
        height: 300px;
        background-color: lightskyblue;
      }
      #d2 {
        width: 300px;
        height: 300px;
        background-color: green;
      }
    </style>
  </head>
  <body>
    <div id="d1"></div>
    <div id="d2"></div>
  </body>
</html>

当为第二个 <div> 标签设置 float 属性值为 right 时,该 <div> 为浮动效果。

值得注意的是: 所有浮动元素的层级要高于文档流中的元素的层级。但文字是个例外,文字不会被浮动元素所覆盖,而是环绕在浮动元素的周围。

块级元素浮动

块级元素设置浮动之后,会从文档流中脱离,并且具有以下特点:

  • 块级元素不会独占 HTML 页面的一行。换句话讲,多个块级元素可以处在一行。
  • 块级元素的宽度和高度等于所有后代元素的总和。

内联元素浮动

内联元素设置浮动之后,也会从文档流中脱离,并且会呈现块级元素的效果。特点也与设置浮动的块级元素相同。

清除浮动

clear 属性指定元素的左侧或右侧不允许浮动的元素。

属性值描述
none默认值。允许浮动元素出现在两侧。
left在左侧不允许浮动元素。
right在右侧不允许浮动元素。
both在左右两侧均不允许浮动元素。

高度塌陷

在 HTML 页面中定义两个 <div> 标签为父子元素,并设置 CSS 样式,具体代码如下:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
    <style>
      #d1 {
        border: 10px black solid;
        background-color: lightskyblue;
      }
      #d2 {
        width: 300px;
        height: 300px;
        background-color: green;
      }
    </style>
  </head>
  <body>
    <div id="d1">
      <div id="d2"></div>
    </div>
  </body>
</html>

上述 HTML 页面运行的效果如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

为作为子元素 <div> 设置 float 属性值为 left 时,该 <div> 为浮动效果。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

由于并没有为作为父元素的 <div> 设置高度,作为父元素的 <div> 实际的高度与作为子元素的 <div> 的高度相等。

但作为子元素的 <div> 设置浮动后,脱离了文档流,导致作为父元素的 <div> 没有了高度。

现在所看到的效果,就被称为高度塌陷

所谓高度塌陷,就是指在没有为父元素设置指定高度,并且设置子元素为浮动时,父元素的高度丢失的情况。

高度塌陷的问题,可以通过 BFC(Block Formatting Context)块级格式化环境进行解决。

BFC 块级格式化环境

BFC(Block Formatting Context)是元素的隐含属性。默认情况下 BFC 是关闭的,当元素开启 BFC 以后,将会具有如下特性:

  • 文档流中的元素不会被设置为浮动的元素所覆盖。
  • 子元素的垂直方向的外边距不会传递给父元素。
  • 元素可以包含浮动的子元素。

当然,并不能直接去开启 BFC,而需要使用一些特殊的样式来间接的打开元素的 BFC。

  • 设置元素为浮动(float)
  • 设置元素的 display 为 inline-block
  • 设置元素为绝对定位(后面的内容)
  • 将元素的 overflow 设置为一个非 visible 的值(一般设置为 hidden)
  • 在所有子元素的最后新增一个子元素,并设置 clear 属性值为 both

值得注意的是: 开启 BFC 都会有一些副作用,需要选择一些副作用小的方式。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023年非证券类投资银行业发展报告

第一章 行业概况 非证券投资银行业是一个专门为公司、政府和高净值个人提供金融服务的行业&#xff0c;与传统的证券投资银行不同&#xff0c;其主要业务不涉及证券交易&#xff0c;而是注重为客户提供咨询服务、融资和投资管理等服务。 非证券投资银行通常涉及的业务领域包括…

电脑同时连接有线和无线网络怎么设置网络的优先级

电脑同时连接有线和无线网络怎么设置网络的优先级&#xff1a; 我们知道在 笔记本电脑系统 中&#xff0c;可以通过有线或无线网络进行联网。如果电脑在有线网络和无线网络同时存在的情况&#xff0c;应该怎么设置有线网络优先连接呢?对此我们提供下面的方法可以让电脑在有Wi…

【ES】笔记-Class类剖析

Class Class介绍与初体验ES5 通过构造函数实例化对象ES6 通过Class中的constructor实列化对象 Class 静态成员实例对象与函数对象的属性不相通实例对象与函数对象原型上的属性是相通的Class中对于static 标注的对象和方法不属于实列对象&#xff0c;属于类。 ES5构造函数继承Cl…

力扣373. 查找和最小的 K 对数字 优先队列法

题目 给定两个以 非递减顺序排列 的整数数组 nums1 和 nums2 , 以及一个整数 k 。 定义一对值 (u,v)&#xff0c;其中第一个元素来自 nums1&#xff0c;第二个元素来自 nums2 。 请找到和最小的 k 个数对 (u1,v1), (u2,v2) … (uk,vk) 。 示例 1: 输入: nums1 [1,7,11], …

BFGS算法python实现

文章目录 Python代码当前参数下求解结果参数设置 Python代码 import scipy import numpy as np import matplotlib.pyplot as plt from scipy.optimize import minimize def func(x):return 7*np.sin(x) 11*np.cos(5*x) def cal_func():x np.linspace(-5,5,1000)y func(x)r…

【电压质量】提高隔离电源系统的电压质量(Simulink实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

嵌入式学习笔记(17)代码重定位实战 上篇

3.5.1任务&#xff1a;在iSRAM中将代码从0xd0020010重定位到0xd0024000 注解&#xff1a;本练习对代码本身运行无实际意义&#xff0c;我们做这个重定位纯粹是为了练习重定位技能。但是某些情况重定位就是必须的&#xff0c;譬如在uboot中。 3.5.2思路 &#xff08;1&#xff…

2023新疆褐牛产业集群高质量发展论坛伊犁召开

8月31日&#xff0c;“2023新疆褐牛产业集群高质量发展论坛”在新疆巩留县召开&#xff0c;相关部委、权威专家和企业代表欢聚一堂&#xff0c;共商新疆褐牛科学化繁育和规模化养殖之路&#xff0c;共享新疆褐牛一二三产业融合发展创新模式&#xff0c;助力新疆褐牛产业集群发展…

知识库建设:从0到1搞定知识库建设的方法论分享

如果我们想要搭建一个知识库&#xff0c;前提是我们要明确知道这个知识库是干什么用的&#xff0c;只有了解知识库的应用场景才能知道如何去建设知识库。 知识库建设 以常见的电商客服为例&#xff0c;客户会经常咨询什么时候发货&#xff0c;怎么退货&#xff0c;怎么换货………

MySQL——数据库以及数据表的创建

创建数据库 回到刚才创建数据库的问题&#xff0c;我们在创建数据库的时候可以通过添加一个参数&#xff0c;这个参数的意义在于当我们创建的数据库已经存在的时候则不会创建&#xff0c;也不会报错&#xff0c;如果不使用这个参数&#xff0c;则我们在重复创建一个已经存在的…

遥感图像应用:在低分辨率图像上实现洪水损害检测(迁移学习)

本文是上一篇关于“在低分辨率图像上实现洪水损害检测”的博客的延申。 代码来源&#xff1a;https://github.com/weining20000/Flooding-Damage-Detection-from-Post-Hurricane-Satellite-Imagery-Based-on-CNN/tree/master 数据储存地址&#xff1a;https://github.com/Jef…

List常见面试问题

List的特点有哪些&#xff1f; Java中的List是一种存放有序的、可以重复的数据的集合&#xff0c;它允许重复元素的存在。List中的元素都有对应的一个序列号(索引)记录着元素的位置&#xff0c;因此可以通过这个序列号来访问元素。 ‍ Java中集合有哪些&#xff1f; Java中…

便民门诊“快车道”,5G商企专网来护航

时代进步&#xff0c;医疗服务再升级。在贵州铜仁地区&#xff0c;5G诊疗服务尽显温情&#xff0c;“健康守护”走进社区。更便捷高效的就医方式&#xff0c;让百姓尽享“健康红利”。 为搭建就医“快车道”&#xff0c;医院在多地新增设便民门诊&#xff0c;民众就医有了更多的…

misc corrupt

1.打开之后是01二进制 2.利用python二进制转hex或者16进制 print(hex(int(二进制01,2))) 3.利用winHex 4.解码base64

【Java】基础练习(十二)

1.Map基本操作 创建一个Map集合&#xff0c;完成以下操作&#xff1a; 将我国省份和其简称存到 Map 集合中&#xff1b;将省份名称中包含"江"的省份从集合中删除&#xff1b;遍历输出集合元素 &#xff08;1&#xff09;源码&#xff1a; package swp.kaifamiao.c…

学习嵌入式软件工程师面试题(day1)

前言 &#xff08;1&#xff09;如果你在读大学&#xff0c;不管你本科毕业是读研还是就业&#xff0c;你都可以早点准备嵌入式面试题&#xff0c;本系列教程的面试题均基于C语言。 &#xff08;2&#xff09;像嵌入式学得好&#xff0c;且学历不错的本科生和研究生&#xff0c…

应急物资管理系统-完善应急物资保障体系

东识智慧应急物资管理系统&#xff08;智物资DW-S300&#xff09;在政府应急救援物资管理、红十字会应急物资管理、防汛应急物资管理、医疗抗疫物资管理等行业均有成功案例。智物资DW-S300实现了功能一体化管理、流程一体化管理、信息一体化管理&#xff0c;使得资产从采购、入…

循环(while do...while for)介绍

3.循环 1.while循环 while循环是先判断后执行 while循环一般都会有: 循环初始值, 循环条件 和 循环变量增量(或者减量) 语法: while(表达式){逻辑代码块 }// 计算123...100之和var num 1;//循环初始值var sum 0;//统计结果//循环条件while (num < 100) {console.log(n…

Java到底是值传递还是引用传递【通俗易懂】

我相信很多刚学Java的小伙伴都很难理解Java到底是值传递还是引用传递的问题&#xff0c;但肯定背过这道面试题。确实&#xff0c;Java就是值传递&#xff0c;那什么原理呢&#xff1f;请往下看。 我们先看一段代码&#xff1a;分析一下这两句打印的结果分别是什么。 public c…

对象存储 OSS

大家好 , 我是苏麟 , 今天聊聊OSS . 这里使用阿里云的OSS对象存储. 首先大家得有一个阿里云账号 , 注册大家都会 这里不多介绍 . 阿里云官网 : 阿里云登录页 (aliyun.com) 首页产品目录下存储集合里对象存储OSS 进入对象存储OSS页面 点击管理控制台(新用户应该有免费试用期的)…