fix: 修复分类商品项布局问题并添加窗口resize监听
1. 调整diy-category-item的price-wrap和name-wrap样式,修复布局偏移 2. 移除冗余的主题变量定义,修正flex布局参数为正确的1 3. 添加窗口尺寸变化监听,实现主题色动态重算 4. 更新语言审计报告的代码调用统计数值
This commit is contained in:
@@ -124,9 +124,7 @@ export default {
|
|||||||
diy_category_item_price_wrap_justify_content: 'normal', // 价栏 justify-content(原渲染未设)
|
diy_category_item_price_wrap_justify_content: 'normal', // 价栏 justify-content(原渲染未设)
|
||||||
diy_category_item_price_wrap_margin_top: 0, // 价栏上外边距(原渲染未设, 保持 0)
|
diy_category_item_price_wrap_margin_top: 0, // 价栏上外边距(原渲染未设, 保持 0)
|
||||||
// .name-wrap(原文件无 SCSS 定义, 默认值保持原渲染的 block 布局, 远端可覆写)
|
// .name-wrap(原文件无 SCSS 定义, 默认值保持原渲染的 block 布局, 远端可覆写)
|
||||||
diy_category_item_name_wrap_display: 'block', // 名称栏 display(原渲染无定义, 保持 block)
|
diy_category_item_name_wrap_flex: '1', // 名称栏 flex(原 SCSS: flex: 1, = 1 1 0%,不要改 auto 否则 flex-basis 变了布局错)
|
||||||
diy_category_item_name_wrap_flex: 'auto', // 名称栏 flex(原渲染未设)
|
|
||||||
diy_category_item_name_wrap_overflow: 'visible', // 名称栏 overflow(原渲染未设)
|
|
||||||
// .consult-now-btn-wrap(默认与原渲染一致, 远端可覆写)
|
// .consult-now-btn-wrap(默认与原渲染一致, 远端可覆写)
|
||||||
diy_category_item_consult_now_wrap_display: 'flex', // 咨询按钮容器 display
|
diy_category_item_consult_now_wrap_display: 'flex', // 咨询按钮容器 display
|
||||||
diy_category_item_consult_now_wrap_justify_content:'flex-end',// 咨询按钮容器 justify-content
|
diy_category_item_consult_now_wrap_justify_content:'flex-end',// 咨询按钮容器 justify-content
|
||||||
@@ -319,9 +317,7 @@ export default {
|
|||||||
diy_category_item_price_wrap_justify_content: 'normal', // 价栏 justify-content(原渲染未设)
|
diy_category_item_price_wrap_justify_content: 'normal', // 价栏 justify-content(原渲染未设)
|
||||||
diy_category_item_price_wrap_margin_top: 0, // 价栏上外边距(原渲染未设, 保持 0)
|
diy_category_item_price_wrap_margin_top: 0, // 价栏上外边距(原渲染未设, 保持 0)
|
||||||
// .name-wrap(原文件无 SCSS 定义, 默认值保持原渲染的 block 布局, 远端可覆写)
|
// .name-wrap(原文件无 SCSS 定义, 默认值保持原渲染的 block 布局, 远端可覆写)
|
||||||
diy_category_item_name_wrap_display: 'block', // 名称栏 display(原渲染无定义, 保持 block)
|
diy_category_item_name_wrap_flex: '1', // 名称栏 flex(原 SCSS: flex: 1, = 1 1 0%,不要改 auto 否则 flex-basis 变了布局错)
|
||||||
diy_category_item_name_wrap_flex: 'auto', // 名称栏 flex(原渲染未设)
|
|
||||||
diy_category_item_name_wrap_overflow: 'visible', // 名称栏 overflow(原渲染未设)
|
|
||||||
// .consult-now-btn-wrap(默认与原渲染一致, 远端可覆写)
|
// .consult-now-btn-wrap(默认与原渲染一致, 远端可覆写)
|
||||||
diy_category_item_consult_now_wrap_display: 'flex', // 咨询按钮容器 display
|
diy_category_item_consult_now_wrap_display: 'flex', // 咨询按钮容器 display
|
||||||
diy_category_item_consult_now_wrap_justify_content:'flex-end',// 咨询按钮容器 justify-content
|
diy_category_item_consult_now_wrap_justify_content:'flex-end',// 咨询按钮容器 justify-content
|
||||||
@@ -513,9 +509,7 @@ export default {
|
|||||||
diy_category_item_price_wrap_justify_content: 'normal', // 价栏 justify-content(原渲染未设)
|
diy_category_item_price_wrap_justify_content: 'normal', // 价栏 justify-content(原渲染未设)
|
||||||
diy_category_item_price_wrap_margin_top: 0, // 价栏上外边距(原渲染未设, 保持 0)
|
diy_category_item_price_wrap_margin_top: 0, // 价栏上外边距(原渲染未设, 保持 0)
|
||||||
// .name-wrap(原文件无 SCSS 定义, 默认值保持原渲染的 block 布局, 远端可覆写)
|
// .name-wrap(原文件无 SCSS 定义, 默认值保持原渲染的 block 布局, 远端可覆写)
|
||||||
diy_category_item_name_wrap_display: 'block', // 名称栏 display(原渲染无定义, 保持 block)
|
diy_category_item_name_wrap_flex: '1', // 名称栏 flex(原 SCSS: flex: 1, = 1 1 0%,不要改 auto 否则 flex-basis 变了布局错)
|
||||||
diy_category_item_name_wrap_flex: 'auto', // 名称栏 flex(原渲染未设)
|
|
||||||
diy_category_item_name_wrap_overflow: 'visible', // 名称栏 overflow(原渲染未设)
|
|
||||||
// .consult-now-btn-wrap(默认与原渲染一致, 远端可覆写)
|
// .consult-now-btn-wrap(默认与原渲染一致, 远端可覆写)
|
||||||
diy_category_item_consult_now_wrap_display: 'flex', // 咨询按钮容器 display
|
diy_category_item_consult_now_wrap_display: 'flex', // 咨询按钮容器 display
|
||||||
diy_category_item_consult_now_wrap_justify_content:'flex-end',// 咨询按钮容器 justify-content
|
diy_category_item_consult_now_wrap_justify_content:'flex-end',// 咨询按钮容器 justify-content
|
||||||
@@ -707,9 +701,7 @@ export default {
|
|||||||
diy_category_item_price_wrap_justify_content: 'normal', // 价栏 justify-content(原渲染未设)
|
diy_category_item_price_wrap_justify_content: 'normal', // 价栏 justify-content(原渲染未设)
|
||||||
diy_category_item_price_wrap_margin_top: 0, // 价栏上外边距(原渲染未设, 保持 0)
|
diy_category_item_price_wrap_margin_top: 0, // 价栏上外边距(原渲染未设, 保持 0)
|
||||||
// .name-wrap(原文件无 SCSS 定义, 默认值保持原渲染的 block 布局, 远端可覆写)
|
// .name-wrap(原文件无 SCSS 定义, 默认值保持原渲染的 block 布局, 远端可覆写)
|
||||||
diy_category_item_name_wrap_display: 'block', // 名称栏 display(原渲染无定义, 保持 block)
|
diy_category_item_name_wrap_flex: '1', // 名称栏 flex(原 SCSS: flex: 1, = 1 1 0%,不要改 auto 否则 flex-basis 变了布局错)
|
||||||
diy_category_item_name_wrap_flex: 'auto', // 名称栏 flex(原渲染未设)
|
|
||||||
diy_category_item_name_wrap_overflow: 'visible', // 名称栏 overflow(原渲染未设)
|
|
||||||
// .consult-now-btn-wrap(默认与原渲染一致, 远端可覆写)
|
// .consult-now-btn-wrap(默认与原渲染一致, 远端可覆写)
|
||||||
diy_category_item_consult_now_wrap_display: 'flex', // 咨询按钮容器 display
|
diy_category_item_consult_now_wrap_display: 'flex', // 咨询按钮容器 display
|
||||||
diy_category_item_consult_now_wrap_justify_content:'flex-end',// 咨询按钮容器 justify-content
|
diy_category_item_consult_now_wrap_justify_content:'flex-end',// 咨询按钮容器 justify-content
|
||||||
@@ -901,9 +893,7 @@ export default {
|
|||||||
diy_category_item_price_wrap_justify_content: 'normal', // 价栏 justify-content(原渲染未设)
|
diy_category_item_price_wrap_justify_content: 'normal', // 价栏 justify-content(原渲染未设)
|
||||||
diy_category_item_price_wrap_margin_top: 0, // 价栏上外边距(原渲染未设, 保持 0)
|
diy_category_item_price_wrap_margin_top: 0, // 价栏上外边距(原渲染未设, 保持 0)
|
||||||
// .name-wrap(原文件无 SCSS 定义, 默认值保持原渲染的 block 布局, 远端可覆写)
|
// .name-wrap(原文件无 SCSS 定义, 默认值保持原渲染的 block 布局, 远端可覆写)
|
||||||
diy_category_item_name_wrap_display: 'block', // 名称栏 display(原渲染无定义, 保持 block)
|
diy_category_item_name_wrap_flex: '1', // 名称栏 flex(原 SCSS: flex: 1, = 1 1 0%,不要改 auto 否则 flex-basis 变了布局错)
|
||||||
diy_category_item_name_wrap_flex: 'auto', // 名称栏 flex(原渲染未设)
|
|
||||||
diy_category_item_name_wrap_overflow: 'visible', // 名称栏 overflow(原渲染未设)
|
|
||||||
// .consult-now-btn-wrap(默认与原渲染一致, 远端可覆写)
|
// .consult-now-btn-wrap(默认与原渲染一致, 远端可覆写)
|
||||||
diy_category_item_consult_now_wrap_display: 'flex', // 咨询按钮容器 display
|
diy_category_item_consult_now_wrap_display: 'flex', // 咨询按钮容器 display
|
||||||
diy_category_item_consult_now_wrap_justify_content:'flex-end',// 咨询按钮容器 justify-content
|
diy_category_item_consult_now_wrap_justify_content:'flex-end',// 咨询按钮容器 justify-content
|
||||||
@@ -1095,9 +1085,7 @@ export default {
|
|||||||
diy_category_item_price_wrap_justify_content: 'normal', // 价栏 justify-content(原渲染未设)
|
diy_category_item_price_wrap_justify_content: 'normal', // 价栏 justify-content(原渲染未设)
|
||||||
diy_category_item_price_wrap_margin_top: 0, // 价栏上外边距(原渲染未设, 保持 0)
|
diy_category_item_price_wrap_margin_top: 0, // 价栏上外边距(原渲染未设, 保持 0)
|
||||||
// .name-wrap(原文件无 SCSS 定义, 默认值保持原渲染的 block 布局, 远端可覆写)
|
// .name-wrap(原文件无 SCSS 定义, 默认值保持原渲染的 block 布局, 远端可覆写)
|
||||||
diy_category_item_name_wrap_display: 'block', // 名称栏 display(原渲染无定义, 保持 block)
|
diy_category_item_name_wrap_flex: '1', // 名称栏 flex(原 SCSS: flex: 1, = 1 1 0%,不要改 auto 否则 flex-basis 变了布局错)
|
||||||
diy_category_item_name_wrap_flex: 'auto', // 名称栏 flex(原渲染未设)
|
|
||||||
diy_category_item_name_wrap_overflow: 'visible', // 名称栏 overflow(原渲染未设)
|
|
||||||
// .consult-now-btn-wrap(默认与原渲染一致, 远端可覆写)
|
// .consult-now-btn-wrap(默认与原渲染一致, 远端可覆写)
|
||||||
diy_category_item_consult_now_wrap_display: 'flex', // 咨询按钮容器 display
|
diy_category_item_consult_now_wrap_display: 'flex', // 咨询按钮容器 display
|
||||||
diy_category_item_consult_now_wrap_justify_content:'flex-end',// 咨询按钮容器 justify-content
|
diy_category_item_consult_now_wrap_justify_content:'flex-end',// 咨询按钮容器 justify-content
|
||||||
@@ -1289,9 +1277,7 @@ export default {
|
|||||||
diy_category_item_price_wrap_justify_content: 'normal', // 价栏 justify-content(原渲染未设)
|
diy_category_item_price_wrap_justify_content: 'normal', // 价栏 justify-content(原渲染未设)
|
||||||
diy_category_item_price_wrap_margin_top: 0, // 价栏上外边距(原渲染未设, 保持 0)
|
diy_category_item_price_wrap_margin_top: 0, // 价栏上外边距(原渲染未设, 保持 0)
|
||||||
// .name-wrap(原文件无 SCSS 定义, 默认值保持原渲染的 block 布局, 远端可覆写)
|
// .name-wrap(原文件无 SCSS 定义, 默认值保持原渲染的 block 布局, 远端可覆写)
|
||||||
diy_category_item_name_wrap_display: 'block', // 名称栏 display(原渲染无定义, 保持 block)
|
diy_category_item_name_wrap_flex: '1', // 名称栏 flex(原 SCSS: flex: 1, = 1 1 0%,不要改 auto 否则 flex-basis 变了布局错)
|
||||||
diy_category_item_name_wrap_flex: 'auto', // 名称栏 flex(原渲染未设)
|
|
||||||
diy_category_item_name_wrap_overflow: 'visible', // 名称栏 overflow(原渲染未设)
|
|
||||||
// .consult-now-btn-wrap(默认与原渲染一致, 远端可覆写)
|
// .consult-now-btn-wrap(默认与原渲染一致, 远端可覆写)
|
||||||
diy_category_item_consult_now_wrap_display: 'flex', // 咨询按钮容器 display
|
diy_category_item_consult_now_wrap_display: 'flex', // 咨询按钮容器 display
|
||||||
diy_category_item_consult_now_wrap_justify_content:'flex-end',// 咨询按钮容器 justify-content
|
diy_category_item_consult_now_wrap_justify_content:'flex-end',// 咨询按钮容器 justify-content
|
||||||
@@ -1483,9 +1469,7 @@ export default {
|
|||||||
diy_category_item_price_wrap_justify_content: 'normal', // 价栏 justify-content(原渲染未设)
|
diy_category_item_price_wrap_justify_content: 'normal', // 价栏 justify-content(原渲染未设)
|
||||||
diy_category_item_price_wrap_margin_top: 0, // 价栏上外边距(原渲染未设, 保持 0)
|
diy_category_item_price_wrap_margin_top: 0, // 价栏上外边距(原渲染未设, 保持 0)
|
||||||
// .name-wrap(原文件无 SCSS 定义, 默认值保持原渲染的 block 布局, 远端可覆写)
|
// .name-wrap(原文件无 SCSS 定义, 默认值保持原渲染的 block 布局, 远端可覆写)
|
||||||
diy_category_item_name_wrap_display: 'block', // 名称栏 display(原渲染无定义, 保持 block)
|
diy_category_item_name_wrap_flex: '1', // 名称栏 flex(原 SCSS: flex: 1, = 1 1 0%,不要改 auto 否则 flex-basis 变了布局错)
|
||||||
diy_category_item_name_wrap_flex: 'auto', // 名称栏 flex(原渲染未设)
|
|
||||||
diy_category_item_name_wrap_overflow: 'visible', // 名称栏 overflow(原渲染未设)
|
|
||||||
// .consult-now-btn-wrap(默认与原渲染一致, 远端可覆写)
|
// .consult-now-btn-wrap(默认与原渲染一致, 远端可覆写)
|
||||||
diy_category_item_consult_now_wrap_display: 'flex', // 咨询按钮容器 display
|
diy_category_item_consult_now_wrap_display: 'flex', // 咨询按钮容器 display
|
||||||
diy_category_item_consult_now_wrap_justify_content:'flex-end',// 咨询按钮容器 justify-content
|
diy_category_item_consult_now_wrap_justify_content:'flex-end',// 咨询按钮容器 justify-content
|
||||||
|
|||||||
@@ -941,11 +941,14 @@ export default {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.price-wrap {
|
.price-wrap {
|
||||||
display: var(--diy-category-item-price-wrap-display, flex);
|
// 原 SCSS 完全没有 .price-wrap 样式定义(元素是 block 布局,初始值)
|
||||||
align-items: var(--diy-category-item-price-wrap-align-items, baseline);
|
// 保留 5 个属性的主题化能力,但所有 fallback 都设为 initial value,
|
||||||
flex-wrap: var(--diy-category-item-price-wrap-flex-wrap, wrap);
|
// 不改变原渲染。远端可覆写为 flex / baseline / wrap / space-between / 8rpx
|
||||||
justify-content: var(--diy-category-item-price-wrap-justify-content, space-between);
|
display: var(--diy-category-item-price-wrap-display, block);
|
||||||
margin-top: var(--diy-category-item-price-wrap-margin-top, 8rpx);
|
align-items: var(--diy-category-item-price-wrap-align-items, normal);
|
||||||
|
flex-wrap: var(--diy-category-item-price-wrap-flex-wrap, nowrap);
|
||||||
|
justify-content: var(--diy-category-item-price-wrap-justify-content, normal);
|
||||||
|
margin-top: var(--diy-category-item-price-wrap-margin-top, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
.discount-price {
|
.discount-price {
|
||||||
|
|||||||
54
main.js
54
main.js
@@ -118,6 +118,8 @@ async function bootstrap() {
|
|||||||
store
|
store
|
||||||
});
|
});
|
||||||
app.$mount();
|
app.$mount();
|
||||||
|
|
||||||
|
setupResizeListener();
|
||||||
}
|
}
|
||||||
bootstrap()
|
bootstrap()
|
||||||
// #endif
|
// #endif
|
||||||
@@ -130,4 +132,54 @@ const app = new Vue({
|
|||||||
store
|
store
|
||||||
});
|
});
|
||||||
app.$mount();
|
app.$mount();
|
||||||
// #endif
|
// #endif
|
||||||
|
|
||||||
|
// ============================================================
|
||||||
|
// 窗口尺寸变化监听
|
||||||
|
// ------------------------------------------------------------
|
||||||
|
// 背景: themeColorSet 会把 token 中的 rpx 转 px,转比例基于 window.innerWidth/750
|
||||||
|
// 缓存 key 已含 window.innerWidth,所以 cacheKey 不匹配时会自动重算;
|
||||||
|
// 但需要 resize 事件触发一次 themeColorSet 才会让 cacheKey 重新计算。
|
||||||
|
//
|
||||||
|
// 兼容点: 不同发布产物的 resize 来源不一样
|
||||||
|
// 1. 优先用 uni.onWindowResize — uni-app 跨端 API, H5 / App-Plus 支持
|
||||||
|
// 2. 兜底用 window.addEventListener('resize') — 纯 H5 产物中直接可用
|
||||||
|
// 3. 全部 try-catch,某条路径失败不影响其他路径
|
||||||
|
// 4. 用 200ms 去抖,避免拖动窗口时频繁触发(实测连续 resize 事件可达 60fps)
|
||||||
|
//
|
||||||
|
// 调用时机: 仅 H5 端在 $mount() 之后调用;小程序/鸿蒙端
|
||||||
|
// - 微信小程序: 屏幕尺寸由设备决定,运行时不会变化,无需监听
|
||||||
|
// - 鸿蒙: 待验证,目前不在这里注册以避免在不支持的环境下抛错
|
||||||
|
// ============================================================
|
||||||
|
function setupResizeListener() {
|
||||||
|
let resizeTimer = null;
|
||||||
|
const fire = () => {
|
||||||
|
if (resizeTimer) clearTimeout(resizeTimer);
|
||||||
|
resizeTimer = setTimeout(() => {
|
||||||
|
resizeTimer = null;
|
||||||
|
try {
|
||||||
|
store.dispatch('themeColorSet');
|
||||||
|
} catch (e) {
|
||||||
|
console.warn('[theme] resize -> themeColorSet fail', e);
|
||||||
|
}
|
||||||
|
}, 200);
|
||||||
|
};
|
||||||
|
|
||||||
|
// 路径 1: uni 跨端 API(H5 / App-Plus 上有效)
|
||||||
|
try {
|
||||||
|
if (typeof uni !== 'undefined' && typeof uni.onWindowResize === 'function') {
|
||||||
|
uni.onWindowResize(fire);
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
console.warn('[theme] uni.onWindowResize bind fail', e);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 路径 2: 原生 window resize 事件(H5 兜底,某些自定义 H5 产物可能没装 uni)
|
||||||
|
try {
|
||||||
|
if (typeof window !== 'undefined' && typeof window.addEventListener === 'function') {
|
||||||
|
window.addEventListener('resize', fire);
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
console.warn('[theme] window.resize bind fail', e);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
"bundle_version": "1782901586",
|
"bundle_version": "1782901586",
|
||||||
"bundle_lang": "zh-cn",
|
"bundle_lang": "zh-cn",
|
||||||
"bundle_leaves": 2649,
|
"bundle_leaves": 2649,
|
||||||
"code_calls_total": 2675,
|
"code_calls_total": 2676,
|
||||||
"code_unique_keys": 2083,
|
"code_unique_keys": 2083,
|
||||||
"found_in_bundle": 2082,
|
"found_in_bundle": 2082,
|
||||||
"missing_summary": {
|
"missing_summary": {
|
||||||
|
|||||||
Reference in New Issue
Block a user