CSS 弹性布局

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

文章目录

  • 前言
  • 主轴和侧轴
  • 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;
    /* 改变主轴方向 */
    flex-direction: column;
    /* 主轴方向垂直 */
    flex-direction: column;
    /* 折行显示 */
    flex-wrap: wrap;

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

主轴和侧轴

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

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

先设置一个大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.mfbz.cn/a/37397.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java- IO 及其相关面试题

目录 一、前言二、Java IO 概述输入和输出流2.1.1 定义2.1.2 代码示例 2.2 字节流和字符流2.2.1 定义2.2.2 代码示例 2.3 标准IO和NIO 三、字节流和字符流3.1. 字节流&#xff1a;InputStream和OutputStream3.1.1. FileInputStream和FileOutputStream3.1.2. ByteArrayInputStre…

剑指oferr68-II.二叉树的最近公共祖先

为什么这道题的难度是easy&#xff0c;我感觉挺难的啊&#xff0c;我想了挺久没有一点思路就直接看题解了。题解有两种解法&#xff0c;先看第一种存储父节点 class Solution {Map<Integer,TreeNode> parent new HashMap<Integer,TreeNode>();Set<Integer>…

【网络安全】Burpsuite v2021.12.1安装激活配置快捷启动

Burpsuite v2021.12.1安装&激活&配置&快捷启动 一、下载激活包二、配置JDK11三、启动激活 一、下载激活包 需要下载的内容&#xff1a; Burp Suite jar包JDK11激活jar包汉化jar包 下面是已经下载好的&#xff0c;可以直接使用 BurpSuite网盘下载链接 提取码&#…

【运维】第03讲(上):Nginx 负载均衡常见架构及问题解析

实际上 Nginx 除了承担代理网关角色外还会应用于 7 层应用上的负载均衡&#xff0c;本课时重点讲解 Nginx 的负载均衡应用架构&#xff0c;及最常见的问题。 学前提示 Nginx 作为负载均衡是基于代理模式的基础之上&#xff0c;所以在学习本课时前&#xff0c;你需要对 Nginx …

本地appserv外挂网址如何让外网访问?快解析端口映射

一、appserv是什么&#xff1f; AppServ 是 PHP 网页架站工具组合包&#xff0c;作者将一些网络上免费的架站资源重新包装成单一的安装程序&#xff0c;以方便初学者快速完成架站&#xff0c;AppServ 所包含的软件有&#xff1a;Apache[、Apache Monitor、PHP、MySQL、phpMyAdm…

JavaFX中MVC例子理解

JavaFX可以让你使用GUI组件创建桌面应用程序。一个GUI应用程序执行三个任务&#xff1a;接受用户的输入&#xff0c;处理输入&#xff0c;并显示输出。而一个GUI应用程序包含两个 类型的代码&#xff1a; 领域代码。处理特定领域的数据和遵循业务规范。交互代码。处理用户输入…

Elasticsearch:使用 Elasticsearch 矢量搜索和 FastAPI 构建文本搜索应用程序

在我的文章 “Elastic&#xff1a;开发者上手指南” 的 “NLP - 自然语言处理及矢量搜索”&#xff0c;我对 Elastic Stack 所提供的矢量搜索有大量的描述。其中很多的方法需要使用到 huggingface.co 及 Elastic 的机器学习。这个对于许多的开发者来说&#xff0c;意味着付费使…

【Linux】进程优先级

Linux 进程优先级 为什么要有优先级的划分&#xff1f;Linux 环境设置优先级的具体做法并发运行环境变量如何通过代码获取环境变量 环境变量的来源 为什么要有优先级的划分&#xff1f; 优先级的规定就是为了确定某种资源获取的先后顺序。 本质原因是因为CPU资源是有限的。进程…

KMP算法

KMP KMP 算法是一个快速查找匹配串的算法&#xff0c;它的作用其实就是本题问题&#xff1a;如何快速在「原字符串」中找到「匹配字符串」。 而 KMP 算法的复杂度为 O(mn)实际上是O(N),因为O(M)不可能大于O(N) KMP 之所以能够在 O(mn)复杂度内完成查找&#xff0c;是因为其能…

CentOS环境下的MYSQL8安装

