CSS - 弹性布局快速入门

news/2024/5/19 18:46:34 标签: css, flex, 弹性布局

文章目录

    • 1. 概述
    • 2. 使用
      • 2.1 Demo

1. 概述

  1. 开启flex布局: 最外层容器设置【display:flex】,容器内的成员即是flex项目


2. flex容器内的轴线定义: 水平的主轴(main axis)和垂直的交叉轴(cross axis)。主轴的开始位置(与边框的交叉点)叫做(main start),结束位置叫做(main end);交叉轴的开始位置叫做(cross start),结束位置叫做(cross end)== 开启flex布局,默认容器内元素按主轴方向(即横向)进行排列

如下图:flex容器内的轴线定义

在这里插入图片描述


3. 水平对齐的方式justify-content:如下脑图

默认
justify-content
1. center:水平居中对齐
2. flex-end:右对齐
3. flex-start:左对齐
4. space-between:左右两端对齐,且子元素之间间距相等
5. space-around:子容器之间的间距是最左右两侧子元素离父容器边界的两倍
6. space-evenly:元素间距均匀


4. 垂直对齐的方式align-items:如下脑图

默认
align-items
1. center:垂直居中对齐
2. flex-end:底部对齐
3. flex-start:顶部对齐


5. 元素排列方式flex-direaction:如下脑图

默认
flex-direaction
1. row:子元素都横向排列,从左到右
2. column-reverse:子元素都横向排列,从右到左
3. column:子元素都按纵向排列,从上到下
4. column-reverse:子元素都按纵向排列,从下到上


6. 元素排列顺序order:值越小,排的越前


7. 单个元素的垂直对齐方式align-self == 与弹性盒子的属性align-items是基本差不多:如下脑图

默认
align-self
1. center:垂直居中对齐
2. flex-end:底部对齐
3. flex-start:顶部对齐


8. 决定项目在有剩余空间的情况下是否放大flex-grow:如下脑图

默认
flex-grow
0:不放大
1:使用剩余的空间 = 即便设置了固定宽度,也会放大。假设默认三个项目中前两个项目都是0,最后一个是1,最后的项目会占满剩余所有空间


9. 用于决定项目在空间不足时是否缩小flex-shrink:如下脑图

默认
flex-shrink
0:空间不足,元素不会自动缩小,按既定设置的宽高显示
1:空间不足时大家一起等比缩小;注意,即便设置了固定宽度,也会缩小


10. 用于设置元素的宽度(优先级比width高)flex-basis:如下脑图

默认
flex-basis
auto:以width设置的元素宽为准
其他:元素的宽以当前设置值为准,即使你设置了width属性也不会使用width的宽,而是使用flex-basis


11. 属性组合flex:如下脑图

flex-grow
flex-shrink
flex-basis

2. 使用

2.1 Demo


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>css">
        .size-box {
            width: 250px;
            /* 1vh表示%1视口高度 100即表示100%视口高度 */
            /* height: 50vh; */
            /* margin-bottom: 20rem; */
            height: 400px;
            background: red;
        }
        .size-item {
            width: 100px;
            height: 100px;
            background-color: skyblue;
            border: 1px solid black;
        }
        .flex-box {
            background: silver !important;
            margin-top:100px;
            background: silver;
            display: flex;
            /* 水平对齐方式: center容器内的元素进行水平居中 flex-end:右对齐  flex-start:左对齐  space-between:左右两端对齐,且子元素之间距离相等 space-around:子容器之间的间距是左右两侧元素离父容器边界的两倍 space-evenly:间距都一样*/
            /* justify-content: center;          */
            /* justify-content: flex-end; */
            /* justify-content: flex-start; */
            /* justify-content: space-between; */
            /* justify-content: space-around; */
            justify-content: space-evenly;
            /* justify-content: center; */
           
            /* 垂直对齐方式:center:垂直居中对齐 flex-start顶部对齐  flex-end底部对齐  */
            /* align-items: flex-start; */
            /* align-items: center; */
            align-items: flex-end;
           
            /* 元素排列方式:row横向排列从左到右 row-reverse横向排列从右到左 column从上到下排列  column-reverse从下到上排列  */
            flex-direction: row;
            /* flex-direction: row-reverse; */
            /* flex-direction: column; */
            /* flex-direction:  column-reverse; */
            /* 控制元素是否可以多行显示,就宽度不够,元素可自行换行。不支持多行显示则css强制设置所有元素的宽度足够其显示在一行(默认) */
            /* flex-wrap: nowrap */
            flex-wrap: wrap
            /* flex-wrap: wrap-reverse */
        }
        .flex-item {
            background-color: orange;
           
            /* flex: 1 1 auto; */
           
        }
        .flex-item:nth-child(1) {
            /* 控制弹性容器内的子元素顺序,数值越小优先级越高 */
            order: 2;
        }
        .flex-item:nth-child(2) {
            order: 1;
            /* 控制该弹性容器的子元素的垂直对齐方式 */
            align-self: center;
            /* align-self: flex-start; */
            /* align-self: flex-end; */
           
        }
        .flex-item:nth-child(3) {
            order: 3;
            /* 取值:默认0,用于决定项目在有剩余空间的情况下是否放大,默认不放大;汪意,即便设置了固定宽度,也会放大。假设默认三个项目中前两个项目都是0,最后一个是1,最后的项目会占满剩余所有空间 */
            flex-grow: 0;
            /* 取值:默认1,用于决定项目在空间不足时是否缩小,默认项目都是1,即空间不足时大家一起等比缩小;注意,即便设置了固定宽度,也会缩小。但如果某个项目flex-shrink设置为0,则即便空间不够,自身也不缩小。 */
            /* flex-shrink: 1;  */
            /* 取值:默iAauto,用于设置项目宽度,默iAauto时,项目会保持默认宽度,或者[Xwidth为自身的宽度,但如果设置了flex-basis,权重会width属性高,因此会覆盖widtn属性。 特点优先级比width高 */
            /* flex-basis: auto; */
           
            /* flex-glow、flex-shrink、flex-basis的组合 */
            /* flex: 1 1 auto; */
        }
    </style>
