Flexbox

news/2024/5/2 16:40:11/文章来源:https://blog.csdn.net/weixin_35691921/article/details/131470111

Flexbox

  • 一、什么是 Flexbox ?
  • 二、Flexbox 知识点
    • 2.1、Flex Container(容器)
      • 2.1.1、轴
      • 2.1.2、添加flex支持
      • 2.1.3、flex-direction(主轴向)
        • 2.1.3.1、row 横向
        • 2.1.3.2、row-reverse 横向翻转
        • 2.1.3.3、column 纵向
        • 2.1.3.4、column-reverse 纵向翻转
      • 2.1.4、justify-content(主轴上,元素对齐方式)
        • 2.1.4.1、flex-start(紧密排列在起始位置)
        • 2.1.4.2、flex-end(紧密排列在终止位置)
        • 2.1.4.3、center(居中)
        • 2.1.4.4、space-between(充满,均匀分配)
        • 2.1.4.4、space-around(充满,均匀分配)
        • 2.1.4.4、space-evenly(充满,均匀分配)
        • 2.1.4.5、stretch(居中)
      • 2.1.5、align-items(交叉轴上,元素对齐方式)
        • 2.1.5.1、flex-start
        • 2.1.5.2、flex-end
        • 2.1.5.3、center
        • 2.1.5.4、baseline(以基线对齐)
        • 2.1.5.4、last baseline
        • 2.1.5.5、stretch
      • 2.1.6、flex-wrap(是否换行?)
        • 2.1.6.1、nowrap
        • 2.1.6.2、wrap(换行,第一行在上面)
        • 2.1.6.3、wrap-reverse(换行,第一行在下面)
      • 2.1.7、align-content(多根轴线对齐方式)
        • 2.1.7.1、stretch
        • 2.1.7.2、flex-start
        • 2.1.7.3、flex-end
        • 2.1.7.4、center
        • 2.1.7.5、space-between
        • 2.1.7.6、space-around
      • 2.1.8、flex-flow
    • 2.2、Flex Item(项目)
      • 2.2.1、order(排序)
      • 2.2.2、align-self(定义自身元素的对齐方式)
      • 2.2.3、flex-basis(空间足够的场景下,修改主轴项目的长度)
      • 2.2.4、flex-grow(占用剩余空间的占比)
      • 2.2.5、flex-shrink(占用超出空间的占比)
      • 2.2.6、flex
  • 参考地址

一、什么是 Flexbox ?

Flexbox(弹性盒子布局)是一种用于在网页中进行灵活的布局的CSS模块。
它提供了一种简单而强大的方式来对网页元素进行排列、对齐和分布,适应不同屏幕大小和设备的需求。

Flexbox 使用一维的布局模型,可以在水平或垂直方向上创建弹性的容器和项目。

  1. 弹性容器(Flex Container)是父元素,用于包含弹性项目

  2. 弹性项目(Flex Item)是子元素,放置在弹性容器内

二、Flexbox 知识点

2.1、Flex Container(容器)

2.1.1、轴

容器默认存在两个轴:水平轴(main axis)和垂直轴(cross axis),项目默认沿主轴排列(水平轴)

水平轴也叫主轴,垂直轴也叫交叉轴。

2.1.2、添加flex支持

  1. 任何一个容器都可以指定为 Flex 布局

会生成一个块状的flex容器盒子

.box{display: flex;
}
  1. 行内元素也可以使用 Flex 布局。

会生成一个行内的flex容器盒子

.box{display: inline-flex;
}
  1. Webkit 内核的浏览器,必须加上-webkit前缀。
.box{display: -webkit-flex; /* Safari */display: flex;
}

在这里插入图片描述

可以看到设置支持flex后,默认沿水平轴排列

2.1.3、flex-direction(主轴向)

规定容器内元素排列方向,值:

  • row 横向,默认值
  • row-reverse 横向翻转
  • column 纵向
  • column-reverse 纵向翻转

2.1.3.1、row 横向

在这里插入图片描述

2.1.3.2、row-reverse 横向翻转

在这里插入图片描述

