CSS浮动(如果想知道CSS有关浮动的知识点,那么只看这一篇就足够了!)

        前言:在学习CSS排版的时候,浮动是我们必须要知道的知识点,浮动在设计之初是为了实现文字环绕效果的,但是后来被人们发现浮动在CSS排版中有着很好的实用价值,所以浮动便成为了CSS排版的利器之一。


✨✨✨这里是秋刀鱼不做梦的BLOG

✨✨✨想要了解更多内容可以访问我的主页秋刀鱼不做梦-CSDN博客

先让我们看一下本篇文章的大致内容:

目录

1.浮动的简介

2.浮动的相关属性

        (1)给元素设置float:left

        (2)给元素设置float:right

        (3)给元素设置float:none

3.元素浮动之后的特点

4.浮动的小练习

        (1)案例一

        (2)案例二

          (2)案例三

        (2)案例四

5.解决浮动产生的影响


1.浮动的简介

由前言中所说,浮动属性在最初是用来实现文字环绕图片效果的。(如图):

但是随着时代的发展,浮动属性被人们发现浮动在CSS排版中有着很好的实用价值,所以浮动便成为主流的页面布局方式之一。

那么现在我们如何去理解浮动属性呢?

先看一下官网对于浮动的解释为:

浮动属性为指定一个元素应沿其容器的左侧或右侧放置,允许文本和内联元素环绕它。该元素从网页的正常流动(文档流)中移除,但是仍然保持部分的流动性(与绝对定位相反)。

好!不愧是官网,看了和没看一样,对于刚刚接触浮动属性的人来说,真是听君一席话,如听一席话。那么接下来我们使用稍微平易近人一点的语句来解释一下浮动:

        浮动:即,使元素犹如浮动起来一样,脱离文档流。(如图):

我们可以看到盒子1和盒子3都是在标准文档流上的,而盒子2由于设置的浮动的属性,使其浮动了起来,脱离了文档流,所以我们可以简单的将浮动理解为设置了浮动属性的元素,会浮空,与普通的元素不在一个图层上。(文档流读者可以认为是图中的白色背景版,由于盒子2设置的浮动的属性,所以脱离了文档流)

这样我们就可以大致的理解浮动到底会使元素产生什么样的影响了!

2.浮动的相关属性

那么关于浮动的属性值都有哪些呢?以下使浮动的常用属性值:

CSS属性功能属性值
float设置浮动left : 设置左浮动
right : 设置右浮动
none :不浮动,默认值
clear清除浮动
清除前面兄弟元素浮动元素的响应
left :清除前面左浮动的影响
right :清除前面右浮动的影响
both :清除前面左右浮动的影响

这里我们使用几个案例帮助你进一步理解浮动:

        (1)给元素设置float:left

html代码:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><link rel="stylesheet" href="./2024.test.css">
</head>
<body> <img src="./image/fish.jpg" alt="fish"><div>Lorem ipsum dolor sit amet consectetur adipisicing elit. Rem, nobis at veniam cum quae culpa impedit laudantium dolores eius, deleniti mollitia porro perspiciatis cumque. Exercitationem quis nemo enim sapiente nihil ad ducimus eveniet quidem, accusantium, suscipit necessitatibus hic sed eius. Ab autem expedita, temporibus deleniti, eius officia praesentium veniam sequi qui adipisci dignissimos error unde veritatis sint deserunt provident tempore doloribus, magnam amet iste fugit sapiente alias nulla. Minima molestias vitae commodi aperiam culpa porro quidem excepturi nostrum pariatur iusto voluptatum ea odio deserunt quisquam veritatis perferendis reprehenderit earum, ad dolore at illum sequi. Vel accusamus et nisi doloribus. Ex!</div>
</body>
</html>

CSS代码:

img {width: 200px;height: 200px;float: left;
}

        (2)给元素设置float:right

将上面的CSS代码的float属性改为right后:

