前端布局利器:Flex布局

news2024/9/21 16:17:20

曾经的我们使用传统布局方式,我们深刻的体会着1px除不尽,三等分,居中,塌陷等等让我们升血压的问题。传统的布局方式:布局繁琐,需要使用大量的HTML和CSS代码来实现简单的布局。灵活性差,难以实现复杂的布局效果。难以维护,由于使用了大量的HTML和CSS代码,导致布局难以维护和修改。移动端适应性差,在移动设备上可能无法很好地展示。今天我们就来说说前端布局神器:Flex布局。

布局的传统解决方案,基于盒状模型,依赖 display 属性 + position属性 + float属性。它对于那些特殊布局非常不方便,比如,布局比较繁琐,不便,盒子居中,各种居中对齐,大量调整盒子位置,通常div水平显示设置float,清除浮动,margin重叠问题。

一、Flex布局容器怎么设置

Flex布局是Flexible Box的缩写,是一种布局方式,用于为容器中的元素提供最大的灵活性。采用Flex布局的元素的父元素称为Flex容器,子元素称为Flex项目。Flex容器可以应用于任何容器,包括行内元素,而Flex项目可以是任何子元素。

任何一个容器都可以指定为 Flex 布局,行内元素也可以使用 Flex 布局,Webkit 内核的浏览器,必须加上-webkit前缀。

.box{
  display: flex;
}

.box{
  display: inline-flex;
}
/**Webkit 内核的浏览器*/
.box{
  display: -webkit-flex; /* Safari */
  display: flex;
}

注意,设为 Flex 布局以后,子元素的floatclearvertical-align属性将失效。

二、基本概念

采用 Flex 布局的元素,称为 Flex 容器(flex container),简称"容器"。
在这里插入图片描述

在Flex布局中,容器默认存在两根轴:主轴(main axis)和交叉轴(cross axis)。

主轴是指Flex容器的主要方向,默认从左往右排列。你可以通过设置flex-direction属性来修改主轴的方向,比如设置为row-reverse(从右往左)或column(从上往下)。

交叉轴是指与主轴垂直的方向,默认从上往下排列。你可以通过设置justify-content属性来控制项目在主轴上的对齐方式。

这两根轴的设定使得Flex布局可以灵活地控制元素的排列和对齐方式。例如,你可以通过设置flex-direction为column来让元素在垂直方向上排列,通过设置justify-content为center来让元素在交叉轴上居中对齐。

三、容器的属性

以下6个属性设置在容器上。flex-direction、flex-wrap、flex-flow、justify-content、align-items、align-content

3.1 flex-direction属性
flex-direction属性决定主轴的方向(即项目的排列方向)。

.box {
  flex-direction: row / row-reverse / column / column-reverse;
}

在这里插入图片描述

它可以有4个值。

row(默认值,常用,横向):主轴为水平方向,起点在左端。
row-reverse:主轴为水平方向,起点在右端。
column:(常用,纵向)主轴为垂直方向,起点在上沿。
column-reverse:主轴为垂直方向,起点在下沿。

3.2 flex-wrap属性
默认情况下,项目都排在一条线(又称"轴线")上,即使挤成一坨,它也不会换行。flex-wrap属性定义,如果一条轴线排不下,如何换行。

.box{
  flex-wrap: nowrap / wrap / wrap-reverse;
}

它的三个取值分别对应如下效果图:

在这里插入图片描述

3.3 flex-flow属性
flex-flow属性是flex-direction属性和flex-wrap属性的简写形式,默认值为row nowrap。

.box {
  flex-flow: <flex-direction> / <flex-wrap>;
}
3.4 justify-content属性
justify-content属性定义了项目在主轴上的对齐方式。

.box {
  justify-content: flex-start / flex-end / center / space-between / space-around;
}

在这里插入图片描述

它可能取5个值,具体对齐方式与轴的方向有关。下面假设主轴为从左到右。