2.1.3.3、column 纵向

在这里插入图片描述

2.1.3.4、column-reverse 纵向翻转

在这里插入图片描述

2.1.4、justify-content(主轴上,元素对齐方式)

https://developer.mozilla.org/zh-CN/docs/Web/CSS/justify-content

控制主轴上所有 flex 项目的对齐

值:

  • flex-start
    元素紧密地排列在弹性容器的主轴起始侧。仅应用于弹性布局的项目。对于不是弹性容器里的元素,此值将被视为 start。

  • flex-end
    元素紧密地排列在弹性容器的主轴结束侧。仅应用于弹性布局的元素。对于不是弹性容器里的元素,此值将被视为 end。

  • center
    伸缩元素向每行中点排列。每行第一个元素到行首的距离将与每行最后一个元素到行尾的距离相同。

  • left
    伸缩元素一个挨一个在对齐容器左边缘,如果属性的轴与内联轴不平行,则 left 的行为类似于 start。

  • right
    元素以容器右边缘为基准,一个挨着一个对齐,如果属性轴与内联轴不平行,则 right 的行为类似于 end。

  • space-between
    在每行上均匀分配弹性元素。相邻元素间距离相同。每行第一个元素与行首对齐,每行最后一个元素与行尾对齐。

  • space-around
    在每行上均匀分配弹性元素。相邻元素间距离相同。每行第一个元素到行首的距离和每行最后一个元素到行尾的距离将会是相邻元素之间距离的一半。

  • space-evenly
    flex 项都沿着主轴均匀分布在指定的对齐容器中。相邻 flex 项之间的间距,主轴起始位置到第一个 flex 项的间距,主轴结束位置到最后一个 flex 项的间距,都完全一样。

  • stretch
    如果元素沿主轴的组合尺寸小于对齐容器的尺寸,任何尺寸设置为 auto 的元素都会等比例地增加其尺寸(而不是按比例增加),同时仍然遵守由 max-height/max-width(或相应功能)施加的约束, 以便沿主轴完全填充对齐容器的组合尺寸。
    备注: 虽然弹性盒子支持 stretch 属性,但将其应用于弹性盒子时,由于拉伸是由 flex 属性控制的,所以 stretch 的行为与 start 相同。

  • safe
    如果元素溢出对齐容器,则元素将按照对齐模式为 start 进行对齐。所期望的对齐将不会被实现。

  • unsafe
    即使元素溢出对齐容器,也会实现所需的对齐方式。与 safe 不同,safe 会忽略所要求的对齐方式以防止溢出。

2.1.4.1、flex-start(紧密排列在起始位置)

在这里插入图片描述

2.1.4.2、flex-end(紧密排列在终止位置)

在这里插入图片描述

2.1.4.3、center(居中)

在这里插入图片描述

2.1.4.4、space-between(充满,均匀分配)

在这里插入图片描述

2.1.4.4、space-around(充满,均匀分配)

在这里插入图片描述

2.1.4.4、space-evenly(充满,均匀分配)

在这里插入图片描述

2.1.4.5、stretch(居中)

  • 如果设置了item的尺寸,stretch 就是 strat

在这里插入图片描述

  • 如果没有设置item尺寸或者尺寸是auto,stretch 控制横向够用,竖向充满父布局。

在这里插入图片描述

2.1.5、align-items(交叉轴上,元素对齐方式)

属性:

  • flex-start
  • flex-end
  • center
  • baseline 所有元素向基线对齐。侧轴起点到元素基线距离最大的元素将会于侧轴起点对齐以确定基线
  • first baseline
  • last baseline
  • stretch 弹性项包含外边距的交叉轴尺寸被拉升至行高

更多属性:
https://developer.mozilla.org/zh-CN/docs/Web/CSS/align-items

2.1.5.1、flex-start

在这里插入图片描述

2.1.5.2、flex-end

在这里插入图片描述

2.1.5.3、center

在这里插入图片描述

2.1.5.4、baseline(以基线对齐)

first baseline 在此视图也是一样效果

在这里插入图片描述

