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

相关推荐
一只小菜鸡..2 小时前
南京大学 操作系统 (JYY) 学习笔记:进程、系统调用与状态机管理
笔记·学习
天国梦5 小时前
2026英语教学系统选型实战:AI如何让备课效率提升42%?天学网技术落地全解析
人工智能·学习
维克兜率天5 小时前
【维克】大数定律与中心极限定理:为什么长期均值终将回归?
经验分享·学习·金融·概率论
中微极客6 小时前
降维算法75倍加速:从PCA到稀疏字典学习的工程实践
人工智能·学习·算法
吃好睡好便好7 小时前
MATLAB中图像的读取、写入和显示
开发语言·图像处理·学习·计算机视觉·matlab
~kiss~7 小时前
大模型中的强化学习算法和对齐算法的区别
学习
MartinYeung57 小时前
[论文学习]InjecAgent:工具集成大语言模型智能体的间接提示注入基准测试
网络·学习·语言模型
sean9088 小时前
Vim 学习 - 快速删除/修改
学习·vim
小黄人软件8 小时前
如何解决不想学、学不会、学不进去,吸收内化不了学的东西,怎么办?如何真正建立“知识内化系统“?不输出,不学习
学习
个 人 练 习 生9 小时前
strcmp与strstr函数的模拟实现
c语言·开发语言·经验分享·学习·程序人生