img {width: 200px;height: 200px;float: right;
}

        (3)给元素设置float:none

将上面的CSS代码的float属性改为none后:

img {width: 200px;height: 200px;float: none;
}

从上面的案例之中我们会发现一个问题:

        图片元素浮动之后,文字不应该和将float设置为none时候一样吗,为什么文字向上提了呢?这是因为浮动在设计之初是为了实现文字环绕效果的,所以文字向上提了。

        但是问题又来了,如果文字向上提,那么为什么文字不是在图片下方呢?这是因为float属性的特性,设置了float属性的元素会将文字排到自己内部的外边,这样也是满足了设计之初实现文字环绕效果的理念。

这样我们就大致的了解了float属性的使用以及一些注意的事项。

3.元素浮动之后的特点

在上面我们知道了对于浮动的元素,其会脱离标准文档流,那么浮动属性还会对元素产生哪些其他的影响呢?

浮动产生的影响:

1. 🤢脱离文档流。
2. 😊不管浮动前是什么元素,浮动后:默认宽与高都是被内容撑开(尽可能小),而且可以设置宽高。
3. 😊不会独占一行,可以与其他元素共用一行。
4. 😊不会margin 合并,也不会margin 塌陷,能够完美的设置四个方向的margin 和padding 。
5. 😊不会像行内块一样被当做文本处理(没有行内块的空白问题)。

6.当元素浮动之后,下面的元素就可以向上提升位置,占有浮动元素的位置。

在上边的序号后边我们会发现有着一些表情,但是我们会发现序号1后面的表情不是很好,即元素浮动之后,元素脱离文档流其实并不是好事,而其他的影响对于元素而言都是好事。

这样我们就了解完整了元素浮动之后会对元素产生的影响。

4.浮动的小练习

了解完了浮动的基础之后,我们就可以使用浮动进行一些最最最基础的排版练习了,接下来我将使用四个案例使你更好的理解并使用浮动的知识。

        (1)案例一

要求做到以下样子:

其实非常的简单,我们只需要创建一个大的容器,在大的容器中有三个大小相同,颜色为天蓝色的元素,并且序号为1的容器实现右浮动即可。(当然每个内部元素也都设置了margin)

代码实现:

html代码:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><link rel="stylesheet" href="./2024.5.3.css"><link rel="stylesheet" href="./iconfont.css">
</head>
<body><div class="outer"><div class="inner1">1</div><div class="inner2">2</div><div class="inner3">3</div></div>
</body>
</html>

CSS代码:

.outer {width: 600px;border: 2px black solid;
}
.inner1,.inner2,.inner3 {width: 100px;height: 100px;background-color: skyblue;border:2px solid black;margin: 10px;
}
.inner1 {float: right;
}

结果:

        (2)案例二

要求做到以下样子:

我们可以发现序列2和序列3的文字部分重叠了,根据浮动之后元素的特性我们可以知道,序列为1的元素开启了浮动,序列2的元素的方块到了序列1方块的下方与序列1方块重叠,但是序列2的文字被挤了出来,所以我们只需要将序列1的意元素左浮动即可。

代码实现:

html代码:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><link rel="stylesheet" href="./2024.5.3.css"><link rel="stylesheet" href="./iconfont.css">
</head>
<body><div class="outer"><div class="inner1">1</div><div class="inner2">2</div><div class="inner3">3</div></div>
</body>
</html>

CSS代码:

.outer {width: 600px;border: 2px black solid;
}
.inner1,.inner2,.inner3 {width: 100px;height: 100px;background-color: skyblue;border:2px solid black;margin: 10px;
}
.inner1 {float: left;
}

结果:

          (2)案例三

要求做到以下样子:

我们会发现本来为块级元素的三个元素却都在一行上排列了,说明它们三个元素都开启了浮动(使用了浮动元素会失去独占一行的特性),并且值得注意的是,父元素的高变为0px,这说明三个子元素都浮动了。

代码实现:

html代码:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><link rel="stylesheet" href="./2024.5.3.css"><link rel="stylesheet" href="./iconfont.css">
</head>
<body><div class="outer"><div class="inner1">1</div><div class="inner2">2</div><div class="inner3">3</div></div>
</body>
</html>

CSS代码:

.outer {width: 600px;border: 2px black solid;
}
.inner1,.inner2,.inner3 {width: 100px;height: 100px;background-color: skyblue;border:2px solid black;margin: 10px;float: left;
}

结果:

        (2)案例四

要求做到以下样子:

我们会发现方块的大小都变大了,并且序列3在序列1和序列2的元素的下方,但是值得注意的是,父元素的高变为0px,说明三个子元素都浮动了。

代码实现:

html代码:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><link rel="stylesheet" href="./2024.5.3.css"><link rel="stylesheet" href="./iconfont.css">
</head>
<body><div class="outer"><div class="inner1">1</div><div class="inner2">2</div><div class="inner3">3</div></div>
</body>
</html>

CSS代码:

.outer {width: 600px;border: 2px black solid;
}
.inner1,.inner2,.inner3 {width: 200px;height: 200px;background-color: skyblue;border:2px solid black;margin: 10px;float: left;
}

结果:

这样我们对浮动就有了进一步的了解!!!

5.解决浮动产生的影响

根据上面我们学习的浮动的知识,我们可以知道浮动可能会带来一些我们不想要的影响,这将让我们对网页进行排版会产生一些困难。

浮动产生的一些困扰:

1. 对兄弟元素的影响: 后面的兄弟元素,会占据浮动元素之前的位置,在浮动元素的下面;对前面的兄弟无影响。
2. 对父元素的影响: 不能撑起父元素的高度,导致父元素高度塌陷;但父元素的宽度依然束缚浮动的元素。

其实最主要要解决的影响是序号2(父元素高度塌陷,那么我们有没有什么办法解决这个可能让我们对网页排版产生困难的影响呢?

其实是有的,以下举出了几个解决方案:

1. 方案一: 给父元素指定高度。
2. 方案二: 给父元素也设置浮动,带来其他影响。
3. 方案三: 给父元素设置 overflow:hidden 。
4. 方案四: 在所有浮动元素的最后面,添加一个块级元素,并给该块级元素设置clear:both 
5. 方案五: 给浮动元素的父元素,设置伪元素,通过伪元素清除浮动,原理与方案四相同---->
(推荐使用)

对于前四个方案读者可以自行尝试,这里不在进行详细的讲解,我们这里详细讲解一下方案五。

对于其父元素,我们可以给其加上一个类,并对该类进行如下设置:

.clearfix::after {
content: "";
display: block;
clear:both;
}

实际案例:

html代码:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><link rel="stylesheet" href="./2024.5.3.css"><link rel="stylesheet" href="./iconfont.css">
</head>
<body><div class="outer clearfix"><div class="inner1">1</div><div class="inner2">2</div><div class="inner3">3</div></div>
</body>
</html>

CSS代码:

.outer {width: 600px;border: 2px black solid;
}
.inner1,.inner2,.inner3 {width: 100px;height: 100px;background-color: skyblue;border:2px solid black;margin: 10px;float: left;
}
/* 清除浮动 */
.clearfix::after {content: "";display: block;clear: both;
}

我们就会发现父元素塌陷的问题就得以解决了!

如果我们不对其父元素进行清除浮动即上面html代码中的父元素不设置为clearfix类):

从上面的两幅图我们就可以看出区别!

想了解更多的CSS知识-------------------------------------------->CSS_秋刀鱼不做梦的博客-CSDN博客


以上就是本篇文章的全部内容了~~~

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

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

相关文章

pandas学习笔记12

缺失数据处理 其实在很多时候&#xff0c;人们往往不愿意过多透露自己的信息。假如您正在对用户的产品体验做调查&#xff0c;在这个过程中您会发现&#xff0c;一些用户很乐意分享自己使用产品的体验&#xff0c;但他是不愿意透露自己的姓名和联系方式&#xff1b; 还有一些用…