2.1.5.4、last baseline

在这里插入图片描述

2.1.5.5、stretch

在这里插入图片描述

2.1.6、flex-wrap(是否换行?)

如下:总长度600,但是每个box都是100,导致100未生效,这个时候就可以使用此属性换行
在这里插入图片描述

  • nowrap 默认属性,不换行
  • wrap 换行,第一行在上面
  • wrap-reverse 换行,第一行在下面

2.1.6.1、nowrap

2.1.6.2、wrap(换行,第一行在上面)

在这里插入图片描述
改一下 align-items
在这里插入图片描述

2.1.6.3、wrap-reverse(换行,第一行在下面)

在这里插入图片描述

2.1.7、align-content(多根轴线对齐方式)

如果元素只有一根轴线,该属性不起作用。轴线数量是受flex-wrap影响的。

  • flex-start 从交叉轴开始位置填充
  • flex-end 从交叉轴结尾位置填充
  • center 与交叉轴中点对齐
  • space-between 与交叉轴两端对齐,轴线之前的间隔平均分布
  • space-around
  • space-evenly
  • stretch 默认值,轴线占满整个交叉轴
  • baseline first baseline last baseline

更多值:https://developer.mozilla.org/zh-CN/docs/Web/CSS/align-content

2.1.7.1、stretch

在这里插入图片描述

2.1.7.2、flex-start

在这里插入图片描述

2.1.7.3、flex-end

在这里插入图片描述

2.1.7.4、center

在这里插入图片描述

2.1.7.5、space-between

在这里插入图片描述

2.1.7.6、space-around

在这里插入图片描述

2.1.8、flex-flow

flex-flow 是 flex-direction 属性和flex-wrap属性的简写,默认为:flex-flow:row nowrap,用处不大,最好还是分开来写。

2.2、Flex Item(项目)

子元素有以下六个属性:

  • order 排序
  • flex-grow
  • flex-shrink
  • flex-basis
  • flex
  • align-self 覆盖 align-items 属性,定义自身的对齐方式

2.2.1、order(排序)

定义项目的排列顺序。数值越小,排列越靠前,默认为0。

在这里插入图片描述

2.2.2、align-self(定义自身元素的对齐方式)

align-self 会覆盖 align-items 属性

如下,start 会覆盖掉 last baseline

在这里插入图片描述

2.2.3、flex-basis(空间足够的场景下,修改主轴项目的长度)

在这里插入图片描述

如图,80 * 5 < 600 ,所以 flex-basis 生效

在这里插入图片描述
如图,150 * 5 > 600,所以最终的item长度是600 / 5 = 120。

在这里插入图片描述
如图,如果空间不够,那么就只会留下展示内容的大小。

属性优先级 line-height > flex-basis > 子item width > 父 width

2.2.4、flex-grow(占用剩余空间的占比)

在这里插入图片描述
flex-grow 属性会在 flex-basis 基础上生效。

如图, flex-basis 属性是110,110 * 5 < 600 ,理论上,会剩余横向空间。

但是因为 flex-grow 属性会让每个项目都均摊这块空间,所以实际上每个项目占用 120px。

flex-grow 也可以写在个别项目下:

因为只有一个 flex-grow = 1,所以A占用全局剩余空间。

2.2.5、flex-shrink(占用超出空间的占比)

如果不设置 flex-shrink ,即便 200 * 5 > 600 ,也不会让项目超出区域。
在这里插入图片描述
如果设置了 flex-shrink = 0:超出空间就显示出来了,如图 E D

在这里插入图片描述

设置在项目下时:

没设置 flex-shrink 属性的项目 值 = 1
在这里插入图片描述

A = 200px
C/E/D = 200px - (400px / 5)
B = 200px - (400px / 5) * 2

2.2.6、flex

flex 是由三个值拼在一起的,如下:

flex: none | [ <‘flex-grow’> <‘flex-shrink’>? || <‘flex-basis’> ]

在这里插入图片描述
flex-grow = 1,flex-shrink = 0,flex-basis = auto

参考地址

