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

news2024/11/24 7:36:32

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.coloradmin.cn/o/2246529.html

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

相关文章

javascrip页面交互

元素的三大系列 offset系列 offset初相识 offset系列属性 作用 element.offsetParent 返回作为该元素带有定位的父级元素,如果父级没有定位,则返回body element.offsetTop 返回元素相对于有定位父元素上方的偏移量 element.offsetLeft 返回元素…

生成对抗网络(简要介绍)

生成对抗网络(Generative Adversarial Network,GAN)是一种深度学习模型架构,由 Ian Goodfellow 等人在 2014 年提出。GAN 由两个神经网络组成——生成器(Generator)和判别器(Discriminator&…

(C语言)文件操作

目录 文件 程序文件 数据文件 文件名 ​编辑数据文件的分类 文件的打开和关闭 流 标准流 1)stdin 2)stdout 3)stderr 文件指针 文件的打开和关闭 对文件内容操作的函数 1)fgetc,fputc 2)fp…

招商蛇口|在低密园林里,开启生活的“任意门”

“最好的建筑是这样的,我们深处在其中,却不知道自然在哪里终了,艺术在哪里开始。” 凭借深耕西安10载的城市远见,以及建立在成功人居经验之上的敏锐洞察,招商蛇口将林语堂名言里的生活,变成了现实。 都市化越是加速&…

【es6进阶】vue3中的数据劫持的最新实现方案的proxy的详解

vuejs中实现数据的劫持,v2中使用的是Object.defineProperty()来实现的,在大版本v3中彻底重写了这部分,使用了proxy这个数据代理的方式,来修复了v2中对数组和对象的劫持的遗留问题。 proxy是什么 Proxy 用于修改某些操作的默认行为&#xff0…

掌上单片机实验室 – RT-Thread + ROS2 初探(25)

在初步尝试RT-Thread之后,一直在琢磨如何进一步感受它的优点,因为前面只是用了它的内核,感觉和FreeRTOS、uCOS等RTOS差别不大,至于它们性能、可靠性上的差异,在这种学习性的程序中,很难有所察觉。 RT-Threa…

李宏毅机器学习课程知识点摘要(14-18集)

线性回归,逻辑回归(线性回归sigmoid),神经网络 linear regression , logistic regression , neutral network 里面的偏导的相量有几百万维,这就是neutral network的不同,他是…

ThingsBoard规则链节点:AWS SQS 节点详解

引言 ThingsBoard 是一个开源的物联网平台,提供了设备管理、数据收集、处理和可视化等功能。规则链是 ThingsBoard 中的一个强大功能,允许用户定义复杂的业务逻辑来处理设备上报的数据。在规则链中,AWS SQS 节点用于将消息发送到 Amazon Simp…

在Windows 11上启用远程桌面及其故障排查

在Windows 11上启用远程桌面 这将允许其它设备远程连接到你的电脑,并像坐在你的电脑前一样操纵你的电脑桌面。 启用方法很简单,先在设置中找到远程桌面。 点击进入后,点击右侧的滑钮启用远程桌面即可。 勾选启用网络级别验证使得登录者在能…

【H2O2|全栈】JS进阶知识(八)ES6(4)

目录 前言 开篇语 准备工作 浅拷贝和深拷贝 浅拷贝 概念 常见方法 弊端 案例 深拷贝 概念 常见方法 弊端 逐层拷贝 原型 构造函数 概念 形式 成员 弊端 显式原型和隐式原型 概念 形式 constructor 概念 形式 原型链 概念 形式 结束语 前言 开篇语…

RabbitMQ3:Java客户端快速入门

欢迎来到“雪碧聊技术”CSDN博客! 在这里,您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者,还是具有一定经验的开发者,相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导,我将…

zotero7 插件使用

zotero style 1、下载地址 Zotero 插件商店 | Zotero 中文社区 2、配置 在工具插件里 3、配置 style 进入高级→设置编辑器 查找 easy 设置完即可显示, 注1:easyscholar的密钥要自行申请注册,注册地址:easySchol…

uniapp+vue3+ts H5端使用Quill富文本插件以及解决上传图片反显的问题

uniappvue3ts H5端使用Quill富文本插件以及解决上传图片反显的问题 1.在项目中安装Quill npm i quill1.3.72.需要显示富文本的页面完整代码 <template><view><div ref"quillEditor" style"height: 65vh"></div></view> &…

关于pip install 包 时出现This is an issue with the package mentioned above,not pip的问题

关于This is an issue with the package mentioned above,not pip 今天在用pip下载gensim包的时候&#xff0c;出现了上图中的问题&#xff0c;提示信息是&#xff1a;This is an issue with the package mentioned above,not pip 那说明是包的问题&#xff0c;而不是在使用 pi…

rust中解决DPI-1047: Cannot locate a 64-bit Oracle Client library问题

我们在使用rust-oracle crate连接oracle进行测试的过程中&#xff0c;会发现无法连接oracle&#xff0c;测试运行过程中抛出“DPI-1047: Cannot locate a 64-bit Oracle Client library”错误。该问题是由于rust-oracle需要用到oracle的动态连接库&#xff0c;我们通过安装orac…

软件测试面试之常规问题

1.描述一下测试过程 类似题目:测试的生命周期 思路:这是一个“范围”很大的题目&#xff0c;而且回答时间一般在3分钟之内&#xff0c;不可能非常详细的描述整个过程&#xff0c;因此答题的思路要从整体结构入手&#xff0c;不要过细。为了保证答案的准确性&#xff0c;可以引…

D77【 python 接口自动化学习】- python基础之HTTP

day77 postman接口请求 学习日期&#xff1a;20241123 学习目标&#xff1a;http 定义及实战&#xfe63;&#xfe63;postman接口请求 学习笔记&#xff1a; get请求 post请求 总结 get请求用于查询数据post请求用于添加数据

在 Swift 中实现字符串分割问题:以字典中的单词构造句子

文章目录 前言摘要描述题解答案题解代码题解代码分析示例测试及结果时间复杂度空间复杂度总结 前言 本题由于没有合适答案为以往遗留问题&#xff0c;最近有时间将以往遗留问题一一完善。 LeetCode - #140 单词拆分 II 不积跬步&#xff0c;无以至千里&#xff1b;不积小流&…

【从零开始的LeetCode-算法】3297. 统计重新排列后包含另一个字符串的子字符串数目 I

给你两个字符串 word1 和 word2 。 如果一个字符串 x 重新排列后&#xff0c;word2 是重排字符串的 前缀&#xff0c;那么我们称字符串 x 是 合法的 。 请你返回 word1 中 合法 子字符串的数目。 示例 1&#xff1a; 输入&#xff1a;word1 "bcca", word2 "…

.NET9 - 新功能体验(二)

书接上回&#xff0c;我们继续来聊聊.NET9和C#13带来的新变化。 01、新的泛型约束 allows ref struct 这是在 C# 13 中&#xff0c;引入的一项新的泛型约束功能&#xff0c;允许对泛型类型参数应用 ref struct 约束。 可能这样说不够直观&#xff0c;简单来说就是Span、ReadO…