《尿不湿级》STM32 F103C8T6最小系统板搭建(五)BOOT

一、BOOT是什么&#xff1f; 大多数初学者第一次接触BOOT总是对这个词感到不解&#xff0c;从哪冒出一个奇奇怪怪的东西还要接跳线帽&#xff0c;为什么要配置它才能进行串口程序的下载&#xff1f;为什么不正确配置会导致单片机无法正常启动…… boot&#xff0c;及物动词&…

AI-数学-高中56-成对数据统计-线性回归方程

原作者视频&#xff1a;【成对数据统计】【一数辞典】1线性回归方程_哔哩哔哩_bilibili 注意&#xff1a;高中只学线性回归。 最小二乘法&#xff08;残差和平方最小的直线、方差最小>拟合程度最好&#xff09;&#xff1a;

2.spring security 简单入门

创建springboot 项目&#xff0c;引入spring security坐标 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--spring security坐标--><dependency&g…

17_Scala面向对象高阶功能

文章目录 1.继承1.1 构造对象时,父类对象优于子类对象1.2父类主构造有参数,子类必须要显示地调用父类主构造器并传值 2.封装3.抽象3.1抽象定义3.2子类继承抽象类3.3抽象属性 4.伴生对象4.1创建类和伴生对象4.2调用 1.继承 –和Java一样,权限protected , public.父类定义子类用…

分布式锁之-redis

什么是分布式锁&#xff1f; 即分布式系统中的锁。在单体应用中我们通过锁解决的是控制共享资源访问的问题&#xff0c;而分布式锁&#xff0c;就是解决了分布式系统中控制共享资源访问的问题。与单体应用不同的是&#xff0c;分布式系统中竞争共享资源的最小粒度从线程升级成了…

详细介绍ARM-ORACLE Database 19c数据库下载

目录 1. 前言 2. 获取方式 2.1 ORACLE专栏 2.2 ORACLE下载站点 1. 前言 现有网络上已有非常多关于ORACLE数据库机下载的介绍&#xff0c;但对于ARM平台的介绍不多&#xff0c;借此机会我将该版的下载步骤做如下说明&#xff0c;希望能够一些不明之人提供帮助和参考 2. 获…

Linux理解文件操作 文件描述符fd 理解重定向 dup2 缓冲区 C语言实现自己的shell

文章目录 前言一、文件相关概念与操作1.1 open()1.2 close()1.3 write()1.4 read()1.4 写入的时候先清空文件内容再写入1.5 追加&#xff08;a && a&#xff09; 二、文件描述符2.1 文件描述符 fd 0 1 2 的理解2.2 FILE结构体&#xff1a;的源代码 三、深入理解文件描述…

DETR类型检测网络---思考和Tricks测试

目录 batch_size的影响辅助损失的作用学习率的影响Decoder层数增多的影响3D检测中, feats位置编码和query位置编码是否共享mpl层背景-关于query的生成方式 利用widthformer类似的方式简化注意力机制 batch_size的影响 batch8: batch20: 由实验结果可知:这里实验有问题,横坐标…

JAVA语言开发的智慧城管系统源码:技术架构Vue+后端框架Spring boot+数据库MySQL

通过综合应用计算机技术、网络技术、现代通信技术等多种信息技术&#xff0c;充分融合RS遥感技术、GPS全球定位技术、GIS地理信息系统&#xff0c;开始建设一个动态可视的、实时更新的、精细量化的城市管理系统。智慧城管将采用云平台架构方式进行建设&#xff0c;基于现有数字…

人工智能大模型应用指南

大家好&#xff0c;我是爱编程的喵喵。双985硕士毕业&#xff0c;现担任全栈工程师一职&#xff0c;热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。…

直流屏整流模块HG07A220R电源模块HG10A220R

