CSS浮动:概念、特性与应用

CSS浮动是网页设计和开发中常见的布局技术之一,以下是CSS浮动相关的所有重要知识点:

一、浮动的定义与语法

浮动(float)属性可以指定一个元素应沿其容器的左侧或右侧放置,允许文本和内联元素环绕它。浮动属性最初只用于在一段文本内浮动图像,实现文字环绕的效果。
作用

  1. 让多个盒子(div)水平排列成一行,使得浮动成为布局的重要手段。
  2. 可以实现盒子的左右对齐等等。
  3. 浮动最早是用来控制图片,实现文字环绕图片的效果。
    浮动的语法如下:
float: none | left | right;
属性值描述
none:元素不浮动,为默认值。
left:元素向左浮动。
right:元素向右浮动。
二、浮动元素的特点

1.脱离标准流:浮动元素会脱离正常的文档流,不再占据其原本在文档中的位置,而是漂浮在其他元素的上方或下方。
2.影响其他元素布局:浮动元素会影响其他元素的排列和布局。如果其他元素没有清除浮动,可能会出现重叠或错位的情况。
具有行内块元素特性:浮动元素会具有行内块元素的特性,即宽度会根据内容自动收缩,高度也会自适应内容。
3.顶端对齐:如果多个盒子都设置了浮动,则它们会按照属性值一行内显示并且顶端对齐排列。

浮动口诀:

  1. 浮动口诀之 浮
    浮动——浮浮~~~漂浮在普通流的上面。 脱离标准流。 俗称 “脱标”
  1. 浮动口诀之 漏
    浮动 —— 浮动的盒子,把自己原来的位置漏给下面标准流的盒子,就是不占有原来位置,是脱离标准
    流的,我们俗称 “脱标”。
  2. 浮动口诀之 特
    浮动——特性 float属性会改变元素display属性。
    任何元素都可以浮动。浮动元素会生成一个块级框,而不论它本身是何种元素。 生成的块级框和我们前
    面的行内块极其相似。

特点

特点说明
加了浮动的盒子是浮起来的,漂浮在其他标准流盒子的上面。
加了浮动的盒子是不占位置的,它原来的位置漏给了标准流的盒子。
特别注意:浮动元素会改变display属性, 类似转换为了行内块,但是元素之间没有空白缝隙。
三、浮动规则

1.向左或向右浮动:浮动元素会向左或向右方向移动,直到自己的边界紧贴着包含块(一般是父元素)或者其他浮动元素的边界为止。
2.不能超出包含块:如果元素是向左(右)浮动,浮动元素的左(右)边界不能超出包含块的左(右)边界。
3.浮动元素不能层叠:如果一个元素浮动,另一个浮动元素已经在那个位置了,后浮动的元素将紧贴着前一个浮动元素(左浮找左浮,右浮找右浮)。如果水平方向剩余的空间不够显示浮动元素,浮动元素将向下移动,直到有充足的空间为止。
浮动元素会将行内级元素内容推出:浮动元素不能与行内级内容层叠,行内级内容将会被浮动元素推出。比如行内级元素、inline-block元素、块级元素的文字内容。
4.浮动只能左右浮动,不能超出本行的高度:行内级元素、inline-block元素浮动后,其顶部将与所在行的顶部对齐。

四、浮动的应用

1.图文环绕效果:浮动属性可以实现图像与文字的环绕效果,这是浮动属性的最初应用场景。
2.多列布局:在早期的CSS标准中,并没有提供好的左右布局方案,因此浮动属性一度成为网页多列布局的最常用工具。
3.导航栏等布局:浮动属性也可以用于实现导航栏等复杂布局。

五、浮动带来的问题及解决方法

1.父元素高度塌陷:如果父元素没有设置高度或包含的内容没有清除浮动,父元素的高度将无法正确计算,导致塌陷。解决方法包括使用清除浮动的伪类方法、clearfix类、overflow属性等。
2.元素重叠:如果多个浮动元素在同一行并且宽度超出父元素的宽度,这些元素可能会相互重叠。可以通过调整浮动元素的宽度或使用清除浮动的方法来解决。
文字环绕错乱:如果浮动元素与文本元素相邻,文本可能会受到浮动元素的影响而错位或环绕混乱。可以通过调整浮动元素的位置或使用CSS的其他属性(如margin、padding等)来解决。