</head>
<body>
    <h3>弹性布局</h3>
    <div class="ordinary-box size-box">
        <div class="ordinary-item size-item">box-item1</div>
        <div class="ordinary-item size-item">box-item2</div>
        <div class="ordinary-item size-item">box-item3</div>
    </div>
    <div class="flex-box size-box">
        <div class="flex-item size-item">flex-box-item1</div>
        <div class="flex-item size-item">flex-box-item2</div>
        <div class="flex-item size-item">flex-box-item3</div>
    </div>
</body>
</html>

在这里插入图片描述


http://www.niftyadmin.cn/n/626.html

相关文章

C规范编辑笔记(三)

继上篇我们的C规范编辑笔记(二)后&#xff0c;我们今天开始分享第三篇笔记&#xff0c;话不多说&#xff0c;我们开始~ 1、一个 tab 键盘等于四个空格键。我们在编程的时候最好使用空格键而不是使用 tab 键&#xff0c;当两个编译器的 tab 键设置的大小不一样的时候&#xff0…

牛客网经典Java面试常见题

个人主页&#xff1a;熬夜磕代码丶 作品专栏: 数据结构与算法 我变秃了&#xff0c;也变强了 给大家介绍一款程序员必备刷题平台——牛客网 点击注册一起刷题收获大厂offer吧 文章目录一、二叉搜索树与双向链表二、从尾到头打印链表三、调整数组奇数位于偶数前面四、删除链表…

Web监听器:Listener

Listener简介常用监听接口监听在线用户信息的实现Model层Controller层OnlineUserListener的实现View层测试简介 监听器&#xff08;Listener&#xff09;&#xff0c;是一个实现特定接口的普通Java程序&#xff0c;用于监听Web应用中的对象或信息发生改变时&#xff0c;作出相应…

【科学文献计量】Degree Analysis可视化节点度数分布案例详解

Degree Analysis可视化节点度数分布案例详解 0 模块版本1 案例源代码2 案例详解2.1 数据生成2.2 网络图节点信息2.3 绘制网络图连接节点2.4 绘制度数-秩图2.5 绘制度数直方图2.6 图像布局0 模块版本 1 案例源代码 官网案例链接: Degree Analysis 全部代码如下: import net…

2022年9月电子学会Python等级考试试卷(四级)答案解析

目录 一、单选题(共25题&#xff0c;每题2分&#xff0c;共50分) 二、判断题(共10题&#xff0c;共20分) 三、编程题(共3题&#xff0c;共30分) 青少年软件编程&#xff08;Python&#xff09;等级考试试卷&#xff08;四级&#xff09; 分数&#xff1a;100 题数&#xf…

深度解析带头节点单链表的增删改查与销毁链表等操作(含算法编写步骤,有完整代码)

14天阅读挑战赛努力是为了不平庸~ 算法学习有些时候是枯燥的&#xff0c;这一次&#xff0c;让我们先人一步&#xff0c;趣学算法&#xff01;欢迎记录下你的那些努力时刻&#xff08;算法学习知识点/算法题解/遇到的算法bug/等等&#xff09;&#xff0c;在分享的同时加深对于…

2095. 删除链表的中间节点、19. 删除链表的倒数第 N 个结点、148. 排序链表

LeetCode题解1、2095. 删除链表的中间节点2、 删除链表的倒数第 N 个结点3、排序链表1、2095. 删除链表的中间节点 题目描述&#xff1a; ➡️挑战链接⬅️ 分析&#xff1a; 首先题目要求我们删除中间节点&#xff0c;我们知道单链表是单向性的不能回头的&#xff0c;那么当…

FAQ 检索式问答系统学习记录

介绍 1. 背景 场景&#xff1a;假设有 一个 标准的问题库&#xff0c;此时有一个 新 query 进来&#xff0c;应该做什么操作&#xff1f; 灵魂三连问&#xff1a; 如何根据 这个 query&#xff0c;你怎么返回一个标准答案呢&#xff1f;如何从 问题库 里面找 答案&#xff1…