normalize.css 是更务实的选择,它保留有用默认样式、修复不一致行为,统一 box-sizing 为 border-box,并适配现代框架构建流程。
normalize.css 还是 reset.css?先搞清目标再选跨平台适配不是靠“重置一切”就能解决的,normalize.css 是更务实的选择。它保留有用的浏览器默认样式(比如 audio、video 的控件),只修复不一致行为;而 reset.css 粗暴清空所有默认样式,反而要你手动补全表单、列表、标题等基础渲染逻辑。
input[type="number"] 默认加 spinner,normalize.css 不动它,reset.css 会干掉——结果你得自己写 CSS 恢复或隐藏box-sizing 的初始值不同,normalize.css 统一设为 border-box,省去大量 *, *::before, *::after { box-sizing: border-box; }
main.css 顶部 @import 'normalize.css'; 即可,别用 CDN 链接——本地依赖更可控,构建时也能参与 PostCSS 处理按设备类型(手机/平板/桌面)设断点容易翻车,因为 iPad Pro 宽度超过很多笔记本,而折叠屏手机展开后又接近平板。真正有效的做法是按内容流动需求设断点,且优先使用 min-width + max-width 组合,而不是只写 min-width。
@media (min-width: 768px) 就切两栏布局——但很多安卓平板横屏是 800px,竖屏却只有 600px,这个断点会让竖屏下内容被强行撑开@media (min-width: 768px) and (orientation: landscape) 区分方向,再配合 clamp(1rem, 4vw, 1.5rem) 控制字号,让文字随视口平滑缩放viewport meta 标签必须带 width=device-width, initial-scale=1,否则 iOS Safari 会忽略媒体查询中的 rem 和 vh 计算rem + vw 混用时字体大小为啥在微信里失效?微信内置浏览器(X5 内核)对 vw 的解析有延迟,尤其在页面首次加载或横竖屏切换时,font-size: clamp(1rem, 2.5vw, 1.25rem) 可能卡在 1rem 不变。这不是 bug,是 X5 在 CSSOM 构建完成前就应用了静态计算值。
resize 和 orientationchange,手动设置根元素 style.fontSize,触发重绘clamp(),改用媒体查询分段控制:@media (max-width: 375px) { html { font-size: 14px; } }、@media (min-width: 376px) and (max-width: 768px) { html { font-size: 16px; } }
:root 里用 calc(100vw / 37.5) 这类表达式设基础 font-size——iOS 15+ 和部分 Android 12 WebView 会四舍五入到整数,导致 374px 宽度下算出 9.97px → 实际取 10px,偏差累积到子元素就明显了这些库默认按桌面端设计,直接引入会在移动端出现按钮过小、间距过紧、滚动条错位等问题。不能靠全局覆盖,得用作用域隔离 + 条件加载。
立即学习“前端免费学习笔记(深入)”;
<el-button> 包一层自定义组件,内部用 v-if="$slots.default && isMobile" 切换 class,再通过 :class="{ 'mobile-btn': isMobile }" 加轻量适配样式main.js 全局引入 ant-design-vue/dist/antd.css,改用按需导入 + babel-plugin-import,再单独为移动端写一份 antd-mobile.css 覆盖关键属性(如 .ant-btn 的 padding 和 font-size)position: fixed 元素在 iOS Safari 中的渲染异常:键盘弹起时不会自动上推,要用 visualViewport API 监听高度变化并动态调整 top 值,否则登录框会被遮住跨平台不是“写一次,到处跑”,而是每种环境都有它不声张的脾气。最常漏掉的,是 iOS 键盘收起后 visualViewport 高度没恢复、Android WebView 的 user-scalable=no 导致 pinch-zoom 失效、还有微信里 background-attachment: fixed 直接被无视——这些细节不测真机,光看 Chrome DevTools 模拟器永远发现不了。