CSS 弹性布局

news2024/9/28 13:21:51

提示:这章比较重要,做复杂页面时经常会用到!会不断更新❗

文章目录

  • 前言
  • 主轴和侧轴
  • flex-direction 主轴方向
  • flex-wrap 折行
  • justify-content 主轴排列方式
    • flex-start:默认左对齐
    • flex-end:右对齐
    • center:居中
    • space-between:两端对齐
    • space-around:子标记之间的间距是子标记与父标记边框之间的间距2倍
    • space-evenly:间距平均
  • justify-content 侧轴排列方式
  • align-items与align-content 侧轴排列方式
  • flex 子标记样式


前言

提示:这里可以添加本文要记录的大概内容:

弹性布局的总体思想是把布局不写在标记上,而是把布局的样式代码写在最大的父标记上

让布局实现自适应和自动调整,可以在不同屏幕大小和设备上保持一定的布局效果,同时也可以方便地进行响应式设计

示例代码:

    /* 弹性布局 */
    display: flex;
    /* 主轴水平居中 */
    justify-content: center;
    /* 侧轴垂直居中 */
    align-items: center;

提示:以下是本篇文章正文内容,下面案例可供参考

主轴和侧轴

盒子变成弹性盒子后标记怎么排列?它是按照两个轴为方向进行排列显示(主轴和侧轴)

默认主轴是水平的,默认侧轴是垂直的

先设置一个大div,里面放五个小div,并分别控制他们的样式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        .p{
            width: 300px;
            height: 300px;
            border: 2px solid black;
            margin-top: 50px;
            margin-left: 100px;
        }
        .s{
            width: 50px;
            height: 50px;
            background-color: aqua;
        }
    </style>
</head>
<body>
    <!-- div.p>div{div$}.s*5 公式生成-->
    <div class="p">
        <div class="s">div1</div>
        <div class="s">div2</div>
        <div class="s">div3</div>
        <div class="s">div4</div>
        <div class="s">div5</div>
    </div>

</body>
</html>

输出效果:从上到下,五个小div默认排列
在这里插入图片描述

在父标记内加上弹性布局 display: flex;
输出显示:
在这里插入图片描述

弹性盒子中的子标记,是先按照主轴排列,再按照侧轴排列
主轴侧轴彼此垂直交叉

flex-direction 主轴方向

flex-direction:row      /*子元素沿主轴方向排列,也就是水平方向 row为默认值*/
flex-direction:column   /*子元素沿侧轴方向排列,也就是垂直方向 */

主轴默认是水平方向,【flex-direction: column; 垂直排列】
column主轴方向是垂直的(列)
row主轴方向是水平的(行)

弹性盒子中的子标记都会变成:行内块类型

接下来看一下

子标记里的5个div宽都是50px,总宽度是250px,接下来看一下他在整个大div宽300px内的显示
在这里插入图片描述
如果把5个小div的宽度改成80px,那总宽是400px,而大div总宽是300px,那会不会主轴不满然后侧轴排列?

输出结果:
在这里插入图片描述
这就是弹性盒子的特点:等比例压缩了

弹性盒子中的子标记占据的总尺寸超过弹性盒子的尺寸,默认弹性盒子会讲子标记等比例的压缩
在这里插入图片描述

flex-wrap 折行

如果说不想让他等比例压缩,要他折行显示侧轴排列时用到

在父标记中加入flex-wrap: wrap;

输出显示:
在这里插入图片描述

弹性盒子对于一些简单的样式声明,他会完成一些复杂的计算和排列

弹性盒子尺寸小于子标记的总尺寸时,会在侧轴排列(折行显示)

justify-content 主轴排列方式

flex-start:默认左对齐

主轴水平→左对齐,主轴垂直→上对齐

justify-content: flex-start;

总代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        .p{
            width: 500px;
            height: 300px;
            border: 2px solid black;
            margin-top: 50px;
            margin-left: 100px;
            /* 弹性布局 */
            display: flex;
            /* 水平向右排列(默认值) */
            flex-direction: row;
            flex-wrap: wrap;

            justify-content: space-evenly;
        }
        .s{
            width: 80px;
            height: 50px;
            background-color: aqua;
        }
    </style>
