flexible.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. // rem 适配方案 - 针对大屏可视化优化
  2. (function flexible() {
  3. const docEl = document.documentElement;
  4. const dpr = window.devicePixelRatio || 1;
  5. // 设置 data-dpr 属性,用于 css 适配
  6. docEl.setAttribute('data-dpr', dpr);
  7. function setRem() {
  8. // 设计稿宽度 1920px,基准 font-size: 16px
  9. // 1rem = 16px
  10. const baseWidth = 1920;
  11. const baseFontSize = 16;
  12. // 获取当前视口宽度
  13. const clientWidth = docEl.clientWidth || window.innerWidth;
  14. // 计算 rem 基准值 - 保持比例
  15. // 最小宽度 1280px,最大不限制
  16. const width = Math.max(clientWidth, 1280);
  17. const rem = (width / baseWidth) * baseFontSize;
  18. // 设置根字体大小
  19. docEl.style.fontSize = rem + 'px';
  20. }
  21. // 初始化
  22. setRem();
  23. // 监听窗口变化
  24. window.addEventListener('resize', setRem);
  25. window.addEventListener('orientationchange', setRem);
  26. // 页面显示时重新计算
  27. document.addEventListener('visibilitychange', function() {
  28. if (!document.hidden) {
  29. setRem();
  30. }
  31. });
  32. })();