flex-start(默认值):左对齐
flex-end:右对齐
center: 居中
space-between:两端对齐,项目之间的间隔都相等。
space-around:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。

3.5 align-items属性
justify-content 的效果图所示,水平效果调整好了,但是垂直方向不行,所以需要用到align-items,它的属性定义项目在交叉轴上,也就是垂直方向如何对齐。

.box {
  align-items: flex-start / flex-end / center / baseline / stretch;
}

在这里插入图片描述

它有5个值。具体的对齐方式与交叉轴的方向有关,下面假设交叉轴从上到下。

flex-start:交叉轴的起点对齐。
flex-end:交叉轴的终点对齐。
center:交叉轴的中点对齐。
stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。 baseline: 项目的第一行文字的基线对齐。

3.6 align-content属性
align-content 和 align-items 类似,如果只有一根轴线 align-content 几乎等同于 align-items。一根轴线的概念可以理解为:项目没有换行,如果项目有换行,那么每行项目上都有一根轴线。如下图所示:

.box {
  align-content: flex-start | flex-end | center | space-between | space-around | stretch;
}

在这里插入图片描述

该属性可能取6个值。

flex-start:与交叉轴的起点对齐。
flex-end:与交叉轴的终点对齐。
center:与交叉轴的中点对齐。
space-between:与交叉轴两端对齐,轴线之间的间隔平均分布。
space-around:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍。

四、项目的属性

首先我们平时使用的{display:flex;justify-content:center;align-items:center;}这些是容器属性,也就是父级元素里面设置的,但是如果我们想对某一项子级元素单独设置属性,这就要用到flex的项目属性了。以下6个属性设置在项目上。

order
flex-grow
flex-shrink
flex-basis
flex
align-self

4.1 order属性(数字)
order属性定义项目的排列顺序。当给子项添加了该属性,他们会按照order属性定义项目的排列顺序。数值越小,排列越靠前,默认为0。

.item {
  order: <integer>;
}

在这里插入图片描述

4.2 flex-grow属性(数字)
flex-grow属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大。

.item {
  flex-grow: <number>; /* default 0 */
}

先看第一张图,默认情况下:

在这里插入图片描述

当我们给第4块设置了flex-grow: 1以后,会变成下图这样这样,可以看到第4块元素直接把父元素的剩余部分全部都占满了,当其他元素也设置此属性,他们会按照设置的数值大小比例来平分父元素剩余空间。
所以我们可以知晓这个属性是在项目不占满容器的时候使用的,并且让元素放大。

在这里插入图片描述

4.3 flex-shrink属性(数字)
flex-shrink属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。明显看到该属性和felx-grow正好相反,这个是为设置缩小使用的。

.item {
  flex-shrink: <number>; /* default 1 */
}

在这里插入图片描述

如果所有项目的flex-shrink属性都为1,当空间不足时,都将等比例缩小。如果一个项目的flex-shrink属性为0,其他项目都为1,则空间不足时,前者不缩小。

负值对该属性无效。

4.4 flex-basis属性(单位)
flex-basis属性定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小。

.item {
  flex-basis: <length> | auto; /* default auto */
}

它可以设为跟width或height属性一样的值(比如350px),则项目将占据固定空间。

4.5 flex属性
flex属性是flex-grow, flex-shrink 和 flex-basis的简写,默认值为0 1 auto。后两个属性可选。

.item {
  flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]
}

该属性有两个快捷值:auto (1 1 auto) 和 none (0 0 auto)。

建议优先使用这个属性,而不是单独写三个分离的属性,因为浏览器会推算相关值。

4.6 align-self属性
align-self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch。

.item {
  align-self: auto | flex-start | flex-end | center | baseline | stretch;
}

在这里插入图片描述

该属性可能取6个值,除了auto,其他都与align-items属性完全一致。

好了,Flex布局分享,感兴趣的同学可以直接访问webfunny前端监控和前端埋点系统
在这里插入图片描述

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

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