https://juejin.cn/post/7004622232378966046

https://www.bilibili.com/video/BV1P7411m7Nu/?spm_id_from=333.880.my_history.page.click

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

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

相关文章

宇凡微2.4g遥控船开发方案,采用合封芯片

2.4GHz遥控船的开发方案是一个有趣且具有挑战性的项目。这样的遥控船可以通过无线2.4GHz频率进行远程控制&#xff0c;让用户在池塘或湖泊上畅游。以下是一个简要的2.4GHz遥控船开发方案&#xff1a; 基本构想如下 mcu驱动两个小电机&#xff0c;小电机上安装两个螺旋桨&#…

速通pytorch库

速通pytorch库&#xff08;长文&#xff09; 前言 ​ 本篇文章主要为那些对于pytorch库不熟悉、还没有上手的朋友们准备&#xff0c;梳理pytorch库的主要内容&#xff0c;帮助大家入门深度学习最重要的库之一。 目录结构 文章目录 速通pytorch库&#xff08;长文&#xff09;1.…

pytorch学习——正则化技术——丢弃法(dropout)

一、概念介绍 在多层感知机&#xff08;MLP&#xff09;中&#xff0c;丢弃法&#xff08;Dropout&#xff09;是一种常用的正则化技术&#xff0c;旨在防止过拟合。&#xff08;效果一般比前面的权重衰退好&#xff09; 在丢弃法中&#xff0c;随机选择一部分神经元并将其输出…

openGauss学习笔记-28 openGauss 高级数据管理-NULL值

文章目录 openGauss学习笔记-28 openGauss 高级数据管理-NULL值28.1 IS NOT NULL28.2 IS NULL openGauss学习笔记-28 openGauss 高级数据管理-NULL值 NULL值代表未知数据。无法比较NULL和0&#xff0c;因为它们是不等价的。 创建表时&#xff0c;可以指定列可以存放或者不能存…

利用尺度因子方法恢复GRACE水储量变化

1.背景 重力恢复与气候实验&#xff08;GRACE&#xff09;观测地球重力势的时间变化。在考虑了大气和海洋效应后&#xff0c;每月到年际尺度上剩余的信号主要与陆地水储存&#xff08;TWS&#xff09;的变化有关。水储存变化的估计受到测量误差和噪声的信号退化影响&#xff0…

【机密计算-大厂有话说】NVIDIA Hopper H100 上的机密计算

1. 英伟达机密计算路线图(硬件) 在过去的四代中,NVIDIA 一直在不断提高安全性和设备的完整性。最早有文献记载的工作之一是在 NVIDIA V100 GPU 中,为设备上运行的固件提供了 AES 身份验证。身份验证可以保证用户可以信任启动固件没有被破坏,也没有被篡改。随着时…

剑指 Offer 54. ! 二叉搜索树的第k大节点 (考察二叉树的中序遍历)

剑指 Offer 54. 二叉搜索树的第k大节点 给定一棵二叉搜索树&#xff0c;请找出其中第 k 大的节点的值。 我的思路是&#xff1a;用一个全局arrayList不断收集“逆向”中序遍历该搜索二叉树所需要的答案 class Solution {int res, k;public int kthLargest(TreeNode root, int …

17、Spring6整合JUnit5

目录 17、Spring6整合JUnit5 17.1 Spring对JUnit4的支持 准备工作&#xff1a; 声明Bean spring.xml 单元测试&#xff1a; 17.2 Spring对JUnit5的支持 17、Spring6整合JUnit5 17.1 Spring对JUnit4的支持 准备工作&#xff1a; <?xml version"1.0" enco…

【TypeScript】类型断言的基本使用

类型断言的概念 有些时候开发者比TS本身更清楚当前的类型是什么&#xff0c;可以使用断言&#xff08;as&#xff09;让类型更加精确和具体。 类型断言&#xff08;Type Assertion&#xff09;表示可以用来手动指定一个值的类型。 类型断言语法&#xff1a; 值 as 类型 或 <…

如何使用STAR原则优化项目管理?

