惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Cisco Talos Blog
Cisco Talos Blog
Martin Fowler
Martin Fowler
A
About on SuperTechFans
H
Help Net Security
F
Full Disclosure
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
IT之家
IT之家
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
阮一峰的网络日志
阮一峰的网络日志
WordPress大学
WordPress大学
H
Heimdal Security Blog
博客园_首页
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
T
Tailwind CSS Blog
Recent Announcements
Recent Announcements
B
Blog RSS Feed
Last Week in AI
Last Week in AI
V2EX - 技术
V2EX - 技术
The Register - Security
The Register - Security
Security Archives - TechRepublic
Security Archives - TechRepublic
G
GRAHAM CLULEY
美团技术团队
S
Securelist
MyScale Blog
MyScale Blog
Vercel News
Vercel News
L
LINUX DO - 最新话题
Hacker News: Ask HN
Hacker News: Ask HN
W
WeLiveSecurity
M
MIT News - Artificial intelligence
宝玉的分享
宝玉的分享
月光博客
月光博客
Attack and Defense Labs
Attack and Defense Labs
大猫的无限游戏
大猫的无限游戏
博客园 - Franky
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Microsoft Security Blog
Microsoft Security Blog
I
InfoQ
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Forbes - Security
Forbes - Security
罗磊的独立博客
O
OpenAI News
AI
AI
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
雷峰网
雷峰网
S
Security @ Cisco Blogs
MongoDB | Blog
MongoDB | Blog
Schneier on Security
Schneier on Security
P
Proofpoint News Feed
Webroot Blog
Webroot Blog
V
Visual Studio Blog

博客园 - ^Mao^

vxe-table 3D饼图 openlayer实现给线的附近添加点,点支持移动 element-plus el-select html导出pdf openlayers增加移动功能 适配 部分页面统计用户访问时长 openlayers基本使用(街景+标注+绘制) 使用openlayer绘制街景地图 正则表达式--取对应表达式的值 vue2实现el-table-column多级效果 echarts-雷达图 echarts--地图 散点图效果 echarts散点图区域设置 vant 的vant-uploader组件问题 Threejs学习 Echarts-普通地图和3D地图实现 test
不同缩放下适配
^Mao^ · 2026-06-10 · via 博客园 - ^Mao^

PC 端 1920×1080 设计稿 适配系统缩放(100%/125%/150%/200%)方案

作为专业前端工程师,我会采用「viewport 基准适配 + rem/vw 单位 + 禁止浏览器强制缩放失真 + 兼容系统 DPI 缩放」的完整方案,彻底解决 Windows 系统缩放、不同显示器尺寸带来的布局错乱、字体模糊、元素偏移问题。

先明确核心问题:

用户的系统缩放(DPI 缩放) 不是浏览器缩放,浏览器会自动渲染物理像素,但如果只用px写死尺寸,在 125%/150% 缩放下会出现:元素挤在一起、字体大小异常、布局错位。

一、核心适配方案(生产环境首选)

方案:rem + 动态根字体大小(完美适配 1920 设计稿 + 所有系统缩放)

这是 PC 端大屏适配最通用、最稳定的方案,兼容所有缩放比例,还原设计稿比例。

  1. 第一步:设置 meta 标签(禁止移动端缩放,PC 端稳定渲染)
<!-- 关键:user-scalable=no 禁止用户手动缩放,保证布局稳定 -->
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
  1. 第二步:写入动态 rem 适配脚本(核心代码)

1920px 设计稿为基准,自动计算根字体大小,系统缩放不影响比例:

// 1920设计稿基准值:1rem = 100px(方便计算,也可设为1rem=1px)
function setRem() {
  // 设计稿宽度
  const designWidth = 1920;
  // 基准根字体大小
  const baseFontSize = 100;
  // 获取当前窗口宽度
  const clientWidth = document.documentElement.clientWidth;
  
  // 计算根字体大小:自动适配窗口宽度 + 兼容系统缩放
  const rootFontSize = (clientWidth / designWidth) * baseFontSize;
  
  // 设置给html根节点
  document.documentElement.style.fontSize = rootFontSize + 'px';
}

// 初始化
setRem();
// 窗口大小变化、系统缩放变化时重新计算
window.addEventListener('resize', setRem);
// 页面加载完成重新计算
window.addEventListener('load', setRem);
  1. 第三步:开发时直接按设计稿换算单位

1920 设计稿标注多少 px,直接 ÷ 100 就是 rem 值

  • 设计稿:宽度 200px → 代码:width: 2rem
  • 设计稿:字体 16px → 代码:font-size: 0.16rem
  • 设计稿:间距 40px → 代码:margin: 0.4rem

优势:无论系统缩放 100%/125%/150%/200%,所有元素等比例缩放,完全还原设计稿。

二、备选极简方案:vw 单位(零 JS,纯 CSS 适配)

如果不想用 JS 动态计算,直接用vw单位,100% 还原 1920 设计稿,适配所有缩放。

原理:

  • 屏幕宽度 = 100vw
  • 1920px 设计稿 → 1vw = 19.2px

换算公式:

元素尺寸(vw) = 设计稿px / 19.2

示例:

/* 设计稿宽度1200px的容器 */
.container {
  width: calc(1200 / 19.2 * 1vw);
}

/* 设计稿字体16px */
.title {
  font-size: calc(16 / 19.2 * 1vw);
}

优势:无 JS 依赖,纯 CSS,适配所有系统缩放;

缺点:计算比 rem 麻烦一点,可借助 VSCode 插件自动换算。

三、关键兜底方案:解决系统缩放带来的问题

  1. 禁止浏览器强制缩放导致的字体 / 元素失真

Windows 高缩放下,浏览器会默认渲染字体抗锯齿,可能模糊,添加 CSS 兜底:

/* 全局样式 */
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  /* 文字平滑,解决缩放后字体模糊 */
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  /* 禁止浏览器自动调整字体大小 */
  text-size-adjust: none;
}

html, body {
  /* 最小宽度,防止过小窗口挤压布局(可选) */
  min-width: 1200px;
  width: 100%;
  height: 100%;
}
  1. 图片高清适配(缩放后不模糊)

使用 2 倍图 / 响应式图片,保证 150%/200% 缩放下图片清晰:

<!-- 普通图片 -->
<img src="img.png" alt="">
<!-- 高清适配 -->
<img src="img@2x.png" srcset="img.png 1x, img@2x.png 2x" alt="">
  1. 固定像素场景处理(边框、1px 细线)

边框、小图标不需要等比例缩放,直接用 px

.button {
  /* 尺寸用rem */
  width: 2rem;
  height: 0.8rem;
  /* 边框用px,保证所有缩放下粗细一致 */
  border: 1px solid #ccc;
}

四、最终开发规范(直接照做即可)

  1. 布局、间距、字体:统一用 rem(首选)或 vw
  2. 边框、小图标、1px 细线:用 px
  3. 图片:使用 2 倍图,保证高清
  4. JS 脚本:必加 rem 动态计算
  5. 不使用:固定 px 写死容器宽度、字体大小

总结

  1. 首选方案rem + 动态根字体,开发最方便,适配最稳定;
  2. 核心逻辑:放弃固定 px,用相对单位让元素跟随屏幕 / 缩放等比例变化
  3. 最终效果:无论用户显示器是 100%/125%/150%/200% 缩放,页面都和 1920 设计稿完全一致,无错位、无模糊、无变形。