当前位置: 首页 > news >正文

弹性布局详解

目录

  • 基本概念
  • 常用属性
    • 1、容器属性
    • 2、 项目属性
  • 应用场景

基本概念

Flexbox 是 flexible box 的简称(注:意思是“灵活的盒子容器”),是 CSS3 引入的新的布局模式。它决定了元素如何在页面上排列,使它们能在不同的屏幕尺寸和设备下可预测地展现出来。
它之所以被称为 Flexbox ,是因为它能够扩展和收缩 flex 容器内的元素,以最大限度地填充可用空间。与以前布局方式(如 table 布局和浮动元素内嵌块元素)相比,Flexbox 是一个更强大的方式,主要表现在:
1、在不同方向排列元素
2、重新排列元素的显示顺序
3、更改元素的对齐方式
4、动态地将元素装入容器

常用属性

1、容器属性

1、display

  • 作用:定义容器为弹性布局
    • flex: 块级弹性容器
    • inline-flex:行内弹性容器
.container {display: flex; /* 或 inline-flex */
}

2、flex-direction

  • 作用:定义主轴方向,决定子项的排列方向。
  • 值:
    • row(默认):水平从左到右
    • row-reverse:水平从右到左
    • column:垂直从上到下
    • column-reverse:垂直从上到下
.container {flex-direction: column; /* 垂直排列 */
}

3、flex-warp

-作用:控制子项超出容器时是否换行

  • 值:
    • nowrap(默认):不换行,可能压缩子项
    • wrap:换行,新行位于下方
    • wrap-reverse:换行,新行位于上方。
.container {flex-wrap: wrap; /* 自动换行 */
}

4、flex-flow:

  • 作用:flex-direction和flex-wrap的简写
  • -语法:flex-flow:
.container {flex-flow: row wrap; /* 水平排列,自动换行 */
}

5、justify-content

  • 作用:定义子项在主轴上的对齐方式
    • flex-start(默认)左对齐(主轴起点)
    • flex-end:右对齐
    • center:居中对齐
    • space-between:两端 对齐 ,间距均分
    • space-around:每个子项两侧间距相等(相邻间距为单边的2倍),
    • space-evenly:所有间距完全相等
.container {justify-content: space-between; /* 两端对齐 */
}

6、aligin-items

  • 作用:定义子项在交叉轴上的对齐方式(单行)
    • stretch(默认): .box 未设置固定高度,自动拉伸填满父容器高度(200px)。
    • flex-start:交叉起点对齐。
      • 子元素 .box 固定高度为 50px,顶部对齐父容器。
      • 表现:所有盒子紧贴容器顶部,下方留出空白。
    • flex-end:交叉轴终点对齐
      • 子元素 .box 固定高度为 80px,底部对齐父容器。
      • 表现:所有盒子紧贴容器底部,上方留出空白。
    • cetner:居中对齐
    • baseline:基线对齐(文本底部对齐)
.container {align-items: center; /* 垂直居中(主轴为水平时) */
}

7. align-content

  • 作用:定义多行在交叉轴上的对齐方式(需配合 flex-wrap: wrap)。
    值:
  • stretch(默认):拉伸填充交叉轴。
  • flex-start:起点对齐。
  • flex-end:终点对齐。
    center:居中对齐。
  • space-between:两端对齐,间距均分。
  • space-around:每行两侧间距相等。

2、 项目属性

1. order

  • 作用:定义子项的排列顺序(数值越小越靠前)。
  • 默认值:0。
.item {order: 2; /* 排在 order 为 0、1 的元素之后 */
}

2. flex-grow

  • 作用:定义子项在剩余空间中的拉伸比例。
  • 默认值:0(不拉伸)。
  • 示例:若所有子项的 flex-grow 均为 1,则平均分配剩余空间。
.item {flex-grow: 2; /* 比 flex-grow 为 1 的元素多占一倍空间 */
}

3. flex-shrink

  • 作用:定义子项在空间不足时的收缩比例。
  • 默认值:1(允许收缩)。
  • 示例:flex-shrink: 0 表示不收缩。
.item {flex-shrink: 0; /* 空间不足时不收缩 */
}

4. flex-basis

  • 作用:定义子项的初始大小(主轴方向)。
  • 默认值:auto(元素内容大小)。
    值:
  • 具体数值(如 100px、50%)。
    content:基于内容自动计算。
.item {flex-basis: 200px; /* 初始宽度为 200px */
}

5. flex

  • 作用:flex-grow、flex-shrink 和 flex-basis 的简写。
  • 常用值
    • flex: 1:等价于 flex: 1 1 0(均分空间)。
    • flex: auto:等价于 flex: 1 1 auto。
    • flex: none:等价于 flex: 0 0 auto(固定大小)。
.item {flex: 1 2 300px; /* 可拉伸、可收缩、初始大小 300px */
}

6. align-self

  • 作用:覆盖容器的 align-items,单独定义子项的交叉轴对齐方式。
  • :同 align-items(auto、stretch、flex-start 等)。
.item {align-self: flex-end; /* 单独底部对齐 */
}

应用场景

1、水平 / 垂直居中:

.container {display: flex;justify-content: center; /* 水平居中 */align-items: center; /* 垂直居中 */
}

2、自适应布局:

.sidebar {flex: 0 0 200px; /* 固定宽度 200px */
}
.main-content {flex: 1; /* 剩余空间自适应 */
}

3、等高布局:

.container {display: flex;
}
.item {align-self: stretch; /* 默认拉伸高度相等 */
}

4、响应式换行:

.container {display: flex;flex-wrap: wrap;
}
.item {flex-basis: 25%; /* 每行4个,自动换行 */
}
http://www.dtcms.com/a/277240.html

相关文章:

  • mmap映射文件
  • 【设计模式】命令模式 (动作(Action)模式或事务(Transaction)模式)宏命令
  • 【STM32实践篇】:F407 时钟系统
  • fiddler/charles https配置完毕依然无法抓取APP https请求的解决办法
  • h() 函数
  • 【RA-Eco-RA6E2-64PIN-V1.0 开发板】ADC 电压的 LabVIEW 数据采集
  • Excel的学习
  • 如何选择合适的AI论文写作工具?七个AI英文论文写作网站
  • leetGPU解题笔记(2)
  • Agent浏览器自动化工具技术原理探析- Palywright VS OS-Atlas
  • 009_API参考与接口规范
  • Android 代码热度统计(概述)
  • Ampace厦门新能安科技Verify 测评演绎数字推理及四色测评考点分析、SHL真题题库
  • 代码随想录算法训练营第三十二天|动态规划理论基础、LeetCode 509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯
  • 嵌入式单片机开发 - HAL 库引入(HAL 库概述、HAL 库下载)
  • 使用macvlan实现容器的跨主机通信
  • JSON/AJAX/XHR/FetchAPI知识点学习整理
  • Feign实战
  • 六、深度学习——NLP
  • 01_类的概念和定义
  • websocket连接时发生未知错误
  • sqli-labs靶场通关笔记:第9关 时间盲注
  • 快速生成 Android 的 Splash 的 9 Patch 图片
  • 【零基础入门unity游戏开发——unity3D篇】3D光源之——unity反射和反射探针技术
  • AI进化论12:大语言模型的爆发——GPT系列“出圈”,AI飞入寻常百姓家
  • Kafka——Kafka 线上集群部署方案怎么做?
  • c语言初阶 结构体
  • 【Python】venv:配置独立镜像源
  • 常用的docker命令备份
  • 007_用例与应用场景