MySQL 安装 参考连接&#xff1a;https://www.cnblogs.com/jasonx1an/p/16690866.html 下载 下载网址&#xff1a;https://dev.mysql.com/downloads/mysql/ 卸载 mariadb 查看 mariadb rpm -qa|grep mariadb卸载 mariadb rpm -e mariadb-libs-5.5.68-1.el7.x86_64 --nodeps再…

概率栅格

欢迎访问我的博客首页。 概率栅格 1. miss 表与 hit 表 1. miss 表与 hit 表 miss 表和 his 表是一维数组&#xff0c;它们存放的都是空闲值。其下标 i i i 代表旧空闲值&#xff0c;元素 t a b l e [ i ] table[i] table[i] 代表旧空闲值 i i i 的新空闲值。表的更新可以用…

Maven —— 项目管理工具

前言 在这篇文章中&#xff0c;荔枝会介绍如何在项目工程中借助Maven的力量来开发&#xff0c;主要涉及Maven的下载安装、环境变量的配置、IDEA中的Maven的路径配置和信息修改以及通过Maven来快速构建项目。希望能对需要配置的小伙伴们有帮助哈哈哈哈~~~ 文章目录 前言 一、初…

安全防御 --- SSL VPN

附&#xff1a;无线项目介绍 SSL VPN 有浏览器的设备就可以使用SSL&#xff0c;进而使用SSL VPN。无需担心客户端问题&#xff0c;所以SSL VPN也称为无客户端VPN。SSL VPN在client to lan场景下特别有优势。 实际实现过程&#xff08;基于TCP实现&#xff09; &#xff08;1&…

MYSQL执行一条SELECT语句的具体流程

昨天CSDN突然抽风 我一个ctrlz把整篇文章给撤掉了还不能复原 直接心态崩了不想写了 不过这部分果然还是很重要,还是写出来吧 流程图 这里面总共有两层结构Server层 储存引擎 Server 层负责建立连接、分析和执行 SQL。MySQL 大多数的核心功能模块都在这实现&#xff0c;主要包…

Java-API简析_java.lang.ProcessBuilder类(基于 Latest JDK)(浅析源码)

【版权声明】未经博主同意&#xff0c;谢绝转载&#xff01;&#xff08;请尊重原创&#xff0c;博主保留追究权&#xff09; https://blog.csdn.net/m0_69908381/article/details/131729933 出自【进步*于辰的博客】 因为我发现目前&#xff0c;我对Java-API的学习意识比较薄弱…

什么是Docker

容器技术和虚拟机 虚拟机 和一个单纯的应用程序相比&#xff0c;操作系统是一个很重的程序&#xff0c;刚装好的系统还什么都没有部署&#xff0c;单纯的操作系统其磁盘占用至少几十G起步&#xff0c;内存要几个G起步。 在这台机器上开启三个虚拟机&#xff0c;每个虚拟机上…

Failed to connect to github.com port 443: Connection refused问题解决

文章目录 一、问题描述&#xff1a;Failed to connect to github.com port 443: Connection refused问题解决二、解决方法一&#xff1a;排查代理问题1、尝试重置代理或者取消代理的方式2、添加全局代理 三、解决方法二&#xff1a;排查DNS解析问题1、第一步&#xff1a;查找gi…

Redis解决Session共享问题

文章目录 一、集群Session共享问题二、Redis存储验证码和对象三、解决状态登录刷新问题 一、集群Session共享问题 session共享问题&#xff1a;多台Tomcat并不共享session存储空间&#xff0c;当请求切换到不同tomcat服务器时导致数据丢失的问题 tomcat可以进行多台tomcat进行…

蓝牙技术|低功耗蓝牙和LE Audio助力游戏设备行业发展

去年&#xff0c;蓝牙技术联盟官方宣布推出LE Audio&#xff0c;它以BLE为基础&#xff0c;旨在更好地兼顾音频质量和低功耗&#xff0c;以在多种潜在应用中显著增强用户体验。这在游戏行业中引起了轰动&#xff0c;由于其延迟显著降低&#xff0c;LE Audio在增强游戏体验方面展…

连接一个JavaScript文件

● 首先&#xff0c;本章我们会使用一个起始文件&#xff0c;代码如下 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0&qu…
最新文章