3.6 KiB
3.6 KiB
UTS Android Gap 属性兼容性修复指南
问题描述
UTS Android 不支持 CSS 的 gap 属性,需要使用传统的 margin 或 padding 来实现间距效果。
解决方案
1. Flexbox 容器中元素间距
原代码 (使用gap):
.container {
display: flex;
gap: 20rpx;
}
修复后 (使用margin):
.container {
display: flex;
}
.container > .item {
margin-right: 20rpx;
}
.container > .item:last-child {
margin-right: 0;
}
2. 垂直布局间距
原代码:
.vertical-container {
display: flex;
flex-direction: column;
gap: 15rpx;
}
修复后:
.vertical-container {
display: flex;
flex-direction: column;
}
.vertical-container > .item {
margin-bottom: 15rpx;
}
.vertical-container > .item:last-child {
margin-bottom: 0;
}
3. Grid 布局间距
原代码:
.grid-container {
display: flex;
flex-wrap: wrap;
gap: 16rpx;
}
修复后:
.grid-container {
display: flex;
flex-wrap: wrap;
margin: -8rpx; /* 负margin抵消子元素的margin */
}
.grid-container > .item {
margin: 8rpx; /* gap的一半 */
}
4. 内联元素间距
原代码:
.inline-container {
display: flex;
gap: 8rpx;
align-items: center;
}
修复后:
.inline-container {
display: flex;
align-items: center;
}
.inline-container > * {
margin-right: 8rpx;
}
.inline-container > *:last-child {
margin-right: 0;
}
批量修复脚本
使用正则表达式查找和替换
- 查找:
gap:\s*(\d+)(rpx|px); - 替换:
/* TODO: 修复gap兼容性 - 原值: $1$2 */
常见模式替换
Timer Controls 类型
/* 原代码 */
.timer-controls {
display: flex;
gap: 20rpx;
}
/* 修复后 */
.timer-controls {
display: flex;
}
.timer-controls .timer-btn {
margin-right: 20rpx;
}
.timer-controls .timer-btn:last-child {
margin-right: 0;
}
Action Section 类型
/* 原代码 */
.action-section {
display: flex;
gap: 20rpx;
}
/* 修复后 */
.action-section {
display: flex;
}
.action-section .action-btn {
margin-right: 20rpx;
}
.action-section .action-btn:last-child {
margin-right: 0;
}
响应式设计中的Gap修复
媒体查询中的处理
/* 桌面端 */
@media screen and (min-width: 769px) {
.container .item {
margin-right: 20rpx;
}
.container .item:last-child {
margin-right: 0;
}
}
/* 移动端 */
@media screen and (max-width: 768px) {
.container {
flex-direction: column;
}
.container .item {
margin-right: 0;
margin-bottom: 15rpx;
}
.container .item:last-child {
margin-bottom: 0;
}
}
需要修复的文件列表
已修复
- ✅
training-record.uvue - ✅
dashboard.uvue(部分)
待修复
- 🔄
achievements.uvue - 🔄
assignment-detail.uvue - 🔄
assignments.uvue - 🔄
device-management.uvue - 🔄
favorite-exercises.uvue - 🔄
goal-settings.uvue - 🔄
preferences-analytics.uvue - 🔄
profile.uvue - 🔄
progress.uvue - 🔄
records.uvue - 🔄
record-detail.uvue - 🔄
reminder-settings.uvue - 🔄
simple-records.uvue
注意事项
- 测试兼容性: 修复后需要在 UTS Android 环境中测试
- 保持一致性: 确保所有页面使用相同的间距处理方式
- 性能考虑: margin 方式可能会影响布局性能,但兼容性更好
- 备份文件: 修改前务必备份原文件
验证修复效果
修复完成后,确保:
- 所有元素间距正常显示
- 响应式布局工作正常
- 没有多余的间距或间距缺失
- 在不同屏幕尺寸下表现一致