CSS定位与布局

news2024/12/24 11:39:23

一、display属性(元素如何显示)

网页上的每个元素都是一个​盒模型​。display属性决定了盒模型的​行为方式​,设置元素如何被显示。

display常用的属性共有4个值:

  • display: none;​ -- 让标签消失(隐藏元素并脱离文档流)
  • display: inline;​ -- 内联元素(内联标签)
  • display: block;​ -- 块级元素(块级标签)
  • display: inline-block;​ -- 既有inline的属性也有block属性

1、display: block(转换为块元素)

display:block​ : 转换为块元素

  •  block(块元素)​是占用​最大可用宽度​的元素,此元素将显示为​块级元素,此元素前后会带有换行符。
  • block元素会​独占一行​,多个block元素会各自新起一行。默认情况下,block元素宽度自动填满其父元素宽度
  • block元素可以设置width​和​height​属性。块级元素即使设置了宽度,仍然是​独占一行
  • block元素也可以设置​margin​和​​padding​​属性

常见的块级元素有:​div,p,ul,ol,li,h1~h6 ​​等

 以下示例中的样式规则将​内联<span>元素显示为​块级元素​。

 HTML代码:

<span>First hello world.</span>
<span>Second hello world.</span>
<span>Third hello world.</span>
<span>Fourth hello world.</span>
<span>Fifth hello world.</span>

 CSS代码:

span {
   display: block;
}

执行结果:

2、display: inline(转换为内联元素

display:inline: 转换为​内联元素​(内联表签)

  • inline元素​不会独占一行​,多个相邻的行内元素会排列在同一行里,直到一行排列不下,才会新换一行
  • inline元素的宽度是自身内容的宽度(默认有多少占多少​)
  • inline元素设置​width和​height​属性无效
  • inline元素的margin和padding属性,水平方向的padding-left, padding-right, margin-left, margin-right都产生边距效果;但竖直方向的padding-top, padding-bottom, margin-top, margin-bottom不会产生边距效果。
inline元素只占用​ 尽可能多​的​ 宽度​,并​ 不强制​换行。

CSS代码:

p {
   display: inline;
}

执行结果:

 设置元素的display属性只会改变元素的​显示方式​,而​不会改变元素的​类型​。

 所以,带有display: block的内联元素不允许在其中包含其他块元素。

3、display:none(隐藏元素)

display:none​ ​隐藏​一个​元素

  • display:none属性-​不占用​任何​空间
  • display:none属性-​隐藏​当前​元素,它的​子元素​也一定​无法显示
  • display:none属性-​会引起页面重绘和回流,脱离文档

该元素将被​隐藏,在页面显示时不会展现出来,就好像该元素​不存在​一样。

HTML代码:

<h1>因为display:none,你们看不到我。</h1>
<p>这个就能看到啦</p>

CSS代码:

h1 {
   display: none;
}

执行结果:

display还有很多其他的参数值,比如list-item,table,table-cell,table-column,grid等等。

4、display:inline-block(既有inline属性也有block属性)

display:inline-block​属性,既有inline的属性也有block属性

它结合了上述inline和block的特点,如下:

  • 使元素变成行内元素​,拥有行内元素的特性,即可以与其他行内元素​共享一行​,不会独占一行
  • 能够改变元素的​height​,​width​的值
  • 可以​设置​padding​,​margin​的各个属性值,top,left,bottom,right都能够产生边距效果

 用通俗的话讲,就是​不独占一行的​块级元素。如下图可见:

图一: 

图二:

两个图可以看出,display:inline-block后块级元素能够在同一行显示。

 简单来说就是将对象呈现为inline对象,但是对象的内容作为block对象呈现。之后的内联对象会被排列在同一行内。比如我们可以给一个​link(a元素)​设置​inline-block属性,使其既具有block的可设置宽度​和​高度​特性又具有inline​的​同行​特性

二、visibility属性(元素可见性)

visibility属性用于指定元素的可见性。即元素是​可见的​还是隐藏的​。 

最常见的值是visiblehidden

  • visibility:visible属性值定义的元素是​可见​的,元素会显示出来,是默认的属性值。
  • visibility:hidden​属性值定义的元素是​不可见​的,元素不会显示出来,但还会占据原有的空间。

我们可以将visibility属性设置为“hidden”来隐藏元素。 

还有一种方法可以将元素“隐藏”起来,即将 display属性设置为“ none

但是请注意,这两种方法会产生不同的结果:

  • ​display:none​是​彻底消失​,​不占空间​,浏览器也​不会解析​该元素,当diaplay值为none时会产生回流和重绘
  • ​visibility:hidden​只是看不到了,但​占有相对空间​,​不会彻底消失​,浏览器​会解析​该元素,只重绘不回流

这里是一个例子:

HTML代码:

<h1>hello world</h1>
<div class="hidden">
   我被设置了visibility: hidden
</div>
<p>
	上方div的位置变成了空行,因为
    div元素被设置了visibility: hidden
</p>

CSS代码:

div.hidden {
   visibility: hidden;
}

执行结果:

display:none隐藏一个元素,没有为该元素保留一个位置。

visibility: hidden改为display:none会产生以下效果:

div.hidden {
   display: none;
}

执行结果:

三、文档流 

1、介绍

文档流是文档中可显示对象在排列时所占用的位置/空间

例如:块元素自上而下摆放,内联元素从左到右摆放 

文档流产生的问题:

1.高矮不齐,底边对齐

<span>hello</span>
    <img src="图标.png">

2.空格折叠

<span>我是文本     内容</span>

只显示一个空格

3、元素有空隙

 <span>我是文本内容</span>
    <img src="老虎.png">
    <img src="老虎.png">

2、脱离文档流

使一个元素脱离标准文档流有三种方式

  • 浮动
  • 绝对定位
  • 固定定位

 

四、CSS position定位

1、position属性(元素定位方法的类型)

position属性指定一个元素(​静态的,相对的,绝对或固定​)的定位方法的​类型

可以使用​topbottomleft, 和 right​属性来定位元素。

但是,除非position属性有进行初始化设置参数值这些属性才能起效果。 根据定位方法,它们的工作方式也不同。

position属性的值可以为:

  • absolute​:生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。
  • fixed​: 生成固定定位的元素,相对于浏览器窗口进行定位。元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。
  • relative​: 生成相对定位的元素,相对于其正常位置进行定位。因此,"left:20" 会向元素的 LEFT 位置添加 20 像素。
  • static​: 默认值。没有定位,元素出现在正常的流中(忽略 top, bottom, left, right 或者 z-index 声明)。
  • inherit: 规定应该从父元素继承 position 属性的值。

position:static (静态定位)

HTML元素默认为​静态​。 静态定位元素总是按照页面的​正常流动进行定位。

HTML代码:

<p>没有定位</p>
<p>没有定位</p>
<p>没有定位</p>
<p>没有定位</p>
<p>没有定位</p>
<p class="position_static">我用了静态定位</p>

CSS代码:

p.position_static {
   position:static;
   top: 30px;
   right: 5px;
   color: red;
}

执行结果:

position:fixed(固定定位)能使具有固定位置的元素相对于​浏览器窗口被​定位,并且即使窗口被滚动也不会移动。

可以使用​​top, right, bottom, 和left​​的一个或多个属性来指定位置。

position:absolute(绝对定位)生成绝对定位的元素,相对于static定位(默认定位值,即没有定位)以外的​第一个父元素​进行定位。

可以使用top, right, bottom, 和left的一个或多个属性来指定位置。

在下面的例子中,使用固定定位将段落固定为top:30px,right:5px。

CSS代码:

p.position_fixed {
   position: fixed;
   top: 30px;
   right: 5px;
   color: red;
}

执行结果:

 fixed参数能把元素从正常的顺序中拉出。可以无视其他元素的定位。

 设置了fixed的元素可以​重叠在​其他元素上。

2、相对定位

position:relative(相对定位)元素的定位是相对其正常位置,不会脱离文档流。

可以使用toprightbottom, 和 left的属性来指定呈现的元素将如何​移动​。

HTML代码:

<html>
<body>
	<p>hello everyone</p>
	<div>
		<span>hello everyone</span>
		<span>hello everyone</span>
	<div>
</body>
</html>

CSS代码:

p {
   width: 350px;
   border: 1px black solid;
   position: fixed;
}
span {
   background: green;
   color:white;
   position: relative;
   top: 150px;
   left: 50px;
}

执行结果:

relative定位的元素的内容可以移动并与其他元素​重叠​,但是元素的​保留空间在正常流程中仍然保留​。

 在table​中设置position:relative是​无效的。

absolute绝对定位

绝对位置元素相对于具有非静态位置的第一个父元素​进行定位。 如果找不到这样的元素,则针对的是<html>​。

绝对定位的元素将从正常流程中移除。 文档和其他元素的行为像绝对定位的元素不存在。

五、z-index属性(元素的堆栈顺序)

1、介绍

z-index属性指定元素的堆栈顺序(通过z-index的值可以决定哪个元素应放置在其他元素的前面或后面)。

当元素位于正常流程顺序之外时(受position等属性影响时),它们可以重叠于其他元素

HTML代码:

<html>
<head>
   <link rel="stylesheet" href="CSS定位与布局.css">
</head>
<body>
	<div class="blue">blue (hello everyone)</div>
	<div class="red">red (hello everyone)</div>
</body>
</html>

CSS代码:

.blue { 
   background-color: #8EC4D0;
   margin-bottom: 15px;
   width: 120px;
   height: 120px;
   color: #FFF;
}
.red {
   background-color: #FF4D4D;
   position: relative;
   width: 120px;
   height: 120px;
   color: #FFF;
   margin-top: -50px;
   margin-left: 50px;
}

执行结果:

红框与蓝框重叠,红框会位于蓝框上方,因为红框是后加载的。

设置z-index属性可以改变这个顺序。

2、指定z-index属性

为蓝色div元素指定​较高的​z-index值,为红色div元素指定​较低的​z-index值将导致以下结果:

HTML代码:

<html>
<head>
   <link rel="stylesheet" href="CSS定位与布局.css">
</head>
<body>
	<div class="blue">blue (hello everyone)</div>
	<div class="red">red (hello everyone)</div>
</body>
</html>

CSS代码:

.blue { 
   background-color: #8EC4D0;
   position: relative;
   margin-bottom: 15px;
   width: 120px;
   height: 120px;
   color: #FFF;
   z-index: 3;
}
.red {
   background-color: #FF4D4D;
   position: relative;
   width: 120px;
   height: 120px;
   color: #FFF;
   margin-top: -50px;
   margin-left: 50px;
   z-index: 2;
}

执行结果:

六、float属性(浮动)

1、介绍

float​属性指定一个盒子(元素)是否应该浮动​。

使用float,可以将元素向左或向右推,以允许其他元素环绕它。

float通常与图像​一起使用,但在处理布局时也很有用。

float属性的值是 left,right,和 none。

  • leftright​会使元素​向左或者向右浮动​。
  • none能确保元素​不会​进行浮动 

浮动的原理:

  • 浮动以后使元素脱离了文档流
  • 浮动只有左右浮动,没有上下浮动 

下面是一个右浮动的图像示例。

HTML代码:

<p>
        <img src="图标.png" />
        此段落有一个向<strong>右浮动</strong>的图像。
        强烈建议为图像添加边距,以便文本
        不要太靠近图像。如果您希望您的文本易于阅读,您可以
        应始终在单词和边框之间添加几个像素、图像、
        和其他内容。
    </p>

CSS代码:

img {
   float: right;
}

执行结果:

2、元素相邻

如果连续放置几个浮动的元素,那么如果有足够的空间,它们将相互浮动

例如,在设置页面布局中,可以通过设置​浮动​将​图像​和​文本​设置到页面中,使得​文本​可以跟​图像​并排显示。

HTML代码:

<p><img src="图标.png" />
我爱学习,我会暴富
</p>

CSS代码

img {
   float: left;
   width: 100px;
   margin-right: 10px;
}
p {
   width: 190px;   
   float: left;
}

执行结果:

七、清除float

1、清除float

元素设置了float​属性后会使​后面的元素​都受其​影响,将环绕在其周围。为了避免这种情况,请使用clear属性​。

clear​属性指定​某个元素​不受其他设置了float属性的元素的影响。具体可见以下例子:

1. 在下面的例子中,如果将div​设置为浮动​,则它后面的段落将会围绕在它周围

HTML代码:

<head>
	<link rel="stylesheet" href="CSS定位与布局.css">
</head>
<body>
<p>该段落位于div上方,不受div的float属性影响。</p>
    <div class="floating">
        <img src="图标.png" />
    </div>
<p>该段落位于div下方,受到div的float属性影响。</p>
<p>该段落也位于div下方,受到div的float属性影响。</p>
</body>

CSS代码:

p {
   height: 50px; border: 1px solid red;
}
.floating {
   float: right;
}

执行结果:

2. 在下面的例子中,当​父元素​不给​高度​的时候,内部元素不浮动时会撑开;而浮动的时候,​父元素变成一条线

HTML代码:

<head>
	<link rel="stylesheet" href="CSS定位与布局.css">
</head>
<body>
	<div class="father">
        <div class="son1"></div>

		<div class="son2"></div>

	</div>

CSS代码:

.father {

    border: 1px solid red;

	}
    .son1,.son2 {

	margin-top: 5px;

	height: 100px;

	width: 150px;

	border: 1px solid #000;

	}

    .son1 {

	float: left;

	}

    .son2 {

	float: right;

	}

执行结果:

简单地说,浮动是因为使用了​float:left​或float:right​或​两者都是有了​而产生的浮动。

2、使用clear属性

clear属性可以使用right,left​和both来指定某一个元素不受其他浮动元素的影响。

none ​:  允许两边都可以有浮动对象(默认值)
both ​:  不允许有浮动对象
left :  不允许左边有浮动对象
right ​:  不允许右边有浮动对象

both​用来清除来自​任一方向​的浮动​效果。

HTML代码:

<html>
<head>
   <link rel="stylesheet" href="CSS定位与布局.css">
</head>
<body>
	 <p>该段落位于div上方,不受div的float属性影响。</p>
	<br/><br/>
	<div class="floating">
	   <img src="图标.png" />
	</div>
	<p>该段落位于div下方,受到div的float属性影响。</p>
	<br/>
    <div class="clearing">
    <p>该段落由于清除了float,所以不受div的float属性影响。</p>
	</div> 
    <br/>
</body>
</html>

CSS代码:

 p {
   height: 50px; border: 1px solid red;
}
.floating {
   float: right;
}
.clearing {    
   clear: both;
}

执行结果:

八、overflow属性(应对内容溢出)

1、介绍

如前所述,页面上的每个元素都是一个盒子。如果没有设置盒子的高度,那么盒子的高度将随着所需的内容的增大而变大。

overflow属性指定如果​内容溢出​一个元素的框,会发生什么。

HTML代码:

<html>
<head>
   <link rel="stylesheet" href="CSS定位与布局.css">
</head>
<body>
	<div>
		这个文本在div元素里面,它有一个蓝色的
		背景颜色,并浮动到左侧。 我们设定一个具体的
		div元素的高度和宽度,正如你所看到的,这样会导致文本内容溢出。
	</div>
</body>
</html>

CSS代码:

div {
  width: 150px;
  height: 150px;
  background-color: LightBlue;
  float: left;
}

执行结果:

2、overflow属性值

overflow属性有四个值:visible(默认值),scrollhiddenauto

  • visible​:默认值,内容不会被修剪,会​呈现在​元素框之外
  • hidden​:内容会被修剪,并且其余内容是不可见​的。
  • scroll​:内容会被修剪,但是浏览器会显示​滚动条​以便查看其余的内容(​不溢出也会有滚动条​)
  • auto​:如果内容被修剪(比如​文字溢出时候​),则浏览器会显示​滚动条​以便查看其余的内容。

scroll值能阻止内容溢出​,但会增加出​滚动条​,通过拉动滚动条可以浏览所有内容。

CSS代码:

div {
   width: 150px;
   height: 150px;
   background-color: LightBlue;
   float: left;
   overflow: scroll;
}

执行结果:

3、auto 和 hidden值

auto​ - 如果内容​溢出被限制,则会添加一个​滚动条​,使超出的内容可以通过​滚动展示出来。

hidden​ - ​隐藏掉内容​溢出的部分​,溢出的内容将不可见。

CSS代码:

div {
   width: 150px;
   height: 150px;
   background-color: LightBlue;
   float: left;
   overflow: hidden;
}

执行结果:

scroll与auto的区别:

在内容超出时,均会显示滚动条,但在元素没有超出时,auto会隐藏滚动条,scroll依旧显示滚动条,但是禁用滚动条

     

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

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

相关文章

Mac M1Pro 安装Java性能监控工具VisualVM 2.1.9

本地已经安装了java8&#xff0c;在终端输入jvisualvm提示没有安装 zhiniansara ~ % jvisualvm The operation couldn’t be completed. Unable to locate a Java Runtime that supports jvisualvm. Please visit http://www.java.com for information on installing Java.官网…

Kafka事件(消息、数据)的存储

1、查看有关kafka日志配置文件的信息 2、查看kafka全部主题的日志文件 3、查看每个主题的日志文件 4、__consumer_offsets-xx文件夹的作用 package com.power;public class Test {public static void main(String[] args) {int partition Math.abs("myTopic".hashCo…

企业微信API对接文档【可向微信用户发消息】

目录 企业微信API对接文档 1.背景 2.获取微信第三方token 3.安装docker环境 4.打包与启动 4.1打包镜像 4.2启动容器&#xff08;启动应用&#xff09; 5.企业微信二维码验证 5.1 获取初始二维码 5.2 第1次二维码验证 5.3 第2次二维码验证 6. 企业微信三…

上博士为了毕业写学术论文头都大了,但更难受的是英语不咋地,投稿后经常会因为语言问题而惨遭拒稿,每每想起就令人心情郁郁,天台可期。

上博士为了毕业写学术论文头都大了&#xff0c;但更难受的是英语不咋地&#xff0c;投稿后经常会因为语言问题而惨遭拒稿&#xff0c;每每想起就令人心情郁郁&#xff0c;天台可期。有些审稿人也会直接告知需要专业的修改&#xff0c;那咋整呢&#xff0c;让润色呗&#xff0c;…

虚拟机virtualbox linux ubuntu使用usb串口

1.卸载brltty sudo apt remove brltty brltty是一个没啥用但是会抢占ch431的软件&#xff0c;所以卸载它 2.连接上串口&#xff0c;点击连接对应的usb串口 3.查看是否连接上 sudo dmesg -T | grep tty 查看tty组的最近日志&#xff0c;如果连接成功会显示连接的时间和串口…

基于数据挖掘的心力衰竭疾病风险评估系统

B站视频及代码下载&#xff1a;基于数据挖掘的心力衰竭疾病风险评估系统_哔哩哔哩_bilibili 1. 项目简介 心力衰竭是一种常见的心脏疾病&#xff0c;它严重影响患者的生活质量和预期寿命。早期识别和干预对于改善患者的预后至关重要。近年来&#xff0c;随着大数据技术和机器学…

eleme

设置主从从mysql57服务器 --配置主数据库 # systemctl stop firewalld # setenforce 0 # systemctl disable firewalld # ls anaconda-ks.cfg mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz# tar -xf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz # cp -r mysql-5.7.44-linux-…

【题解】【循环】——[NOIP2010 普及组] 数字统计

【题解】【循环】——[NOIP2010 普及组] 数字统计 [NOIP2010 普及组] 数字统计题目描述输入格式输出格式输入输出样例输入 #1输出 #1输入 #2输出 #2 提示 1.题意解析2.AC代码 [NOIP2010 普及组] 数字统计 戳我查看题目&#xff08;洛谷&#xff09; 题目描述 请统计某个给定…

Spring cloud 网关信息

网关简绍 就是网络的关口&#xff0c;负责请求的路由、转发、身份校验。 引入网关依赖 <dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependenc…

html+css 实现爱心跳动

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享htmlcss 实现爱心跳动&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f49…

速通教程:如何使用Coze+剪映,捏一个爆款悟空视频

程哥最近做了一个和黑神话悟空有关的视频&#xff0c;没想到就火了&#xff0c;视频主打一个玉石风格&#xff0c;就是下面这个视频。 视频请移步飞书观看&#xff1a;黑神话悟空玉石版 制作过程不算很复杂&#xff0c;全程只需要用到Coze智能体和剪映这两个工具。 智能体用…

做个实验

做个实验 #include <bits/stdc.h> using namespace std; #define int long long #define ll __int128_t #define ar array<int, 2> #define arr array<int, 3> int n, m, k, inf 1LL << 61, mod 998244353;// 1e97; const int N 5e5 50;void sol…

存储架构模式之数据库存储架构

数据库读写分离 读写分离解决了读的问题。读被分离出去了&#xff0c;写性能的提升还是会有的。 数据库慢不需要直接上读写分离&#xff0c;先尝试优化索引&#xff0c;加入缓存等操作。 数据库读写分离复杂度分析 任务分解&#xff1a;读请求打到从机&#xff0c;写请求打到…

kafka发送消息-生产者发送消息的分区策略(消息发送到哪个分区中?是什么策略)

生产者发送消息的分区策略&#xff08;消息发送到哪个分区中&#xff1f;是什么策略&#xff09; 1、默认策略&#xff0c;程序自动计算并指定分区1.1、指定key&#xff0c;不指定分区1.2、不指定key&#xff0c;不指定分区 2、轮询分配策略RoundRobinPartitioner2.1、创建配置…

【前端基础篇】CSS基础速通万字介绍(上篇)

文章目录 前言CSS介绍什么是CSS基本语法规范 引入方式内部样式表行内样式表外部样式总结 代码风格样式格式样式大小写空格规范 选择器选择器的功能选择器的种类基础选择器标签选择器类选择器id选择器通配符选择器基础选择器总结 复合选择器后代选择器子代选择器并集选择器 伪类…

杀软对抗 ----> 你真的Bypass火绒了吗?

目录 1.白加黑&#xff1f;syscall&#xff1f; ......绕过火绒&#xff1f;&#xff1f;&#xff1f; 2.内存对抗 ​3.CS已死 &#xff1f;&#xff1f;&#xff1f; 是真的 &#xff01; 玩免杀的都知道&#xff0c;我们说到国产&#xff0c;基本上都是360&#xff0c;对于…

AutoCAD 2010 x64图文安装教程及下载.

AutoCAD 2010 是 Autodesk 于2009年发布的一个版本&#xff0c;是 AutoCAD 系列中的一个重要里程碑。以下是 AutoCAD 2010 x64 的一些关键特性和改进&#xff1a; 参数化绘图&#xff1a;增加了几何约束和尺寸约束功能&#xff0c;使用户能够创建更精确、可调整的设计模型。动…

树章节习题

今天也是小小的把树的章节的内容大体过了一遍&#xff0c;总共有树上dp&#xff0c;LCA&#xff08;最近公共祖先&#xff09;&#xff0c;树的直径&#xff0c;以及树上差分 P1395 会议 很经典的树上dp里面的换根dp问题&#xff0c;现在这里说几个数组 sz数组&#xff0c;用…

多模态协同学习框架 DMCL

https://arxiv.org/pdf/2408.05914 一.discriminative and robust model 早期传统的reid的工作方式&#xff0c;因无法在大规模数据集上产生有竞争力的结果&#xff0c;所以本文中为相关工作&#xff0c;并未成为本文方法。 二.Dynamic Multimodal Feature Fusion Strategy 提…

计算机毕业设计选题推荐-产品订单管理系统-产品销售管理系统-Java/Python项目实战

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…