介绍STAR原则 1.1 STAR原则的定义 STAR原则是一个行为面试技术&#xff0c;即Situation&#xff08;情境&#xff09;、Task&#xff08;任务&#xff09;、Action&#xff08;行动&#xff09;和Result&#xff08;结果&#xff09;。这种原则被广泛应用在职业面试中&#x…

UG\NX 二次开发 选择相切面、相邻面的选择面控件

文章作者&#xff1a;里海 来源网站&#xff1a;https://blog.csdn.net/WangPaiFeiXingYuan 简介&#xff1a; 有群友问“UFUN多选功能过滤面不能选择相切面或相邻面之类的吗&#xff1f;” 这个用Block UI的"面收集器"就可以&#xff0c;ufun函数是不行的。 效果&am…

【爬虫实践】使用Python从网站抓取数据

一、说明 本周我不得不为客户抓取一个网站。我意识到我做得如此自然和迅速&#xff0c;分享它会很有用&#xff0c;这样你也可以掌握这门艺术。【免责声明&#xff1a;本文展示了我的抓取做法&#xff0c;如果您有更多相关做法请在评论中分享】 二、计划策略 2.1 策划 确定您…

【CSS】3D卡片效果

效果 index.html <!DOCTYPE html> <html><head><title> Document </title><link type"text/css" rel"styleSheet" href"index.css" /></head><body><div class"card"><img…

12. Mybatis 多表查询 动态 SQL

目录 1. 数据库字段和 Java 对象不一致 2. 多表查询 3. 动态 SQL 使用 4. if 标签 5. trim 标签 6. where 标签 7. set 标签 8. foreach 标签 9. 通过注解实现 9.1 查找所有数据 9.2 通过 id 查找 1. 数据库字段和 Java 对象不一致 我们先来看一下数据库中的数…

java 定时任务不按照规定时间执行

这里写目录标题 排查代码中添加的定时任务步骤是否正确排查是否任务阻塞&#xff0c;如果定时任务出现异常阻塞后&#xff0c;将不会在次执行java中多个Scheduled定时器不执行为了让Scheduled效率更高&#xff0c;我们可以通过两种方法将定时任务变成多线程执行&#xff1a;方法…

nmake编译Qt第三方库出现无法打开包含文件type_traits

最近需要为个人项目ShaderLab添加内嵌的代码编辑窗口功能&#xff0c;支持语法高亮和Intellisense&#xff0c;最初使用了QCodeEditor,发现这个第三方的库对词法分析的实现效果不太行. 代码换行后直接缩进到首行&#xff0c;无法定位到前一句的首行 考虑换QScintilla&#xff…

阿里云ECS部署Mysql数据库

说明 首先需要到阿里云官方购买阿里云产品 &#xff0c;如果有机会可以免费试用那会更好&#xff0c;跳过购买云服务步骤下面直接演示。 一、阿里云官网示意图 1.百度搜索 阿里云官方 2.点击控制台 3.展开更多 4. 选择云服务器ECS 5. 点击实例 可以看到服务器状态&#xff…

Michael.W基于Foundry精读Openzeppelin第18期——DoubleEndedQueue.sol

Michael.W基于Foundry精读Openzeppelin第18期——DoubleEndedQueue.sol 0. 版本0.1 DoubleEndedQueue.sol 1. 目标合约2. 代码精读2.1 结构体Bytes32Deque2.2 length(Bytes32Deque storage deque) && empty(Bytes32Deque storage deque)2.3 at(Bytes32Deque storage de…

代码随想录第四十八天|198、213、337.打家劫舍

198.打家劫舍 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一晚上被小偷闯入&#xff0c;系统会自动报警。 给定一个代表每个…

【嵌入式系统开发实训】学生实验报告

一、实验内容 1、过程考核60分&#xff1a; &#xff08;1&#xff09;顺序点亮3个LED灯&#xff08;分数&#xff1a;10分&#xff09;&#xff1b; &#xff08;2&#xff09;按键顺序点亮3个LED灯&#xff08;分数&#xff1a;10分&#xff09;&#xff1b; &#xff08;3&a…