直接用 reset.css 会搞崩表单,因其粗暴清零表单元素的 border、padding、font,而各浏览器原生渲染差异大;Normalize.css 则收敛而非清零,保留可用默认行为,仅修正明显不一致处。
为什么直接用
会把表单搞崩
因为多数老式
(比如 Eric Meyer 版)粗暴地把
、
、
的
、
、
全设为
或
,而不同浏览器对表单控件的默认渲染逻辑差异极大——Chrome 用系统原生控件,Firefox 有自己一套伪元素,Safari 在 macOS 上还带阴影和圆角。一重置,
输入框变细条,
消失,
下拉箭头错位,全乱。
对表单做了什么妥协
它没“清零”,而是做收敛:保留各浏览器可读、可用的默认行为,只修正明显不一致的地方。比如统一
的
,修复 Safari 中
的
行为,让
在 IE 和 Chrome 下都响应
。但它不碰
的轨道样式、不标准化
按钮的结构——因为这些本就该由开发者主动控制。
不重置
到
,只在必要时设为
或
它保留
的
继承,避免文字被截断
对
和
做了最小化归一,但不隐藏
(很多 reset 会设
)
你真正该手动重置的三个表单节点
Normalize 是基线,不是终点。以下三处必须自己加 CSS,否则移动端点击区域小、高对比度模式下不可读、辅助技术识别失败:
、
、
:显式声明
(如
),防止 Safari 自动压缩高度
和
:必须用
或自定义伪元素,不能依赖浏览器默认色(尤其深色模式下)
:重置
为
,并确保
有清晰轮廓(别用
)
示例:
使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
下载
立即学习
“
前端免费学习笔记(深入)
”;
移动端表单重置最容易漏的兼容点
iOS Safari 对
和
会强制插入上下微调按钮(
),Android Chrome 则不会;同时,所有移动端浏览器默认禁用用户缩放(
),导致
以下的文字无法被双指放大。这些都不是 Normalize 能覆盖的。
用
和
隐藏 iOS 微调/日历图标(仅 WebKit)
对
和
加
,否则 iOS 可能触发自动缩放
别给
设
替换下拉箭头后忘了加
,否则文字顶到边缘
表单样式不是越“干净”越好,而是越“可控”越好。Normalize 提供的是底线共识,真正的重置动作得落在具体输入类型、具体交互状态、具体设备能力上——漏掉任一环,用户就在某个角落卡住。
reset.cssreset.cssinputselecttextareaborderpaddingfont0inheritdatecheckboxselectNormalize.cssinput[type="search"]appearancetextarearesizebuttoncursor: pointerinput[type="range"]filenormalize.cssappearancenonerevertautoinputline-heightfieldsetlegendlegenddisplay: noneinputselecttextareamin-heightmin-height: 1.5eminput[type="checkbox"]input[type="radio"]accent-colorbuttonborder1px solid currentColor:focus-visibleoutline: nonebutton { border: 1px solid currentColor; }
input, select, textarea { min-height: 1.5em; }input[type="number"]input[type="date"]appearance: spinbuttonuser-scalable=nofont-size: 16pxinput::-webkit-inner-spin-buttoninput::-webkit-calendar-picker-indicatorinputtextareafont-size: 16pxselectbackground-imagepadding-right