相关文章

腾讯视频:让自媒体创作者“怀才有遇”

在这个信息快速流通的自媒体时代&#xff0c;时间变得越来越碎片化&#xff0c;短剧、短番与短节目则凭借着短小精悍、内容紧凑的特点&#xff0c;完美契合了碎片化的时间消费习惯。这些短的内容被观众喜爱的同时&#xff0c;也让许多自媒体创作者找到了致富之路。 相对于大IP…

Redis Desktop Manager 0.8.8.384 安装与使用详解

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storm…

【软件安装】PyCharm安装教程(MAC)

一、准备阶段 准备软件安装包和jetbrains crack 包 二、软件安装 &#xff08;1&#xff09;运行pycharm安装包 等待程序运行 &#xff08;2&#xff09;运行jetbrains crack 安装包 运行补丁安装 &#xff08;3&#xff09;打开pycharm软件 等待系统验证后&#xff0c;打开…

【路径规划】移动机器人路径规划算法的实现

摘要 本文实现了移动机器人路径规划算法&#xff0c;包括Dijkstra、A*和基于无向图的动态规划算法。通过在复杂障碍环境中测试这些算法&#xff0c;评估了它们在路径最优性、计算效率和适应性方面的性能。本文提出的算法结合了不同的启发式和优化策略&#xff0c;为机器人路径…

kubectl的deployment和service

目录 概念 kubectl的基础命令 *每天常用的查看集群的基本信息 deployment的部署方式 deployment 的特点 基于deployment创建pod 手动缩容 service的类型以及工作原理 创建service service的类型 修改service的类型为nodeport **nodeport实验&#xff1a;对外暴露端…

产品网络低价乱价,有哪些控价方法?

电商平台的兴起让产品销售渠道更加多元化&#xff0c;但同时也带来了价格混乱的问题。产品网络低价现象频发&#xff0c;不仅扰乱了市场秩序&#xff0c;损害了品牌形象&#xff0c; 还严重影响了正规渠道经销商的利益。针对这一问题&#xff0c;产品控价成为了企业和品牌方亟待…

【动态规划】子数组系列二(数组中连续的一段)

子数组系列一&#xff08;数组中连续的一段&#xff09; 1.等差数列划分2.最长湍流子数组3.单词拆分4.环绕字符串中唯一的子字符串 点赞&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;关注&#x1f496;&#x1f496; 你的支持是对我最大的鼓励&#xff0c;我们一起…

【多场景应用】基于杰发科技AC7840x的Mini LED背光驱动设计

应用场景&#xff1a; 在汽车应用中&#xff0c;Mini LED背光驱动设计主要用于仪表盘、中控屏和车载娱乐系统等显示屏。这项技术可以显著提升显示效果&#xff0c;提供更高的亮度、更深的黑色和更广的色域&#xff0c;使得图像更加生动逼真&#xff0c;尤其在强光和宽温度范围…

【类模板】类模板的基本范式

一、类模板的概念 类模板与一般的模板一样&#xff0c;都是通过给定的模板参数&#xff0c;生成具体的类&#xff0c;也就是实例化一个特定的类。这个概念和函数模板差不多。 例如&#xff0c;在 C C C中的 s t d : : v e c t o r std::vector std::vector容器就是一个经典的…

AWS账号关闭后的影响:您需要知道的一切

亚马逊网络服务&#xff08;AWS&#xff09;作为全球领先的云计算平台&#xff0c;为众多企业和个人提供了便捷、高效的云服务。然而&#xff0c;当用户决定关闭其AWS账号时&#xff0c;可能会对其现有的服务和资源产生重大影响。我们九河云将通过本文将深入探讨AWS账号关闭后的…

树莓派3B驱动ST7735(Python)

一 环境准备 之前做了PICO驱动ST7735&#xff0c;这次再进一步&#xff0c;用树莓派3B来驱动。还是先上图。 最开始还是根据GPT的指引来做的。SPI的细节就不多说了&#xff0c;之前在PICO的时候说过了。 总线学习3--SPI-CSDN博客 二 实现细节 连接方式如下&#xff1a; VCC …