</head>
<body>
    <!-- div.p>div{div$}.s*5 公式生成-->
    <div class="p">
        <div class="s">div1</div>
        <div class="s">div2</div>
        <div class="s">div3</div>
        <div class="s">div4</div>
        <div class="s">div5</div>
    </div>

</body>
</html>

flex-end:右对齐

主轴水平右对齐,主轴是垂直下对齐

justify-content: flex-start;

在这里插入图片描述

center:居中

主轴水平整体水平居中,主轴是垂直整体垂直居中

justify-content: center;

在这里插入图片描述

space-between:两端对齐

主轴水平,左右两端的子标记紧挨着父标记的边框,
主轴垂直,上下两端子标记紧挨着父标记的边框,子标记之间间距相等

justify-content: space-between;

在这里插入图片描述

在这里插入图片描述

space-around:子标记之间的间距是子标记与父标记边框之间的间距2倍

子标记之间的间距是子标记与父标记边框之间的间距2倍

justify-content: space-around;

在这里插入图片描述

space-evenly:间距平均

子标记之间的间距和子标记与父标记边框之间的间距相等

justify-content: space-evenly;

在这里插入图片描述

justify-content 侧轴排列方式

只需要在父标记中加上下面代码
根据上面主轴的显示效果,可以理解成把它们逆时针旋转90°

/* 侧轴排列 */
flex-direction: column;

比如说space-evenly:间距平均
子标记之间的间距和子标记与父标记边框之间的间距相等

justify-content: space-evenly;

在这里插入图片描述

align-items与align-content 侧轴排列方式

align-items侧轴排列方式:

lign-items:侧轴排列方式
flex-start:侧轴垂直上对齐,侧轴水平左对齐
flex-end:侧轴垂直下对齐,侧轴水平右对齐
center:侧轴垂直居中,侧轴水平居中
align-items: flex-start;垂直方向上这几个标记靠上方

【案例代码】

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        .p{
            width: 500px;
            height: 300px;
            border: 2px solid black;
            margin-top: 50px;
            margin-left: 100px;
            /* 弹性布局 */
            display: flex;
            /* 主轴方向 column主轴方向是垂直的,row主轴方向是水平的(行)*/
            flex-direction: row;
            flex-wrap: wrap;

            justify-content: flex-start;
            /* align-items,侧轴排列方式 */
            align-items: flex-start;
        }
        .s{
            width: 80px;
            height: 50px;
            background-color: aqua;
        }
    </style>
</head>
<body>
    <!-- div.p>div{div$}.s*5 公式生成-->
    <div class="p">
        <div class="s">div1</div>
        <div class="s">div2</div>
        <div class="s">div3</div>
        <div class="s">div4</div>
        <div class="s">div5</div>
    </div>

</body>
</html>

在这里插入图片描述

align-items: flex-end;垂直方向侧轴靠下排列
在这里插入图片描述
align-items: center;垂直方向侧轴中间排列
在这里插入图片描述


align-content侧轴排列方式与align-items侧轴排列方式区别在于:多行显示时会看出效果

首先看一下

align-items: center; 
/* align-content: center; */

【案例代码】

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        .p{
         /* 此处把宽度改小,使其多行显示 */
            width: 200px;
            height: 300px;
            border: 2px solid black;
            margin-top: 50px;
            margin-left: 100px;
            /* 弹性布局 */
            display: flex;
            flex-direction: row;
            flex-wrap: wrap;

            justify-content: flex-start;

            align-items: center; 
            /* align-content: center; */
        }
        .s{
            width: 80px;
            height: 50px;
            background-color: aqua;
        }
    </style>
</head>
<body>
    <!-- div.p>div{div$}.s*5 公式生成-->
    <div class="p">
        <div class="s">div1</div>
        <div class="s">div2</div>
        <div class="s">div3</div>
        <div class="s">div4</div>
        <div class="s">div5</div>
    </div>

</body>
</html>

每一行中都在中间
在这里插入图片描述

 /* align-items: center;  */
 align-content: center;

在这里插入图片描述

flex 子标记样式

前面的标记都放在了父标记中,只有flex是唯一一个安排在子标记中的样式

flex是弹性布局中唯一一个设置在子标记中的样式
flex:整数;子标记占据父标记尺寸空间的比例
flex: 0 0 整数px; 代表子标记固定的尺寸,【0 0】:不压缩不扩大,固定

