使用sass 实现px转vh或vw,适配适老化时,在设计图字体大小的基础上,增加3px(可配置),

记录,以防忘记

Sass 函数定义 (_units.scss)
css 复制代码
// 设计稿基准尺寸(根据实际设计图修改)
$design-viewport-width: 1920px;  // 设计稿宽度
$design-viewport-height: 1080px; // 设计稿高度

// 计算公式   传入px值 / 设计稿宽度 * 100vw或100vh

// 适老化模式字体增量(可配置)
$accessibility-font-offset: 3px;

// 核心转换函数
@function px-to-vw($px) {
// 如果不加 # 就出现 单位丢失 如 calc(16 / 1920 * 100vw)(单位丢失,无法正确计算)
// var(--accessibility-font-offset, 0px)  如果变量未定义,则使用0px
  @return calc((#{$px} + var(--accessibility-font-offset, 0px)) / #{$design-viewport-width} * 100vw);
}

@function px-to-vh($px) {
  @return calc((#{$px} + var(--accessibility-font-offset, 0px)) / #{$design-viewport-height} * 100vh);
}

// 适配混合器(可选)
@mixin accessibility-mode {
  --accessibility-font-offset: #{$accessibility-font-offset};
}
CSS 变量声明 (styles.scss)
css 复制代码
:root {
  // 初始化适老化偏移量(默认不启用)
  --accessibility-font-offset: 0px;
}

body {
  // 使用示例:将 16px 转换为 vw 单位(自动包含适老化增量)
  font-size: px-to-vw(16px);
  
  // 高度转换示例(如需要)
  padding-top: px-to-vh(20px);
}

// 适老化模式专用类
.accessibility-mode {
  @include accessibility-mode;
}

适老化切换

javascript 复制代码
function toggleAccessibilityMode(enable) {
  const root = document.documentElement;
  
  if (enable) {
    root.classList.add('accessibility-mode');
    // 可选:存储用户偏好
    localStorage.setItem('accessibilityMode', 'enabled');
  } else {
    root.classList.remove('accessibility-mode');
    localStorage.setItem('accessibilityMode', 'disabled');
  }
}

// 初始化检测用户设置
window.addEventListener('DOMContentLoaded', () => {
  const savedMode = localStorage.getItem('accessibilityMode');
  if (savedMode === 'enabled') toggleAccessibilityMode(true);
});


<button onclick="toggleAccessibilityMode(true)">开启适老化模式</button>
<button onclick="toggleAccessibilityMode(false)">关闭适老化模式</button>
相关推荐
灵感__idea2 小时前
Hello 算法:贪心的世界
前端·javascript·算法
GreenTea4 小时前
一文搞懂Harness Engineering与Meta-Harness
前端·人工智能·后端
killerbasd5 小时前
牧苏苏传 我不装了 4/7
前端·javascript·vue.js
吴声子夜歌6 小时前
ES6——二进制数组详解
前端·ecmascript·es6
码事漫谈6 小时前
手把手带你部署本地模型,让你Token自由(小白专属)
前端·后端
ZC跨境爬虫6 小时前
【爬虫实战对比】Requests vs Scrapy 笔趣阁小说爬虫,从单线程到高效并发的全方位升级
前端·爬虫·scrapy·html
爱上好庆祝6 小时前
svg图片
前端·css·学习·html·css3
王夏奇7 小时前
python中的__all__ 具体用法
java·前端·python
大家的林语冰7 小时前
《前端周刊》尤大开源 Vite+ 全家桶,前端工业革命启动;尤大爆料 Void 云服务新产品,Vite 进军全栈开发;ECMA 源码映射规范......
前端·javascript·vue.js
jiayong238 小时前
第 8 课:开始引入组合式函数
前端·javascript·学习