猛兽财经:AMD股票值得长期投资吗?

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 过去三年对AMD来说可谓压力山大&#xff0c;由于个人电脑(PC)市场的疲软&#xff0c;AMD的股价一直承受着巨大的压力&#xff08;AMD的股价在过去三年中仅上涨了44%&#xff0c;远远低于费城半导体指数56%的涨幅&#xff…

快速申请公网、内网IP地址SSL证书

在当今社会&#xff0c;网络安全越来越重要。SSL证书不仅能够提供加密的数据传输&#xff0c;还能增强用户信任度&#xff0c;提升搜索引擎排名等。但是只有IP地址可以用来申请SSL证书吗&#xff1f;答案当然是可以的&#xff0c;而且申请也非常容易。下面是快速申请流程&#…

SpringBoot3核心特性-数据访问

目录 传送门前言整合SSM场景一、创建SSM整合项目二、配置数据源三、配置MyBatis四、CRUD编写五、自动配置原理六、快速定位生效的配置七、扩展&#xff1a;整合其他数据源1、Druid 数据源2、附录&#xff1a;示例数据库 传送门 SpringMVC的源码解析&#xff08;精品&#xff0…

如何通过工业交换机增加网络带宽?

在现代工业环境中&#xff0c;网络的稳定性和带宽的充足性显得尤为重要。随着设备的增加和数据流量的增长&#xff0c;单一的网络带宽往往难以满足企业对于高效数据传输的需求。因此&#xff0c;如何通过工业交换机来增加网络带宽&#xff0c;成为了技术人员关注的重点。 首先&…

新手使用住宅代理有哪些常见误区?

作为新手&#xff0c;在使用住宅代理时往往会陷入一些常见误区&#xff0c;这些误区不仅可能影响到使用效果&#xff0c;甚至可能会带来安全风险。今天将与大家探讨新手在使用住宅代理时可能会遇到的几个关键误区&#xff0c;并提供相应的解决方案。误区一&#xff1a;盲目追求…

「合诚」× 企企通SRM项目启动,高分子新材料和健康产业高新技术企业将奔赴数智采购新征程

为拉通产业链上下游&#xff0c;优化提升整体效率&#xff0c;帮助企业变革采购管理方式&#xff0c;推动化工新材料行业高质量发展&#xff0c;近日&#xff0c;合诚技术股份有限公司&#xff08;以下简称“合诚”&#xff09;携手企企通成功举办了SRM项目启动会&#xff0c;双…

微电网能量管理系统在企业光伏电站的应用

发展背景&#xff1a; 在全球不可再生能源稀缺的背景下各个国家都在大力发展可再生能源&#xff0c;因此光伏行业应需而生且迅速发展了起来。能源转型中的光伏储能是指将光伏发电与储能技术相结合&#xff0c;以解决太阳能发电的间歇性和不稳定性问题&#xff0c;实现更稳定、…

怎么使用PPT倒计时插件?这款在线PPT工具,堪称办公必备!

在进行ppt演示时&#xff0c;为了更好地把控演示时间&#xff0c;有些人会在演示的同时设置一个倒计时&#xff0c;但Office的ppt本身没有提供倒计时功能&#xff0c;想要实现这一目的&#xff0c;就得在现有的基础上安装倒计时插件。 ppt倒计时插件 目前可用的免费ppt倒计时…

如何判断全面预算和EPM软件架构是否符合技术规范?

以全面预算管理软件为代表的企业绩效管理EPM软件&#xff0c;已经日益成为企业数字化智慧化管理的核心软件系统。国际企业采用了30多年的EPM系统&#xff0c;也逐渐被国内企业所熟识。全面预算管理软件的作用不仅仅是预算编报&#xff0c;还是整个企业实现高效经营分析和快速决…