第一种写法:子标记中写数字

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        .p{
            width: 400px;
            height: 200px;
            border: 2px green solid;
            /* 变弹性盒子 */
            display: flex;
        }
        .p>div{
            height: 100px;
        }

        .s1{
            background-color: red;
            flex: 1;
        }
        .s2{
            background-color: yellow;
            flex: 2;
        }
        .s3{
            background-color: blue;
            flex: 2;
        }
    </style>
</head>
<body>
    <div class="p">
        <div class="s1"></div>
        <div class="s2"></div>
        <div class="s3"></div>
    </div>
</body>
</html>

在这里插入图片描述
第二种写法:固定样式写法

这里以s1举例

        .s1{
            background-color: red;
            /* s1,固定150px */
            flex: 0 0 150px;
        }

flex: 0 0 整数px; 代表子标记固定的尺寸,【0 0】:不压缩不扩大,固定

输出效果:
s2和s3是125×100
在这里插入图片描述


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

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

相关文章

如何在Maven中发布项目到Nexus私有服务器

本篇环境 nexus-3.55.0-01&#xff0c; Nexus安装在本地服务器 http://localhost:8081/maven-3.9.2 发布步骤 在项目机器的Maven的 settings.xml 配置Nexus的账号/密码 在settings.xml 的 <servers>节点增加 <server> 节点&#xff0c; 配置 Nexus 的登陆账号和…

Java使用pdf模板生成pdf文件

文章目录 前言如何生成pdf文件1. 制作pdf模板2. 填充pdf模板生成文件 前言 有时候&#xff0c;业务中我们需要使用pdf模板生成一份pdf文件。如何生成pdf文件&#xff1f; 如下&#xff0c;我们把左侧的模板生成为右侧的填充文件。 如何生成pdf文件 1. 制作pdf模板 &#xff…

【Linux】C++项目实战-UDP服务器

目录 UDP通信函数解析代码举例 广播函数解析代码举例 橙色 UDP通信 函数解析 #include <sys/types.h> #include <sys/socket.h> ssize_t sendto(int sockfd, const void *buf, size_t len, int flags, const struct sockaddr *dest_addr, socklen_t addrlen);- 参…

避雷器在线测试仪

一、产品概述 KDYZ-306氧化锌避雷器带电测试仪是用于检测氧化锌避雷器电气性能的专用仪器&#xff0c;该仪器适用于各种电压等级的氧化锌避雷器的带电或停电检测&#xff0c;从而及时发现设备内部绝缘受潮及阀片老化等危险缺陷。 仪器操作简单、使用方便&#xff0c;测量全过…

创建固定大小的文件(window 和 UBUNTU)

1、Windows Windows提供了一个强大的文件系统管理工具&#xff1a;fsutil.exe 例&#xff0c;在D盘上创建一个空文件file.txt&#xff0c;文件大小10k字节 fsutil file createnew D:\file.txt 1000 2、Ubuntu Ubuntu创建一个指定大小的文件用全零填充这个文件&#xff0c;例…

vue3 elementplus table合并

table表格下方合并写法&#xff1a; 1&#xff1a;单行合并 &#xff08;1&#xff09;在标签中加入属性 :summary-method"getSummaries":show-summary"true"<el-table:data"data"id"tableRef"ref"tableRef"row-key"…

CentOS Stream 10 计划已启动,即将进入初始化阶段

导读 但初始化的 CentOS Stream 10 暂时不会对外开放&#xff0c;也不会有太多活跃信息。从 Fedora 周期的规律来看&#xff0c;至少还有六个月的时间&#xff0c;CentOS Stream 10 才会正式启动开发流程&#xff0c;接受来自外部的贡献。周五的公告指出&#xff1a;你会看到 C…

智能优化算法改进策略之局部搜索算子(二)—模式搜索(以正余弦算法和灰狼算法为研究对象)

一、改进点基本介绍&#xff1a; 在目前多数的改进智能优化算法文献中&#xff0c;局部搜索算子的形式多种多样。它们主要被用来增强算法的局部开发能力&#xff0c;进而提升它们在优化问题特别在单峰问题上的收敛性能。作为一种高效的直接搜索法&#xff0c;模式搜索目前已被…

freemarker 使用word模板赋值

