在企业微信侧边栏中打开"创建改图任务"弹窗时,"涉及空间"选择区域存在以下问题:
影响范围:企业微信侧边栏(移动端宽度 < 480px)
原有布局虽然使用了 display: flex,但缺少关键的 min-width: 0 属性,导致文字溢出容器。
.space-item {
display: flex; // ✅ 弹性布局
align-items: center; // ✅ 勾选框与文字垂直居中
gap: 8px; // ✅ 勾选框与文字间距
min-width: 0; // ✅ 防止文字溢出容器(关键!)
box-sizing: border-box; // ✅ 包含padding和border在内
@media (max-width: 480px) {
min-height: 42px; // ✅ 增加高度,确保触摸友好
gap: 10px; // ✅ 增大间距,防止重叠
}
}
修复效果:
勾选框可能被弹性布局拉伸或压缩,导致位置偏移。
input[type="checkbox"] {
width: 16px;
height: 16px;
flex: none; // ✅ 固定尺寸,不参与弹性分配(关键!)
flex-shrink: 0; // ✅ 防止checkbox被压缩
margin: 0; // ✅ 清除默认边距
cursor: pointer;
@media (max-width: 480px) {
width: 18px; // ✅ 企业微信端增大,更易点击
height: 18px;
}
}
修复效果:
空间名称过长时,文字溢出导致布局混乱或竖向排列。
span {
flex: 1; // ✅ 占据剩余空间
min-width: 0; // ✅ 允许文字被截断(关键!)
font-size: 13px;
line-height: 1.4;
// 桌面端和平板端:文字省略
@media (min-width: 769px) {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
// 企业微信侧边栏:文字省略
@media (max-width: 480px) {
font-size: 13px; // ✅ 保持易读
white-space: nowrap; // ✅ 不换行
overflow: hidden; // ✅ 溢出隐藏
text-overflow: ellipsis; // ✅ 显示省略号
word-break: keep-all; // ✅ 保持单词完整
}
}
修复效果:
空间选择容器宽度不受限制,在企业微信侧边栏中可能超出可视范围。
.space-selector {
display: grid;
overflow-x: hidden; // ✅ 防止横向溢出
max-width: 100%; // ✅ 限制最大宽度
-webkit-overflow-scrolling: touch; // ✅ iOS平滑滚动
@media (max-width: 480px) {
grid-template-columns: 1fr; // ✅ 单列布局,确保宽度充足
max-width: 280px; // ✅ 匹配企微侧边栏宽度
padding: 10px; // ✅ 适中的padding
max-height: 240px; // ✅ 增加高度,显示更多空间
}
}
修复效果:
企业微信使用定制化WebView,需要特殊处理以避免内容被裁切。
.modal-body {
-webkit-text-size-adjust: 100%; // ✅ 适配企微WebView
overflow-x: hidden; // ✅ 防止横向溢出
-webkit-overflow-scrolling: touch; // ✅ iOS平滑滚动
}
.modal-container {
@media (max-width: 480px) {
width: 90vw; // ✅ 不超过视口宽度的90%
max-width: 90vw; // ✅ 限制最大宽度
max-height: 80vh; // ✅ 不超过视口高度的80%
overflow-y: auto; // ✅ 内容溢出时显示垂直滚动条
}
}
修复效果:
原有已选中状态不够醒目,用户难以快速识别。
.space-item.selected {
border-color: #4f46e5;
background: #e8f0fe; // ✅ 企微蓝浅色调(更醒目)
input[type="checkbox"] {
accent-color: #4f46e5; // ✅ 勾选框颜色
}
}
.selected-count {
font-weight: 600; // ✅ 增强字重
padding: 4px 8px; // ✅ 添加内边距
background: #ede9fe; // ✅ 浅色背景
border-radius: 6px; // ✅ 圆角
display: inline-block; // ✅ 适应内容宽度
}
修复效果:
| 项目 | 修复前 | 修复后 |
|---|---|---|
| 勾选框位置 | ❌ 错位,与文字不对齐 | ✅ 垂直居中,完美对齐 |
| 空间名称显示 | ❌ 溢出或竖向排列 | ✅ 横向显示,过长省略 |
| 容器宽度 | ❌ 可能超出可视范围 | ✅ 限制在280px内,适配侧边栏 |
| 布局方式 | ❌ 双列或多列(被压缩) | ✅ 单列布局,宽度充足 |
| 触摸目标 | ❌ 勾选框16px,较小 | ✅ 勾选框18px,易点击 |
| 已选反馈 | ⚠️ 背景色不够醒目 | ✅ 企微蓝浅色,清晰可见 |
| 文字大小 | ⚠️ 可能被WebView缩放 | ✅ 固定100%,不被缩放 |
| 滚动体验 | ⚠️ 普通滚动 | ✅ iOS平滑滚动 |
min-width: 0 - 防止flex子项溢出
// ❌ 错误:文字溢出容器
.space-item {
display: flex;
// 缺少 min-width: 0
}
// ✅ 正确:文字可以被截断
.space-item {
display: flex;
min-width: 0; // 允许收缩
}
flex: none - 固定尺寸,不参与弹性分配
// ❌ 错误:勾选框可能被拉伸或压缩
input[type="checkbox"] {
width: 16px;
height: 16px;
}
// ✅ 正确:勾选框尺寸固定
input[type="checkbox"] {
width: 16px;
height: 16px;
flex: none; // 不参与弹性分配
flex-shrink: 0; // 不允许收缩
}
text-overflow: ellipsis - 文字溢出显示省略号
// ❌ 错误:文字溢出容器外
span {
flex: 1;
}
// ✅ 正确:文字溢出显示...
span {
flex: 1;
min-width: 0;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
短空间名称(如"卧室"、"客厅")
长空间名称(如"主卧室(带卫生间)")
超长空间名称(如"客厅餐厅一体化空间设计")
多个空间选择
display: flex + align-items: centerflex: none + flex-shrink: 0flex: 1 + min-width: 0gap而非margin-webkit-text-size-adjust: 100%vw/vh而非固定px-webkit-overflow-scrolling: touchoverflow-x: hiddenng build yss-project --base-href=/dev/yss/
.\deploy.ps1
修复完成时间:2025-11-30 10:30
修复人员:开发团队
测试状态:✅ 待部署验证
影响范围:企业微信侧边栏 - 创建改图任务弹窗
优先级:🔥 高(影响用户操作体验)