Flex布局(秒懂弹性盒子的使用)

目录

一、Flex介绍

1.概念

主要概念:

2.Flex容器属性

3.Flex项目属性

4.优势

二、Flex使用

1.弹性盒子内容

2.flex-direction

语法

3.justify-content 属性

 4.align-items 属性

语法

 5.flex-wrap 属性

语法:

 6.align-content 属性

语法:

7.弹性子元素属性 

7.1排序   

语法

 7.2对齐

7.3完美的居中

8.align-self

9.flex

语法

 三、Flex弹性盒子属性

 四、Flex应用场景

五、总结


一、Flex介绍

1.概念

Flex 弹性盒子是一种 CSS 布局模型,用于设计灵活的、可自适应的布局结构。通过 Flex 布局,你可以轻松地创建水平或垂直方向的布局,使内容在容器中动态地适应空间。

主要概念:
  1. 容器(Flex Container)

    • 包含了 Flex 项目的父元素。通过设置容器的属性,来控制内部 Flex 项目的排列方式。
  2. 项目(Flex Item)

    • 容器内的子元素。这些元素根据容器的设置,灵活地调整其在容器中的位置和尺寸。

2.Flex容器属性

  1. display

    • 定义一个块级容器为 Flex 容器。将其设置为 display: flex;display: inline-flex;
  2. flex-direction

    • 定义了 Flex 项目在容器中的排列方向,可以是水平方向(row)、垂直方向(column)或其对应的反向。
  3. justify-content

    • 控制 Flex 项目在主轴(横轴或纵轴)上的对齐方式,可以是居中、起始对齐、末尾对齐等。
  4. align-items

    • 控制 Flex 项目在交叉轴上的对齐方式,可以是居中、起始对齐、末尾对齐等。
  5. flex-wrap

    • 控制 Flex 项目是否换行,可以是不换行(nowrap)、自动换行(wrap)、换行后进行排列等。
  6. align-content

    • 在存在多行或多列时,控制各行(或列)之间的对齐方式,可以是居中、起始对齐、末尾对齐等。

3.Flex项目属性

  1. order

    • 定义 Flex 项目的排列顺序,可以调整项目在容器中的位置。
  2. flex-grow

    • 定义 Flex 项目在剩余空间中的放大比例,可以控制项目在容器中的相对大小。
  3. flex-shrink

    • 定义 Flex 项目在空间不足时的缩小比例,可以控制项目在容器中的相对大小。
  4. flex-basis

    • 定义 Flex 项目在没有设置宽度或高度时,占据的主轴空间。
  5. flex

    • flex-growflex-shrinkflex-basis 的缩写,方便同时设置这三个属性。

4.优势

  • 灵活性:Flex 布局适应各种屏幕尺寸和设备方向,适用于响应式设计。
  • 自适应性:Flex 项目可以根据可用空间自动调整大小,适应不同内容和尺寸的容器。
  • 简洁性:相比传统的 CSS 布局方法,Flex 布局的代码通常更简洁易读。

二、Flex使用

1.弹性盒子内容

弹性盒子由弹性容器(Flex container)和弹性子元素(Flex item)组成。

弹性容器通过设置 display 属性的值为 flex 或 inline-flex将其定义为弹性容器。

弹性容器内包含了一个或多个弹性子元素。

注意: 弹性容器外及弹性子元素内是正常渲染的。弹性盒子只定义了弹性子元素如何在弹性容器内布局。

弹性子元素通常在弹性盒子内一行显示。默认情况每个容器只有一行。

以下元素展示了弹性子元素在一行内显示,从左到右:

<!DOCTYPE html>
<html>
<head>
<style>.flex-container {display: -webkit-flex;display: flex;width: 400px;height: 250px;background-color: lightgrey;
}.flex-item {background-color: cornflowerblue;width: 100px;height: 100px;margin: 10px;
}</style>
</head>
<body><div class="flex-container"><div class="flex-item">flex item 1</div><div class="flex-item">flex item 2</div><div class="flex-item">flex item 3</div> 
</div></body>
</html>

 当然我们可以修改排列方式。

如果我们设置 direction 属性为 rtl (right-to-left),弹性子元素的排列方式也会改变,页面布局也跟着改变:

body {direction: rtl;
}.flex-container {display: -webkit-flex;display: flex;width: 400px;height: 250px;background-color: lightgrey;
}.flex-item {background-color: cornflowerblue;width: 100px;height: 100px;margin: 10px;
}

2.flex-direction

flex-direction 属性指定了弹性子元素在父容器中的位置。

语法

flex-direction: row | row-reverse | column | column-reverse

 