六、浮动的扩展

1.浮动元素与父盒子的关系:

  • 子盒子的浮动参照父盒子对齐
  • 不会与父盒子的边框重叠,也不会超过父盒子的内边距

2.浮动元素与兄弟盒子的关系:

在一个父级盒子中,如果前一个兄弟盒子是:

  • 浮动的,那么当前盒子会与前一个盒子的顶部对齐;
  • 普通流的,那么当前盒子会显示在前一个兄弟盒子的下方。
七、清除浮动的方法

清除浮动的本质:清除浮动主要为了解决父级元素因为子级浮动引起内部高度为0 的问题。清除浮动之后, 父级就会根据浮动的子盒子自动检测高度。父级有了高度,就不会影响下面的标准流了

1.使用空的〈div〉元素进行清除:在浮动元素的末尾添加一个空的〈div〉元素,并为其设置clear: both;样式属性。这将在浮动元素下方创建一个空白元素,使得父容器能够正确地包围浮动元素。但这种方法会增加额外的HTML元素,不利于代码简洁性。
使用伪元素进行清除(推荐使用):使用::after伪元素为父容器添加一个空的块级元素,并应用clear: both;样式属性。这种方法可以避免额外的HTML元素,且更符合CSS的语义化原则。
2.使用clearfix类进行清除:定义一个clearfix类,并将其应用于包含浮动元素的父容器。通过在父容器上添加clearfix类,将自动清除浮动。这种方法需要额外的CSS代码,但可以减少HTML中的类名使用。
3.使用overflow属性进行清除:将父容器的overflow属性设置为auto或hidden。这将创建一个新的BFC(块格式化上下文)来包含浮动元素。这种方法简单易用,但可能会影响父容器的滚动条显示或内容溢出处理。

综上所述,CSS浮动是一种强大的布局技术,但也需要谨慎使用并选择合适的清除浮动方法来解决其带来的问题。

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

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

相关文章

【MySQL课程学习】:MySQL安装,MySQL如何登录和退出?MySQL的简单配置

🎁个人主页:我们的五年 🔍系列专栏:MySQL课程学习 🌷追光的人,终会万丈光芒 🎉欢迎大家点赞👍评论📝收藏⭐文章 目录 MySQL在Centos 7环境下的安装: 卸载…

面向对象高级(7)注解

面向对象高级 注解(Annovation) 1、注解的概述 注解(Annotation)以“注解名”在代码中存在。例如: Override Deprecated SuppressWarnings(value”unchecked”) Annotation 可以像修饰符一样被使用,用…

oracle如何配置第二个监听优化数据传输

oracle如何配置第二个监听优化数据传输 服务器两个网卡,配置两个不同IP和端口的监听。 归档日志量每天很大,为了不影响业务,需要配置一个单独的万兆网络来专门的传输归档日志到DG库,这里就涉及到在19c中增加一个监听用来使用专门…

使用Redis生成全局唯一id

为了生成一个符合要求的分布式全局ID,我们可以使用 StringRedisTemplate 来实现。这个ID由三部分组成: 符号位(1 bit):始终为0,表示正数。时间戳(31 bit):表示从某个起始…

Feed流系统重构:架构篇

重构对我而言,最大的乐趣在于解决问题。我曾参与一个C#彩票算奖系统的重构,那时系统常因超时引发用户投诉。接手任务时,我既激动又紧张,连续两天几乎废寝忘食地编码。结果令人振奋,算奖时间从一小时大幅缩短至十分钟。…

【Linux驱动开发】驱动中的信号 异步通知开发

【Linux驱动开发】驱动中的信号 异步通知开发 文章目录 应用中的信号驱动中的信号应用程序接收驱动信号附录:嵌入式Linux驱动开发基本步骤开发环境驱动文件编译驱动安装驱动自动创建设备节点文件 驱动开发驱动设备号地址映射,虚拟内存和硬件内存地址字符…

【MySQL】mysql常用不常用法(持续更新)

