Flexbox

news2024/11/18 22:59:22

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.coloradmin.cn/o/826444.html

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

相关文章

关于LCD、LED、OLED、MLED(包含mimiLED和microLED)、柔性屏、超薄屏

关于LCD、LED、OLED、MLED、柔性屏、超薄屏 1、LCD&#xff1a;液晶显示屏&#xff0c;LED为其提供背景光源。 2、LED&#xff1a;发光二极管&#xff0c;是LCD的一部分。就是个灯泡。 3、OLED&#xff1a;相对于LCD来讲的&#xff0c;LCD要靠别人给他提供光、本身不能自发光…

JavaScript(四)DOM及CSS操作

1、DOM简介 DocumentType: Html的声明标签 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Docume…

基础实验篇 | PX4控制器的外部通信

PX4控制器的外部通信 01 实验名称及目的 PX4控制器的外部通信&#xff1a;在进行硬件在环仿真时&#xff0c;我们常常需要向设计的Simulink控制器中发送数据&#xff08;传感器数据、故障触发、控制指令、参数调整等&#xff09;&#xff0c;同时接收一些感兴趣的数据。RflySi…

隐藏程序文档窗口工具1.0下载

在录屏或直播时有些窗口&#xff0c;比如讲稿提词器等&#xff0c;不想录进视频里&#xff0c;或者不想被观众看到&#xff0c;您可以使用这个窗口隐藏工具。 这个隐藏并不是真的隐藏了&#xff0c;我们在电脑上依然可以看到&#xff0c;但是直播或录屏工具抓取不到了&#xf…

看pdf的软件有哪些?这几款了解一下

看pdf的软件有哪些&#xff1f;PDF格式的文件在现代社会中应用广泛&#xff0c;而PDF阅读器是很重要的一种工具。相比于其他文件格式&#xff0c;PDF文件的格式统一&#xff0c;便于分享和传输&#xff0c;并且不易被篡改。而PDF阅读器则是我们查看、编辑和管理PDF文件的必备工…

<C++>入门

在学习完C语言的基础上&#xff0c;继续开始C的学习。 C是在C的基础之上&#xff0c;容纳进去了面向对象编程思想&#xff0c;并增加了许多有用的库&#xff0c;以及编程范式 等。熟悉C语言之后&#xff0c;对C学习有一定的帮助&#xff0c;本章节主要目标&#xff1a; 1. 补充…

11年编码经验程序员惨遭淘汰解雇,原因竟是不会使用AI工具

近日&#xff0c;Twitter 上一名技术人分享了一个事件&#xff0c;即拥有11年Java编码经验、会 100% 手写代码的程序员因拒绝使用辅助代码工具&#xff0c;只想写可控的代码&#xff0c;竟败给一位仅有4年经验、却善用编码工具的后辈&#xff0c;惨遭面试淘汰。 当「拒绝使用编…

ASIC芯片设计全流程项目实战课重磅上线 ,支持 65nm制程流片 !

全流程项目实战课学什么&#xff1f; 此次推出【 ASIC芯片设计全流程项目实战课】&#xff0c;基于IPA图像处理加速器&#xff0c;以企业级真实ASIC项目为案例&#xff0c;学员可参与全流程项目实践&#xff0c;以及65nm真实流片&#xff01; 众所周知&#xff0c;放眼整个IC硕…

Java泛型6——类型擦除

注&#xff1a;以下内容基于Java 8&#xff0c;所有代码都已在Java 8环境下测试通过 Java泛型1——概述Java泛型2——泛型类Java泛型3——泛型接口Java泛型4——泛型方法Java泛型5——泛型通配符Java泛型6——类型擦除 1. 什么是类型擦除 泛型是在Java 1.5被引进的&#xff0…

sqlserver 使用SQLOLEDB 远程数据库同步数据

exec sp_addlinkedserver remote_server, , SQLOLEDB, ip exec sp_addlinkedsrvlogin remote_server, false,null, 账号, 密码 --查询方式 select * from remote_server.数据库名.dbo.表名 --不再使用时删除链接服务器 exec sp_dropserver remote_server, droplogins…

