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

news2024/11/17 2:52:36

        前言:在学习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.coloradmin.cn/o/1643079.html

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

相关文章

论文辅助笔记:Tempo 之 model.py

0 导入库 import math from dataclasses import dataclass, asdictimport torch import torch.nn as nnfrom src.modules.transformer import Block from src.modules.prompt import Prompt from src.modules.utils import (FlattenHead,PoolingHead,RevIN, )1TEMPOConfig 1.…

LabVIEW鸡蛋品质智能分级系统

LabVIEW鸡蛋品质智能分级系统 随着现代农业技术的飞速发展&#xff0c;精确、高效的农产品质量控制已成为行业的重要需求。其中&#xff0c;鸡蛋作为日常膳食中不可或缺的重要组成部分&#xff0c;其品质直接关系到消费者的健康与满意度。本文设计并实现了一套基于LabVIEW的鸡…

docker私有仓库的registry

简介 Docker私有仓库的Registry是一个服务&#xff0c;主要用于存储、管理和分发Docker镜像。具体来说&#xff0c;Registry的功能包括&#xff1a; 存储镜像&#xff1a;Registry提供一个集中的地方来存储Docker镜像&#xff0c;包括镜像的层次结构和元数据。 版本控制&…

node应用部署运行案例

生产环境: 系统&#xff1a;linux centos 7.9 node版本&#xff1a;v16.14.0 npm版本:8.3.1 node应用程序结构 [rootRainYun-Q7c3pCXM wiki]# dir assets config.yml data LICENSE node_modules nohup.out output.log package.json server wiki.log [rootRainYun-Q7c…

使用MATLAB/Simulink点亮STM32开发板LED灯

使用MATLAB/Simulink点亮STM32开发板LED灯-笔记 一、STM32CubeMX新建工程二、Simulink 新建工程三、MDK导入生成的代码 一、STM32CubeMX新建工程 1. 打开 STM32CubeMX 软件&#xff0c;点击“新建工程”&#xff0c;选择中对应的型号 2. RCC 设置&#xff0c;选择 HSE(外部高…

单链表式并查集

如果用暴力算法的话&#xff0c;那么会直接超时&#xff0c;我们要学会用并查集去记录下一个空闲的位置 #include<bits/stdc.h> using namespace std;const int N 100005;int n; int fa[N]; int a[N];int find(int x) {if (fa[x] x) {return x;}fa[x] find(fa[x]);re…

ChatGPT DALL-E绘图,制作各种表情包,实现穿衣风格的自由切换

DALL-E绘图功能探索&#xff1a; 1、保持人物形象一致&#xff0c;适配更多的表情、动作 2、改变穿衣风格 3、小女孩的不同年龄段展示 4、不同社交平台的个性头像创作 如果不会写代码&#xff0c;可以问GPT。使用地址&#xff1a;我的GPT4 视频&#xff0c;B站会发&#…

Leetcode—422. 有效的单词方块【简单】Plus

2024每日刷题&#xff08;126&#xff09; Leetcode—422. 有效的单词方块 实现代码 class Solution { public:bool validWordSquare(vector<string>& words) {int row words.size();for(int i 0; i < row; i) {// 当前这一行的列数int col words[i].length(…

网络基础-网络设备介绍

本系列文章主要介绍思科、华为、华三三大厂商的网络设备 网络设备 网络设备是指用于构建和管理计算机网络的各种硬件设备和设备组件。以下是常见的网络设备类型&#xff1a; 路由器&#xff08;Router&#xff09;&#xff1a;用于连接不同网络并在它们之间转发数据包的设备…

k8s调度原理以及自定义调度器

kube-scheduler 是 kubernetes 的核心组件之一&#xff0c;主要负责整个集群资源的调度功能&#xff0c;根据特定的调度算法和策略&#xff0c;将 Pod 调度到最优的工作节点上面去&#xff0c;从而更加合理、更加充分的利用集群的资源&#xff0c;这也是我们选择使用 kubernete…

「Node.js」ESModule 与 CommonJS 的 区别

前言 Node.js支持两种模块系统&#xff1a;CommonJS 和 ESModules&#xff08;ESM&#xff09;&#xff0c;它们在语法和功能上有一些不同。 CommonJS (CJS) CommonJS 是 Node.js 最早支持的模块规范&#xff0c;由于它的出现在ES6之前&#xff0c;因此采取的是同步加载模块…

Linux Ubuntu 开机自启动浏览器

终端输入命令&#xff1a;gnome-session-properties 打开启动设置 如果提示&#xff1a;Command ‘gnome-session-properties’ not found, but can be installed with: apt install gnome-startup-applications 则执行&#xff1a;apt install gnome-startup-applications安装…

用pyecharts完成综合案例之全球GDP动态可视化统计图

综合案例之全球GDP 所用csv文档下载链接如下&#xff1a;https://download.csdn.net/download/qq_42707739/12621102?ops_request_misc%257B%2522request%255Fid%2522%253A%2522171488482816800184124883%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fdownloa…

机器学习周报第40周

目录 摘要Abstract一、文献阅读1.1 摘要1.2 论文背景1.3 论文模型1.3.1 模型概述1.3.2 模型细节 1.4 模型精度 二、论文代码2.1 rtdetr.py2.2 backbone模块2.3 AIFI2.4 CCFM 总结 摘要 本周&#xff0c;我深入研读了RT-DETR&#xff08;实时目标检测变换器&#xff09;论文&am…

【数据结构】初识数据结构

引入&#xff1a; 哈喽大家好&#xff0c;我是野生的编程萌新&#xff0c;首先感谢大家的观看。数据结构的学习者大多有这样的想法&#xff1a;数据结构很重要&#xff0c;一定要学好&#xff0c;但数据结构比较抽象&#xff0c;有些算法理解起来很困难&#xff0c;学的很累。我…

中仕公考:哪些情况不能考公务员?

1.年龄不符合 主要分两类【一类是未成年人&#xff0c;另一类是超龄人员】 具体来讲:年龄一般为18周岁以上、35周岁以下 (2024国考标准是1987年10月至2005年10月期间出生&#xff09; 对于2024年应届硕士、博士研究生(非在职人员)放宽到40周岁以下(2024国考标准是1982年10月以后…

【Conda】解决使用清华源创建虚拟环境不成功问题

文章目录 问题描述&#xff1a;清华源创建不成功解决步骤1 添加官方源步骤2 删除C:/user/你的用户名/的 .condarc 文件步骤3 再次创建 问题描述&#xff1a;清华源创建不成功 本地配置了清华源&#xff0c;但是在创建虚拟环境时不成功&#xff0c;报错如下。 图片若看不清&…

Docker使用进阶篇

文章目录 1 前言2 使用Docker安装常用镜像示例2.1 Docker安装RabbitMQ2.2 Docker安装Nacos2.3 Docker安装xxl-job&#xff08;推荐该方式构建&#xff09;2.4 Docker安装redis2.5 Docker安装mysql 1 前言 上一篇介绍了Docker的基础概念&#xff0c;带你 入门Docker&#xff0c…

初识webpack项目

新建一个空的工程 -> % mkdir webpack-project 为了方便追踪执行每一个命令&#xff0c;最终产生了哪些变更&#xff0c;将这个空工程初始化成git项目 -> % cd webpack-project/-> % git init Initialized empty Git repository in /Users/lixiang/frontworkspace/…