注意:对数据做操作时做好备份 1、查询mysql数据表中某字段有重复的数据 适用场景,如: 用户表同名的有那些人,那些名称是重复出现的 SQL语法: SELECT t.*, COUNT(*) AS x_count FROM [table_name] t GROUP BY [检查…

C++设计模式:建造者模式(Builder) 房屋建造案例

什么是建造者模式? 建造者模式是一种创建型设计模式,它用于一步步地构建一个复杂对象,同时将对象的构建过程与它的表示分离开。简单来说: 它将复杂对象的“建造步骤”分成多部分,让我们可以灵活地控制这些步骤。通过…

单片机智能家居火灾环境安全检测-分享

目录 前言 一、本设计主要实现哪些很“开门”功能? 二、电路设计原理图 电路图采用Altium Designer进行设计: 三、实物设计图 四、程序源代码设计 五、获取资料内容 前言 传统的火灾报警系统大多依赖于简单的烟雾探测器或温度传感器,…

Java开发经验——系统日志问题

摘要 本文讨论了Java开发中的系统日志设置问题,特别是性能优化。文章分析了使用占位符记录slowString的耗时问题,并提出了使用lambda表达式和Log4j2 API来延迟参数内容获取,以解决性能问题。同时,文章还提到了SLF4J适配器的好处&…

mysql | limit X, -1 早已不可使用,本身也是一个错误

一、背景 需求:使用 mysql 时,需要获取第 X 条数据之后的所有数据。 这时,首先想到的就是利用 limit 来实现。 早期的部分文章或者资料中,提到可以使用: limit X,-1 例如,获取第一条后的所有数据&…

使用Spring TestContext框架

Spring TestContext框架是Spring框架的一部分,旨在简化Spring应用程序的集成测试。它提供了一组注解和实用工具,帮助开发人员在测试中轻松加载和管理Spring应用程序上下文。以下是如何使用Spring TestContext框架进行集成测试的详细指南。 1. 添加依赖 …

leetcode代码 50道答案

‌简单难度:两数之和 def twoSum(nums, target): for i in range(len(nums)): for j in range(i 1, len(nums)): if nums[i] nums[j] target: return [i, j] return [] 简单难度:有效的括号 def isVa…

C++:探索AVL树旋转的奥秘

文章目录 前言 AVL树为什么要旋转?一、插入一个值的大概过程1. 插入一个值的大致过程2. 平衡因子更新原则3. 旋转处理的目的 二、左单旋1. 左单旋旋转方式总处理图2. 左单旋具体会遇到的情况3. 左单旋代码总结 三、右单旋1. 右单旋旋转方式总处理图2. 右单旋具体会遇…

排序算法(选择排序、直接插入排序、冒泡排序、二路归并排序)(C语言版)

对数组进行排序,主要演示选择排序、直接排序、冒泡排序、二路归并排序算法,附上代码演示 一、编写好各类排序方法的函数 (1) s_sort(int e[],int n):选择排序。 (2)si_sort(int e[],int n):直接插人排序。…

当产业经济插上“数字羽翼”,魔珐有言AIGC“3D视频创作大赛”成功举办

随着AI技术的飞速发展,3D数字人技术已成为驱动各行各业转型升级的重要力量。在这一背景下,2024山东3D数字人视频创作大赛应运而生,并在一番激烈的角逐后圆满落幕,为科技与创意的交融写下浓墨重彩的一笔。 11月20日,一…

shell(三)

声明! 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关&a…

Unity-添加世界坐标系辅助线

如果你想在场景中更直观地显示世界坐标系,可以通过编写一个简单的脚本来实现。下面是一个基本的示例脚本,它会在场景中绘制出世界坐标系的三个轴: using UnityEngine;public class WorldAxesIndicator : MonoBehaviour {public float length…

解密自闭症儿童康复秘籍,让孩子重新展开羽翼

在广州这座繁华都市的一隅,隐藏着一片静谧而温暖的天地——星贝育园自闭症儿童寄宿制学校。这里,没有喧嚣与浮躁,只有爱与耐心交织的旋律,为自闭症儿童编织着一个又一个康复的奇迹。星贝育园,如同一盏明灯,…

豆包MarsCode算法题:三数之和问题

问题描述 思路分析 1. 排序数组 目的: 将数组 arr 按升序排序,这样可以方便地使用双指针找到满足条件的三元组,同时避免重复的三元组被重复计算。优势: 数组有序后,处理两个数和 target - arr[i] 的问题可以通过双指针快速找到所有可能的组…