UniApp中Flex布局学习

文章目录

前言

使用uniapp过程中,经常遇到flex 不知道如何使用

有时候想换个行,真的很蛋疼。

一、学习

1、父节点

css 复制代码
.parent {
  display: flex; /* 启用弹性布局 */ 
  flex-direction: row; /* 或 column  -子元素排列方向 */
  justify-content:flex-start;/*左对齐、center居中、space-between两端分散  -主轴对齐方式*/
  align-items:flex-start; /*顶部对齐)、center垂直居中  -交叉轴对齐*/
  flex-wrap: wrap; /* 允许子元素换行 */
}

2、子节点

css 复制代码
.item {
  flex: 1; /* 所有子元素等分宽度 */
}
.item-2x {
  flex: 2; /* 占据2份空间 */
}
.item {
  width: 50%; /* 每行显示2个子元素 */
}
.item {
  flex: 0 0 33.333%; /* 每行显示3个,不允许伸缩 */
}
.item {
  flex: 0 0 calc(33.333% - 15rpx); /* 三列布局 -间距处理*/
}
.fixed-item {
  flex: none; /* 固定宽度,不伸缩 */
  width: 200rpx; 
}

二、避坑指南

1、子元素宽度超出预期

原因 :Flex 项目默认 min-width: auto 会使元素至少等于内容宽度
正确

css 复制代码
.item {
  min-width: 0; /* 允许内容收缩 */
  overflow: hidden; /* 文本溢出处理 */
}

2、 垂直对齐失效

原因align-items 需容器有明确高度
正确

css 复制代码
.container {
  display: flex;
  height: 100vh; /* 必须声明高度 */
  align-items: center;
}

3、多行对齐陷阱

现象align-content 仅在 flex-wrap: wrap 时生效
正确

css 复制代码
.container {
  flex-wrap: wrap;
  align-content: space-between; /* 控制多行间距 */
}

4、在 ScrollView 内无法滚动

原因 :Flex 容器默认 overflow: visible
正确

css 复制代码
.scroll-container {
  display: flex;
  flex-direction: column;
  overflow: auto; /* 启用滚动 */
  height: 300px; /* 必须限定高度 */
}

5、Gap 属性兼容方案

css 复制代码
.container {
  display: flex;
  flex-wrap: wrap;
  margin: -5px; /* 负边距抵消 */
}

.item {
  margin: 5px; /* 实际间距 */
  flex-basis: calc(25% - 10px); /* 四列布局 */
}

6、 最后一行左对齐

css 复制代码
.container::after {
  content: "";
  flex: auto; /* 填充剩余空间 */
}

7、绝对定位的冲突

现象 :绝对定位子元素破坏布局
正确

css 复制代码
.container {
  position: relative; /* 创建定位上下文 */
}

.absolute-item {
  position: absolute;
  top: 0;
  left: 0;
  /* 避免使用 flex 属性 */
}

8、 移动端适配技巧:

css 复制代码
.item {
  flex: 1 1 100%; /* 移动端单列 */
}

@media (min-width: 768px) {
  .item {
    flex: 1 1 50%; /* 平板双列 */
  }
}

9、动画性能优化

错误

css 复制代码
.item {
  transition: flex 0.3s; /* 可能引发重排 */
}

正确

css 复制代码
.item {
  transition: transform 0.3s; /* GPU加速 */
}

三、性能优化注意事项

  1. 避免深层嵌套:超过 3 层嵌套影响渲染性能
  2. 慎用 flex-grow: 1:在动态数据容器中可能导致布局抖动
  3. 替代方案:简单布局用 Grid,复杂交互用 Flex

相关推荐
华为云开发者联盟9 小时前
告别繁琐操作,华为云码道 + Docker重塑远程开发体验
人工智能·学习·docker·华为云·软件开发·华为云码道
Bechamz9 小时前
大数据开发学习Day38
大数据·学习
2501_916007479 小时前
iOS开发中抓取HTTPS请求的完整解决方法与步骤详解
android·网络协议·ios·小程序·https·uni-app·iphone
-To be number.wan9 小时前
计算机组成原理 | 原码一位乘法运算方法
学习·计算机组成原理
前端若水10 小时前
从零开始学习AI Agent的实战路线图
人工智能·学习
魔法阵维护师10 小时前
从零开发游戏需要学习的c#模块,第十一章(rpg小游戏入门,上篇,地图与移动)
学习·游戏·c#
qq_5255137510 小时前
# 第七章 指令微调学习(四) 7.6基于指令数据对大语言模型进行微调
深度学习·学习·语言模型
Harm灬小海11 小时前
【云计算学习之路】学习Centos7系统-ROOT密码重置方法
linux·运维·服务器·学习·云计算
晓梦林11 小时前
stitch靶场学习笔记
笔记·学习
z2005093011 小时前
【linux学习】linux的一些奇怪知识,方便日常使用
学习