直流屏整流模块HG07A220R电源模块HG10A220R 其他同类型监控模块PM09T电源模块HG22005/S&#xff0c;HG22010/S&#xff0c;HG11010/S&#xff0c;HG11020/S&#xff0c;HG10A220Z&#xff0c;HG10A220F&#xff0c;HG05A220Z&#xff0c;HG07A220Z&#xff0c;HG10A110Z&#x…

免费可商用字体素材大全,办公设计字体合集打包166款

一、素材描述 这是一套免费可商用字体素材&#xff0c;这些字体一般会在办公与设计的时候用到&#xff0c;比如&#xff0c;Photoshop、illustrator、Coreldraw、AfterEffects、Indesign、WPS、Office&#xff0c;等等&#xff0c;想要更好更快地办公与设计&#xff0c;字体还…

【Java】面向对象核心知识点(二),文章层次分明,内容精益求精,代码简单易懂

目录 一、构造方法 1.1 概念 1.2 作用 1.3 代码 二、抽象 2.1 概念 2.2 作用 2.3 注意 2.4 代码 三、接口 3.1 概念 3.2 作用 3.3 注意 3.4 语法 3.5 代码 四、内部类 4.1 成员内部类 4.2 局部内部类 4.3 静态内部类 4.4 匿名内部类 &#xff08;原创文章&…

WWW‘24 | 课程学习CL+模仿学习IL用于ETF及商品期货交易

WWW24 | 课程学习CL模仿学习IL用于ETF及商品期货交易 原创 QuantML QuantML 2024-05-04 13:47 论文地址&#xff1a;[2311.13326] Curriculum Learning and Imitation Learning for Model-free Control on Financial Time-series (arxiv.org) 本文探讨了在金融时间序列数据上…

W801学习笔记十七:古诗学习应用——上

硬件驱动以及软件架构大体上已经完成&#xff0c;尚存一些遗漏之处&#xff0c;后续会寻找合适的时机进行补充。自此章起&#xff0c;将正式迈入软件应用阶段&#xff0c;尤其是游戏开发领域。 关于第一个应用&#xff0c;此前已有一些构想&#xff1a; 其一&#xff0c;随机…

【跟我学RISC-V】(二)RISC-V的基础知识学习与汇编练习

写在前面&#xff1a; 这篇文章是跟我学RISC-V的第二期&#xff0c;是第一期的延续&#xff0c;第一期主要是带大家了解一下什么是RISC-V,是比较大体、宽泛的概念。这一期主要是讲一些基础知识&#xff0c;然后进行RISC-V汇编语言与c语言的编程。在第一期里我们搭建了好几个环…

FBA头程空运发货流程详解|携手天图通逊,开启高效跨境物流之旅

在众多头程发货方式中&#xff0c;空运以其速度快、时效高的特点&#xff0c;成为许多卖家特别是急需快速补货或应对市场变化的友好选择&#xff0c;那FBA头程空运的发货流程是怎样的呢? 1、发货准备 在开始空运之前&#xff0c;首先需要进行发货准备。这包括将货物送达指定的…

DETR类型检测网络实验2---优化测试

补全reference_point Anchor-DETR提出用预定义的参考点生成query_pos; DBA-DETR提出预定义参考信息由(x,y)增至(x,y,w,h) 那么在3D检测任务中是否可以把预定义参考信息补全为(x,y,z,l,w,h,sint,cost),而query_pos都是使用xy两个维度(因为是bev网络). (这种方法在Sparse-DETR中…

轻松应对数据恢复挑战:雷神笔记本,不同情况不同策略

在数字化时代&#xff0c;数据无疑是我们生活中不可或缺的一部分。无论是重要的工作文件、珍贵的家庭照片&#xff0c;还是回忆满满的视频&#xff0c;一旦丢失&#xff0c;都可能给我们的生活带来诸多不便。雷神笔记本作为市场上备受欢迎的电脑品牌&#xff0c;用户在使用过程…