flex-direction的值有:

  • row:横向从左到右排列(左对齐),默认的排列方式。
  • row-reverse:反转横向排列(右对齐,从后往前排,最后一项排在最前面。
  • column:纵向排列。
  • column-reverse:反转纵向排列,从后往前排,最后一项排在最上面。

3.justify-content 属性

内容对齐(justify-content)属性应用在弹性容器上,把弹性项沿着弹性容器的主轴线(main axis)对齐。

justify-content 语法如下:

justify-content: flex-start | flex-end | center | space-between | space-around

 

各个值解析:

  • flex-start:

    弹性项目向行头紧挨着填充。这个是默认值。第一个弹性项的main-start外边距边线被放置在该行的main-start边线,而后续弹性项依次平齐摆放。

  • flex-end:

    弹性项目向行尾紧挨着填充。第一个弹性项的main-end外边距边线被放置在该行的main-end边线,而后续弹性项依次平齐摆放。

  • center:

    弹性项目居中紧挨着填充。(如果剩余的自由空间是负的,则弹性项目将在两个方向上同时溢出)。

  • space-between:

    弹性项目平均分布在该行上。如果剩余空间为负或者只有一个弹性项,则该值等同于flex-start。否则,第1个弹性项的外边距和行的main-start边线对齐,而最后1个弹性项的外边距和行的main-end边线对齐,然后剩余的弹性项分布在该行上,相邻项目的间隔相等。

  • space-around:

    弹性项目平均分布在该行上,两边留有一半的间隔空间。如果剩余空间为负或者只有一个弹性项,则该值等同于center。否则,弹性项目沿该行分布,且彼此间隔相等(比如是20px),同时首尾两边和弹性容器之间留有一半的间隔(1/2*20px=10px)。

效果图展示:

 4.align-items 属性

align-items 设置或检索弹性盒子元素在侧轴(纵轴)方向上的对齐方式。

语法

align-items: flex-start | flex-end | center | baseline | stretch

 各个值解析:

  • flex-start:弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴起始边界。
  • flex-end:弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴结束边界。
  • center:弹性盒子元素在该行的侧轴(纵轴)上居中放置。(如果该行的尺寸小于弹性盒子元素的尺寸,则会向两个方向溢出相同的长度)。
  • baseline:如弹性盒子元素的行内轴与侧轴为同一条,则该值与'flex-start'等效。其它情况下,该值将参与基线对齐。
  • stretch:如果指定侧轴大小的属性值为'auto',则其值会使项目的边距盒的尺寸尽可能接近所在行的尺寸,但同时会遵照'min/max-width/height'属性的限制。

 5.flex-wrap 属性

flex-wrap 属性用于指定弹性盒子的子元素换行方式。

语法:

flex-wrap: nowrap|wrap|wrap-reverse|initial|inherit;

 各个值解析:

  • nowrap - 默认, 弹性容器为单行。该情况下弹性子项可能会溢出容器。
  • wrap - 弹性容器为多行。该情况下弹性子项溢出的部分会被放置到新行,子项内部会发生断行
  • wrap-reverse -反转 wrap 排列。

 6.align-content 属性

align-content 属性用于修改 flex-wrap 属性的行为。类似于 align-items, 但它不是设置弹性子元素的对齐,而是设置各个行的对齐。

语法:

align-content: flex-start | flex-end | center | space-between | space-around | stretch

 各个值解析:

  • stretch - 默认。各行将会伸展以占用剩余的空间。
  • flex-start - 各行向弹性盒容器的起始位置堆叠。
  • flex-end - 各行向弹性盒容器的结束位置堆叠。
  • center -各行向弹性盒容器的中间位置堆叠。
  • space-between -各行在弹性盒容器中平均分布。
  • space-around - 各行在弹性盒容器中平均分布,两端保留子元素与子元素之间间距大小的一半。

7.弹性子元素属性 

7.1排序   
语法

order:

 

各个值解析:

  • <integer>:用整数值来定义排列顺序,数值小的排在前面。可以为负值。

order 属性设置弹性容器内弹性子元素的属性:

 7.2对齐

设置"margin"值为"auto"值,自动获取弹性容器中剩余的空间。所以设置垂直方向margin值为"auto",可以使弹性子元素在弹性容器的两上轴方向都完全居中。

以下实例在第一个弹性子元素上设置了 margin-right: auto; 。 它将剩余的空间放置在元素的右侧:

7.3完美的居中

使用弹性盒子,居中变的很简单,只需要设置 margin: auto; 可以使得弹性子元素在两上轴方向上完全居中:

8.align-self

align-self 属性用于设置弹性元素自身在侧轴(纵轴)方向上的对齐方式。

语法:

align-self: auto | flex-start | flex-end | center | baseline | stretch

 各个值解析:

  • auto:如果'align-self'的值为'auto',则其计算值为元素的父元素的'align-items'值,如果其没有父元素,则计算值为'stretch'。
  • flex-start:弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴起始边界。
  • flex-end:弹性盒子元素的侧轴(纵轴)起始位置的边界紧靠住该行的侧轴结束边界。
  • center:弹性盒子元素在该行的侧轴(纵轴)上居中放置。(如果该行的尺寸小于弹性盒子元素的尺寸,则会向两个方向溢出相同的长度)。
  • baseline:如弹性盒子元素的行内轴与侧轴为同一条,则该值与'flex-start'等效。其它情况下,该值将参与基线对齐。
  • stretch:如果指定侧轴大小的属性值为'auto',则其值会使项目的边距盒的尺寸尽可能接近所在行的尺寸,但同时会遵照'min/max-width/height'属性的限制。

9.flex

flex 属性用于指定弹性子元素如何分配空间。

语法

flex: auto | initial | none | inherit |  [ flex-grow ] || [ flex-shrink ] || [ flex-basis ]

 各个值解析:

  • auto: 计算值为 1 1 auto
  • initial: 计算值为 0 1 auto
  • none:计算值为 0 0 auto
  • inherit:从父元素继承
  • [ flex-grow ]:定义弹性盒子元素的扩展比率。
  • [ flex-shrink ]:定义弹性盒子元素的收缩比率。
  • [ flex-basis ]:定义弹性盒子元素的默认基准值。

 三、Flex弹性盒子属性

属性描述
display指定 HTML 元素盒子类型。
flex-direction指定了弹性容器中子元素的排列方式
justify-content设置弹性盒子元素在主轴(横轴)方向上的对齐方式。
align-items设置弹性盒子元素在侧轴(纵轴)方向上的对齐方式。
flex-wrap设置弹性盒子的子元素超出父容器时是否换行。
align-content修改 flex-wrap 属性的行为,类似 align-items, 但不是设置子元素对齐,而是设置行对齐
flex-flowflex-direction 和 flex-wrap 的简写
order设置弹性盒子的子元素排列顺序。
align-self在弹性子元素上使用。覆盖容器的 align-items 属性。
flex设置弹性盒子的子元素如何分配空间。

 四、Flex应用场景

  1. 导航菜单

    • 使用 Flex 布局可以轻松创建水平或垂直方向的导航菜单,使菜单项均匀分布并自动调整大小以适应不同屏幕尺寸。
  2. 网格布局

    • 通过将容器设置为 Flex 容器,并控制 Flex 项目的排列方式,可以实现网格状的布局结构,适用于展示图片、产品或博客列表等内容。
  3. 响应式布局

    • Flex 布局非常适合用于响应式设计,可以根据设备尺寸和屏幕方向动态调整布局,确保内容在不同设备上都有良好的可读性和可访问性。
  4. 等高布局

    • 通过设置 Flex 项目的属性,可以实现等高的布局效果,即使内容高度不同,也可以让它们在同一行或同一列中保持相同的高度。
  5. 卡片布局

    • 使用 Flex 布局可以轻松创建卡片式布局,使卡片在容器中均匀排列,并且可以根据需要自动换行。
  6. 居中对齐

    • Flex 布局提供了多种居中对齐方式,可以将内容水平或垂直居中对齐,使布局更加美观和易读。
  7. 侧边栏布局

    • 可以利用 Flex 布局实现复杂的侧边栏布局,例如将主内容区域和侧边栏区域以不同的比例排列,并在屏幕尺寸变化时自动调整布局。
  8. 表单布局

    • 使用 Flex 布局可以简化表单的布局过程,使表单元素在容器中自动调整位置和大小,确保表单在不同设备上都有良好的可用性和可访问性。

五、总结

  1. 基本概念

    • Flex 弹性盒子模型是一种 CSS 布局模型,用于创建灵活的、自适应的布局结构。
    • 该模型由容器(Flex Container)和项目(Flex Item)组成,容器是 Flex 项目的父元素。
  2. 主要属性

    • display: 定义一个块级容器为 Flex 容器,可以是 flexinline-flex
    • flex-direction: 控制 Flex 项目在容器中的排列方向,可以是水平(row)、垂直(column)或其反向。
    • justify-content: 控制 Flex 项目在主轴上的对齐方式,如居中、起始对齐、末尾对齐等。
    • align-items: 控制 Flex 项目在交叉轴上的对齐方式,如居中、起始对齐、末尾对齐等。
    • flex-wrap: 控制 Flex 项目是否换行,可以是不换行(nowrap)、自动换行(wrap)等。
    • align-content: 控制多行(或多列)之间的对齐方式,如居中、起始对齐、末尾对齐等。
  3. Flex 项目属性

    • order: 定义项目的排列顺序。
    • flex-grow: 定义项目在剩余空间中的放大比例。
    • flex-shrink: 定义项目在空间不足时的缩小比例。
    • flex-basis: 定义项目在没有设置宽度或高度时占据的主轴空间。
    • flex: flex-growflex-shrinkflex-basis 的缩写。
  4. 优势

    • 灵活性:适应各种屏幕尺寸和设备方向,适用于响应式设计。
    • 自适应性:根据可用空间动态调整大小,适应不同内容和尺寸的容器。
    • 简洁性:代码简洁易读,相比传统布局方法更简单。

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

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

相关文章

jetson系列开发板使用虚拟机烧录系统时,遇见无法识别开发板的情况

在双系统中的ubuntu系统烧录没问题&#xff0c;但是电脑Ubuntu系统由于版本低&#xff0c;所以没有网络&#xff0c;烧录起来还的连网线&#xff0c;所以问了开发板的工程师&#xff0c;所幸&#xff0c;解决了问题&#xff0c;很感谢工程师的指导&#xff0c;特此记录一下&…

【研发日记】CANoe自动化测试的配置方式(三)——SystemVariables数组方式

文章目录 前言 一、例程功能 二、仿真ECU 三、SystemVariables数组&#xff1a; 四、测试模块 五、测试运行效果 六、分析和应用 总结 前言 近期在做的一个自动化测试项目&#xff0c;尝试了一种以前没用过的测试配置方式&#xff0c;感觉效果还不错。然后又回顾了一下以…

JVM主要知识点详解

目录 1. 性能监控和调优 1.1 调优相关参数 1.2 内存泄漏排查 1.3 cpu飙⾼ 2. 内存与垃圾回收 2.1JVM的组成&#xff08;面试题&#xff09; 2.2 Java虚拟机栈的组成 2.3 本地方法栈 2.4 堆 2.5 方法区&#xff08;抽象概念&#xff09; 2.5.1 方法区和永久代以及元空…

阿里云服务器8核16G配置最新租用收费价格表与优惠价格

8核16G配置是大部分企业级用户购买阿里云服务器的首选配置&#xff0c;2024年经过调价之后&#xff0c;8核16G配置的阿里云服务器按量收费标准最低为0.9元/小时&#xff0c;按月租用平均优惠月价最低收费标准为432.0元/1个月&#xff0c;按年购买最低活动价格为1803.17元/1年&a…

Avalonia中嵌入网页程序(CefNet)

Avalonia中嵌入网页程序cefNet 1. 引入CefNetNuget包2. 下载 cef 基础环境3. 将cef基础环境放入程序运行目录下4. 代码中初始化cef5. 添加Webview控件6. 在窗口关闭的时候释放Cef7. 项目结构图CefNet 开源的作者已经停止维护并删除了原始的代码库:GetHub:CefNet,Nuget上还有发…

# ABAP SQL 字符串处理-CONCATCAST

经常我都要在ABAP的sql语句中对字符串进行处理&#xff0c;现在就总结一下可以用到的方法 文章目录 字符串处理拼接字段运行结果 填充字符串运行结果 截取字符串 SUBSTRING运行结果 CAST转换类型程序运行结果 CAST 转换成 DATS类型&#xff08;日期&#xff09; 字符串处理 在…

【c语言】结构体的访问

&#x1f388;个人主页&#xff1a;豌豆射手^ &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;C语言 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进步&…

webIDE jupyternotebook中添加虚拟环境

困扰了我好久啊啊啊终于可以了&#xff0c;好了步入正题&#xff1a; 首先参考这个博客 指路 但是有一些错误&#xff0c;就是我添加我的虚拟环境时显示权限不够 我就在这一步前面加上了sudo python -m ipykernel install --nameyour_env_name(虚拟环境名)但是又显示 sudo: p…

DIY可视化实现仿抖音短视频代码生成器

DIY可视化实现仿抖音短视频代码生成器&#xff0c;仿抖音短视频兼容uniapp、微信小程序 丝滑切换视频效果&#xff0c;无限数据加载不卡顿&#xff0c;高性能滑动不卡顿超流畅&#xff0c;观看视频丝滑切换&#xff0c;页面内容自定义&#xff0c;无限数据加载不卡顿。 在线设…

简单3步,OpenHarmony上跑起ArkUI分布式小游戏

标准系统新增支持了方舟开发框架&#xff08;ArkUI&#xff09;、分布式组网和 FA 跨设备迁移能力等新特性&#xff0c;因此我们结合了这三种特性使用 ets 开发了一款如下动图所示传炸弹应用。 打开应用在通过邀请用户进行设备认证后&#xff0c;用户须根据提示完成相应操作&am…

入局新能源车赛道 深象智能智慧门店方案落地极氪全国门店

继商超、商场、校园场景后&#xff0c;银泰商业集团旗下科技公司深象智能科技入局新能源汽车赛道。4月16日&#xff0c;深象智能科技与极氪智能科技达成战略合作。该公司研发的软硬件一体化“智慧门店”解决方案&#xff0c;将应用于极氪全国门店。 &#xff08;图&#xff1a;…

如何将Oracle 中的部分不兼容对象迁移到 OceanBase

本文总结分析了 Oracle 迁移至 OceanBase 时&#xff0c;在出现三种不兼容对象的情况时的处理策略以及迁移前的预检方式&#xff0c;通过提前发现并处理这些问题&#xff0c;可以有效规避迁移过程中的报错风险。 作者&#xff1a;余振兴&#xff0c;爱可生 DBA 团队成员&#x…

WEB前端-笔记

目录 一、字体 二、背景图片 三、显示方式 四、类型转换 五、相对定位 六、绝对定位 七、固定定位 八、Index 九、粘性定位 十、内边距 十一、外边距 十二、边框 十三、盒子尺寸计算问题 十四、清楚默认样式 十五、内容溢出 十六、外边距的尺寸与坍塌 十七、行…

支持国密加密卡的堡垒机是什么牌子?电话多少?

堡垒机作为一种关键的安全设备&#xff0c;其对于国密加密卡的支持显得尤为重要。目前市面上堡垒机品牌众多&#xff0c;那么究竟哪个品牌的堡垒机支持国密加密卡呢&#xff1f;电话多少呢&#xff1f; 支持国密加密卡的堡垒机是什么牌子&#xff1f;电话多少&#xff1f; 【回…

Linux中安装seata

Linux中安装seata 一、准备1、环境2、下载3、上传到服务器4、解压 二、配置1、备份配置文件2、导入sql3、修改配置前4、修改配置后5、在nacos中配置 三、使用1、启动2、关闭 一、准备 1、环境 因为要在 nacos 中配置&#xff0c;要求安装并启动 nacos 。可以参考这篇博客。 …

在centos8.5上迁移深度学习环境的时候碰到的一下问题(需要运维人员解决的)

我负责的是将开发服务器上的深度学习环境进行打包并将该环境迁移到生产服务器上&#xff0c;这些操作可以在其他博客中搜到 本文主要介绍我把环境包上传至生产服务器中的anaconda/envs/路径下&#xff0c;解压之后&#xff0c;运行测试代码时遇到的问题 IT部门是如何处理的&am…

供应链金融AI机器学习建模实战_论文科研_企业建模定制服务

随着全球贸易的不断发展和供应链的日益复杂化&#xff0c;供应链金融作为一种新型金融工具&#xff0c;正逐渐受到企业和金融机构的关注和重视。供应链金融是指通过金融手段来优化和改进供应链中的资金流动和货物流动&#xff0c;以实现企业间的合作共赢。 供应链金融的核心是将…

springboot+vue全栈开发【3.前端篇之Vue基础语法2】

目录 前言Vue基础语法1.事件绑定指令2.条件渲染指令v-show和v-if指令v-else和v-else-if指令 3.列表渲染指令扩展&#xff1a;v-for中的key 前言 hi&#xff0c;这个系列是我自学开发的笔记&#xff0c;适合具有一定编程基础&#xff08;html、css那些基础知识要会&#xff01;…

【随笔】Git 高级篇 -- 模拟团队合作 git fetch git pull(二十九)

&#x1f48c; 所属专栏&#xff1a;【Git】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f496; 欢迎大…

最新IntelliJ IDEA 2024.1 安装和快速配置教程

IntelliJ IDEA 2024.1 最新版如何快速入门体验?IntelliJ IDEA 2024.1 安装和配置教程 图文解说版 文章目录 IntelliJ IDEA 2024.1 最新版如何快速入门体验?IntelliJ IDEA 2024.1 安装和配置教程 图文解说版前言 第一步&#xff1a; IntelliJ IDEA 2024.1安装教程第 0 步&…