时序数据库 TDengine 与 WhaleStudio 完成相互兼容性测试认证

近年来&#xff0c;开源及其价值获得社会各界的广泛认可&#xff0c;无论是国家政策导向还是企业数字化转型&#xff0c;都在加速拥抱开源。对于如操作系统、数据库等基础软件来说&#xff0c;开源更是成为驱动技术创新的有力途径。 在此背景下&#xff0c;近日&#xff0c;涛…

前沿分享-会发电的水凝胶敷料

四川大学的研究团队设计了一种新型的伤口敷料&#xff0c; 将电刺激治疗引入伤口敷料&#xff0c;达到营造湿润环境的同时利用电刺激来加速愈合的效果。 上半部分由树状纳米纤维构成&#xff0c;下半部分由双网络导电水凝胶构成&#xff0c;加入了铁离子和儿茶酚。该部分用于贴…

Unity数字可视化学校_昼夜(一)

maya2022:链接&#xff1a;https://pan.baidu.com/s/1cvB438UKsv_tU37NsOaNow 3dmax软件合集:百度网盘 请输入提取码 1180 1、 2、unity3d 导入插件 &#xff1a; &#xff08;1&#xff09;UniStorm - Volumetric Clouds Sky 5.3.0.unitypackage &#xff08;天气&…

coopeliasim的光lights

光源是允许您照亮场景的对象。场景中没有任何光线的情况下&#xff0c;对象将以无阴影的颜色显示&#xff08;在这种情况下&#xff0c;对象仅使用可在环境对话框中设置的环境光组件照明&#xff09;。下图说明了场景中灯光的效果&#xff1a; [场景照明 &#xff08;1&#xf…

安达发|APS适用于什么场景

APS适用于什么场景 使用Excel进行生产计划和排程&#xff0c;然而在我国很多的小微企业中&#xff0c;很多都是用EXCEL甚至手工进行生产计划和排程&#xff0c;不能实现系统优化生产计划和排程(APS)的智能制造是伪概念的智能制造。 智能制造过程中&#xff0c;必然涉及系统优…

数据结构【第2章】——算法

算法 算法是解决特定问题求解步骤的描述&#xff0c;在计算机中表现为指令的有限序列&#xff0c;并且每条指令表示一个或多个操作。 注&#xff1a;算法定义中&#xff0c;提到了指令&#xff0c;指令能被人或计算装置执行。它可以是计算机指令&#xff0c;也可以是我们平时…

基于基于Web停车场管理系统的设计与实现-【开题报告】

文章目录 本系列校训毕设的技术铺垫文章主体层次选题目的和意义&#xff1a;课题研究目标、内容和手段&#xff1a;系统功能设计&#xff08;论文&#xff09;提纲&#xff1a;日程安排&#xff1a;参考文献 配套资源 本系列校训 互相伤害互相卷&#xff0c;玩命学习要你管&am…

机房环境、动力、网络、安防,帮您提高运维效率,确保机房安全

机房作为单位的核心部门&#xff0c;由计算机、服务器、网络设备、存储设备等关键设备组成&#xff0c;智能化计算机机房这个概念在各个领域中&#xff0c;已经占据了很重要的地位&#xff0c;伴随着国家大力倡导的&#xff0c;东数西算&#xff0c;数字经济、云计算、5G大数据…

FastAPI 是什么?小白必看

FastAPI 是一个现代、快速&#xff08;高性能&#xff09;的 Web 框架&#xff0c;用于构建基于 Python 的 API。它是一个开源项目&#xff0c;基于 Starlette 和 Pydantic 库构建而成&#xff0c;提供了强大的功能和高效的性能。 FastAPI 官网地址&#xff1a;FastAPI FastAP…

Handler源码详解

Handler在Android开发中经常使用&#xff0c;我们从经常使用的sendMessage 看一下Handler的源码&#xff1a; 实际是调用了sendMessageDelayed,只不过delayMillis0了。 接着调用了 sendMessageAtTime函数 引出一个很重要的角色MessageQueue消息队列&#xff0c;enqueueMessag…