1. 引包<dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.28</version></dependency>word文档工具类import freemarker.template.Configuration; import freemarker.template.…

将List转化为String 以逗号隔开

一.前言 在我们日常开发中, 在前后端交互的时候 , 会遇到多个id或其他字段存放到一个字段中, 这时我们会遇到一个List(集合)---->String(单个字段), 这时我们要进行操作数据, 使得我们的数据可以保存到数据库中 . 二.解决方法 2.1 利用StringBurilder或StringBuffer pub…

【git】idea怎么去替换git的地址

git 打开git地址添加或者修改git地址 打开git地址 右击->git->repository->remotes 添加或者修改git地址

​BCC Art Looks:BCC+Color Infrared

BCCColor Infrared 彩色红外 Effect Presets & Docs 效果预设和文档 Mocha Mask and Track Mocha 蒙版和跟踪 Mocha Mask... Mocha 蒙版... Pixel Chooser / Mocha 像素选择器 / Mocha PixelChooser - 像素选择器 View Mask / Matte - 查看蒙版/遮罩 Intensity - 强度 Ma…

java基础(并发编程)-线程状态转换

一、线程的状态 情况1 情况2 情况3 情况4 情况5 情况6 情况7 情况8 情况9 RUNNABLE <-->BLOCKED t 线程用synchronized(obj)获取了对象锁时如果竞争CPU时间片失败&#xff0c;线程的状态从RUNNABLE -->BLOCKED持obj锁线程的同步代码块执行完毕&#xff0c;会…

系统架构设计师考试备考精简版(23年)!

关于23年新教材 2023 年系统架构设计师教材已经更新到第二版&#xff0c;新教材移除了 UML 和 设计模式章节&#xff0c;加入了架构设计理论与实践部分&#xff0c;对于大家来说好消息是 UML 和设计模式不用再去看了。坏消息是案例、论文难度应该会加大。这是因为新版本下篇加…

2023年黑马重磅推出接口自动化测试项目

随着测试行业的蓬勃发展&#xff0c;对从业者的要求越来越高&#xff0c;自动化测试已经成为软件测试中一个重要组成部分&#xff0c;广泛应用于各行各业。甚至&#xff0c;在圈子中还流传着这样一句话&#xff1a;学好测试自动化&#xff0c;年薪30万不在话下&#xff01; 今…

【重试】Java 中的 7 种重试机制

随着互联网的发展项目中的业务功能越来越复杂&#xff0c;有一些基础服务我们不可避免的会去调用一些第三方的接口或者公司内其他项目中提供的服务&#xff0c;但是远程服务的健壮性和网络稳定性都是不可控因素。在测试阶段可能没有什么异常情况&#xff0c;但上线后可能会出现…

漏洞分析|死磕Jenkins漏洞回显与利用效果

0x01 背景 近期我们发起了一个Goby漏洞挑战赛的活动&#xff0c;在活动期间收到了大量的反馈信息&#xff0c;延伸出一系列在编写POC漏洞检测与利用中考虑场景不全的问题&#xff0c;我们针对发现的各种场景用市面上常见的工具进行了一些列的对比工作&#xff0c;发现市面上工…

前端-vue-对打包的静态文件进行压缩

通过 npm run build 打包时候&#xff0c;会发现静态文件很大&#xff0c;放在nginx服务中访问页面会很慢&#xff0c;所以可在打包过程中对静态文件再压缩。 对js、css、html等文件进行压缩&#xff1a; 安装插件 “compression-webpack-plugin” 。(我本地版本&#xff1a;…

leecode-字符串解码-栈

题目 题目链接 分析 用两个栈存储数字、字符串的情况 如果遇到[&#xff0c;就入栈&#xff0c;遇到]就按照数字把字符串出栈&#xff0c;并构造出新的字符串赋给res。 一步步内部解码。 代码 class Solution { public:string decodeString(string s) {stack<int> …

【自监督论文阅读 4】BYOL

文章目录 一、摘要二、引言三、相关工作四、方法4.1 BYOL的描述4.2 Intuitions on BYOL’s behavior&#xff08;BYOL行为的直觉&#xff09;4.3 实验细节 五、实验评估5.1 Linear evaluation on ImageNet&#xff08;ImageNet上的线性评估&#xff09;5.2 Semi-supervised tra…