2025-11-11 18:03:50 +08:00
|
|
|
|
// 屏幕适配工具(支持容器查询)
|
2025-10-31 20:19:04 +08:00
|
|
|
|
// 设计稿基准:1920px (宽) × 982px (高,不含头部)
|
2025-11-11 18:03:50 +08:00
|
|
|
|
//
|
|
|
|
|
|
// 容器查询支持:
|
|
|
|
|
|
// 当组件嵌入到其他系统时,会自动使用容器单位(cqw/cqh)而非视口单位(vw/vh)
|
|
|
|
|
|
// 这确保了子组件相对于父容器而非整个视口进行缩放
|
|
|
|
|
|
//
|
|
|
|
|
|
// 回退策略:
|
|
|
|
|
|
// 使用 CSS 变量 --cq-inline-100 和 --cq-block-100 提供渐进增强
|
|
|
|
|
|
// 不支持容器查询的浏览器会回退到视口单位
|
2025-10-31 20:19:04 +08:00
|
|
|
|
|
2025-11-11 18:03:50 +08:00
|
|
|
|
$design-width: 1920;
|
|
|
|
|
|
$design-height: 982;
|
|
|
|
|
|
|
|
|
|
|
|
// 将 px 转换为容器宽度单位(基于设计稿宽度 1920px)
|
|
|
|
|
|
// 在支持容器查询的浏览器中使用 cqw,否则回退到 vw
|
2025-10-31 20:19:04 +08:00
|
|
|
|
@function vw($px) {
|
2025-11-11 18:03:50 +08:00
|
|
|
|
@return calc($px / $design-width * var(--cq-inline-100, 100vw));
|
2025-10-31 20:19:04 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2025-11-11 18:03:50 +08:00
|
|
|
|
// 将 px 转换为容器高度单位(基于设计稿内容区域高度 982px)
|
|
|
|
|
|
// 在支持容器查询的浏览器中使用 cqh,否则回退到 vh
|
2025-10-31 20:19:04 +08:00
|
|
|
|
@function vh($px) {
|
2025-11-11 18:03:50 +08:00
|
|
|
|
@return calc($px / $design-height * var(--cq-block-100, 100vh));
|
2025-10-31 20:19:04 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2025-11-11 18:03:50 +08:00
|
|
|
|
// 字体大小转换(使用容器宽度确保响应式)
|
|
|
|
|
|
// 字体随容器宽度缩放,保持与其他元素的比例关系
|
2025-10-31 20:19:04 +08:00
|
|
|
|
@function fs($px) {
|
2025-11-11 18:03:50 +08:00
|
|
|
|
@return vw($px);
|
2025-10-31 20:19:04 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 使用示例:
|
2025-11-11 18:03:50 +08:00
|
|
|
|
// width: vw(580); // 580px → cqw (或 vw 作为 fallback)
|
|
|
|
|
|
// height: vh(400); // 400px → cqh (或 vh 作为 fallback)
|
|
|
|
|
|
// font-size: fs(16); // 16px → cqw (或 vw 作为 fallback)
|
|
|
|
|
|
//
|
|
|
|
|
|
// 注意:这些函数需要父容器设置了 container-type: inline-size 或 size
|
|
|
|
|
|
// 例如在 CockpitLayout.vue 中已经设置了相应的容器类型
|
|
|
|
|
|
|