01 — Touch Targets

触控目标尺寸

手指不是鼠标光标。移动端可点击区域太小是最高频的 UX 失误,直接导致用户误触和放弃操作。

APPLE HIG

最小触控区域

44 × 44px

视觉上按钮可以更小,但可点击区域必须至少 44px 高、44px 宽。用 CSS padding 扩展点击区域,而不是把视觉按钮做大。

Critical
MATERIAL 3

最小触控区域

48 × 48dp

Google 的标准略大于 Apple。两个标准都认同:与相邻可点击元素间距至少 8px,防止用户点错目标。

Critical
COMMON FAIL

最高频违规场景

导航链接、图标按钮

汉堡菜单关闭按钮、面包屑链接、购物车图标、社交分享按钮 — 这四类是触控区域最常不达标的地方。

Watch Out
SPACING

相邻元素最小间距

≥ 8px

相邻两个可点击目标之间,物理间距至少 8px。最常出问题:数量加减按钮、轮播点点导航、价格旁边的操作按钮。

Critical

对比 Mockup

Bad — 触控区太小

FLOWTICA SCRIBE
The AI recording pen designed for professionals.
Buy Now
Learn More
Nav links ~18px tall — impossible to tap accurately
× 问题导航链接约 18px 高,按钮 padding 不足,误触率极高。

Good — 足够的触控区域

FLOWTICA SCRIBE
The AI recording pen designed for professionals.
Buy Now
Learn More
✓ 正确每个可点击元素高度 ≥ 36px,按钮 block 宽,导航有足够间隔。
Flowtica 主题需注意Hero 区域 CTA 按钮目前高度约 34px。建议移动端将 height 提升至 44px,padding 增加到 12px 上下。
02 — Typography

字体排版规范

字体大小不只是美观问题 — 16px 是浏览器的「自动缩放临界值」,低于它会触发 iOS Safari 的自动放大行为。

iOS Safari 自动缩放陷阱表单 <input>font-size 低于 16px,用户点击输入框时 iOS 会自动放大整个页面。解决方案:所有输入框字体 ≥ 16px。
全大写长文本陷阱text-transform: uppercase 用于短标签(「NEW」「SALE」)没问题,但整段说明文字用全大写会大幅降低阅读速度。移动端阅读条件本就不好,全大写段落几乎无法快速浏览。
H1 主标题 Write the Unspoken 28–36px · clamp
H2 区块标题 Features Overview 22–24px
H3 子标题 MEMS Microphone Array 18–20px
正文 Body Capture every conversation with studio-grade clarity and AI-powered transcription. 16px ← 基准
辅助文字 *Price includes free 1-year cloud storage 14px(最小)
❌ 太小 Footnote disclaimer text 12px — 避免正文使用
❌ Input 陷阱 输入邮箱… 14px input → iOS 放大

Bad — 行高太窄 / 字号层级混乱

CAPTURE EVERY WORD WITH AI PRECISION AND STUDIO GRADE CLARITY
The Flowtica Scribe records, transcribes, and identifies speakers automatically so you never miss a critical detail in meetings, lectures, or creative sessions.
Available in Midnight Black and Pearl White. Ships with USB-C cable, carrying case, and one year of cloud storage.
ORDER NOW
← Title all-caps, line-height 1.1 — dense and hard to scan. Body 7px, line-height 1.2 — fatiguing to read.
× 问题全大写标题在移动端几乎无法快速阅读。正文 7px + 行高 1.2,文字挤成一团,用户放弃阅读的概率极高。

Good — 正确字号层级 + 舒适行高

Capture Every Word with AI Precision
The Flowtica Scribe records, transcribes, and identifies speakers automatically — so you never miss a critical detail.
Available in Midnight Black and Pearl White. Ships with USB-C cable and one year of cloud storage.
Order Now
✓ Mixed case, clear hierarchy. Body line-height 1.65 — easy to read at a glance.
✓ 正确标题正常大小写,三级层级清晰(标题 → 正文 → 辅助说明)。行高 1.65 让段落有足够呼吸感,用户能快速扫读。

Bad — 极细字重在安卓低端机

FLOWTICA SCRIBE
The world's most intelligent recording device. Designed for professionals.
Starting from $299 · Free shipping worldwide
LEARN MORE
← font-weight: 100. On low-PPI Android: blurry hairlines, nearly invisible.
× 问题font-weight: 100 在 Retina 屏好看,但在低 PPI 安卓机(大量中低端机型)渲染成模糊细线,正文接近不可读。

Good — 安全字重范围

Flowtica Scribe
The world's most intelligent recording device. Designed for professionals.
Starting from $299 · Free shipping worldwide
Learn More
✓ 600 / 400 / 300 — safe range. Clear on all devices.
✓ 正确标题 600,正文 400,辅助说明 300。300 是安全下限,在所有主流设备上清晰可读,视觉层级也依然丰富。
LINE HEIGHT

行高建议

1.5 – 1.7

正文行高 1.5 是最低安全值,建议 1.6–1.7。标题可收窄到 1.1–1.2,段落绝对不能低于 1.4。

Recommended
FONT WEIGHT

轻字重的风险

慎用 weight < 300

Ultra Light / Thin 字重在低 PPI 安卓机上会变成模糊细线,几乎不可读。font-weight: 300 可以接受,不要更细了。

Watch Out
03 — Spacing

间距与边距规范

间距决定了页面的「呼吸感」。移动端的核心挑战是在小屏幕上保持清晰的视觉层级。

页面左右边距
16–20px← 最小值 16px
卡片内 padding
16–24px四边统一
段落间距
1em随字号自动缩放
Section 间距
48–64px移动端比桌面小 30%
桌面 Section
80–120px视觉更宽松
按钮 padding
12px↕ 20px↔确保触控区 ≥ 44px
可点击元素间
≥ 8px防止误触相邻元素

Bad — 无边距,内容贴边

[ product image ]
Flowtica Scribe AI Pen
Capture every meeting with studio-grade MEMS microphones and real-time AI transcription.
← 0–2px from screen edge
× 问题文字紧贴屏幕边缘,阅读时眼睛疲劳,层级模糊。

Good — 16–20px 边距

[ product image ]
Flowtica Scribe AI Pen
Capture every meeting with studio-grade MEMS microphones and AI transcription.
✓ 16px margin — content breathes
✓ 正确16px 边距,图片全出血,文字区域清晰,层级自然。
8PT GRID

8 倍数间距系统

8, 16, 24, 32, 48, 64

所有间距值使用 8 的倍数(小间距用 4 的倍数)。产生统一的节奏感,方便开发者沟通。

Best Practice
SAFE AREA

刘海屏/底部安全区

env(safe-area-inset-*)

iPhone X 以上机型有底部 Home 指示条,固定底部导航/购物车栏需要加 padding-bottom: env(safe-area-inset-bottom),否则按钮会被遮住。

Critical for iOS
04 — Color Contrast

颜色对比度

在户外强光、地铁摇晃中看手机,低对比度文字会直接消失。WCAG 给出了可量化的最低标准。

WCAG AA

正文文字

≥ 4.5 : 1

小于 18px 正文(或小于 14px bold)必须达到 4.5:1。大多数国家无障碍法规要求的基准。

WCAG AA
WCAG AA

大号文字 / 标题

≥ 3 : 1

18px+ 常规字重或 14px+ 粗体可放宽到 3:1。电商转化场景建议标题也保持 4.5:1。

WCAG AA
CHECK TOOL

如何测量

webaim.org/resources/
contrastchecker/

输入前景色和背景色 hex 值,即可获得对比度比例。Chrome DevTools 也内置了对比度检查(点击颜色色块)。

Free Tool
IMAGE TEXT

图片内嵌文字

吸管工具取色

用 imagecolorpicker.com 上传图片,分别取「文字颜色」和「文字背景颜色」的 hex,再到对比度检测工具验证。图片背景若非纯色,取最浅处背景验证。

Special Case

Bad — 对比度不足

FLOWTICA SCRIBE
AI Recording Pen
The only device that captures and transcribes your conversations in real time.
Order Now — $299
Header: ~1.3:1 · Text: ~2.1:1 · Both fail AA
× 问题浅蓝文字在蓝色背景对比度约 1.3:1,户外阳光下完全看不见。

Good — 高对比度

FLOWTICA SCRIBE
AI Recording Pen
The only device that captures and transcribes your conversations in real time.
Order Now — $299
Dark ink on cream: ~15:1 · Exceeds AAA
✓ 正确Flowtica #1a1714 在米白背景达约 15:1,远超 AAA 标准。
05 — Responsive Breakpoints

响应式断点

断点决定了网页在什么宽度「切换」布局。你的主题用了自定义断点,与行业惯例不同。

Mobile
<480
Tablet
480–768
Desktop
768–1024
Wide >1024px
0480px768px1024px1440px
⚠ Flowtica 主题的实际断点 你们的主题使用 Tailwind 的 max-md: 变体,但配置了自定义断点 1200px(75rem),而不是行业惯用的 768px。这意味着 768px 到 1200px 之间(平板、小屏 Mac)都走移动端样式。这是之前 Hero 按钮 Tailwind 类失效的根源。

Bad — 桌面布局硬塞进手机宽度

Flowtica
ProductReviewsBuyAboutBlog
Flowtica Scribe
$299
Scribe Pro+
$399
Accessories
$49
← 3-column desktop grid on 375px. Nav items overflow. Text is illegible.
× 问题三列桌面网格强行放进 375px,每列宽度约 100px,图片和文字都太小。导航项也溢出。没有响应式断点切换布局。

Good — 断点切换为单列移动端布局

Flowtica
Flowtica Scribe
The AI recording pen
$299
Add to Cart
✓ Single column at 375px. Full-width card, legible text, accessible CTA.
✓ 正确断点触发后切换为单列布局,卡片全宽显示,图片、文字、按钮尺寸都舒适可读。汉堡菜单代替展开导航。
TEST DEVICE

必测的三个宽度

375 / 390 / 428px

iPhone SE (375px), iPhone 14 (390px), iPhone 14 Plus (428px)。覆盖 80% 以上 iOS 用户。Android 主流宽度 360–412px,也在此区间内。

Test Plan
COMMUNICATION

与开发沟通断点

用具体数值,不用「移动端」

不要说「移动端下面」,要说「在 375px 到 768px 之间」。含糊的描述是最常见的沟通失误来源,开发者不知道该写哪个 breakpoint。

Communication
06 — Interaction Details

交互细节

几个容易被忽视的移动端交互规范,每一个都直接影响用户的操作感受。

TAP DELAY

消除 300ms 点击延迟

touch-action: manipulation

移动浏览器为了区分「点击」和「双指缩放」,默认等 300ms 再响应点击。设置 touch-action: manipulation 或正确配置 viewport meta 可消除。延迟会让按钮感觉「反应迟钝」。

Quick Win
HOVER TRAP

Hover 不是移动端的信息载体

手机无 hover 状态

桌面端的 :hover 工具提示在手机上完全不存在。如果某个说明、价格明细、尺寸信息只有 hover 才能看到,手机用户永远看不到它。信息必须默认可见,或有明确的点击触发方式。

Critical
OVERFLOW

横向滚动是 Bug,不是功能

意外横向滚动条

页面出现意外横向滚动条,99% 是某个元素宽度超出 viewport。快速排查:* { outline: 1px solid red } 可视化所有元素边界,找到溢出元素。

Debug Tool
FLEXBOX

Flex 子项默认不收缩

min-width: auto 陷阱

Flexbox 默认 min-width: auto,意味着内容不会自动换行收缩,很容易在小屏幕撑破容器。给 flex 子项加 min-width: 0overflow: hidden 可解决。这是移动端「内容超出」最常见的技术原因。

Common Gotcha
FIXED HEIGHT

禁止固定高度容纳文字

height: 60px → 截断

含文字的元素不能用 height,必须用 min-height。文字翻译后会变长(德语/西语长 20–35%),固定高度会截断内容。按钮高度可以固定,因为按钮文字通常可控。

Critical for i18n
ZOOM

禁止禁用用户缩放

user-scalable=no

禁止用户缩放页面会让视力不好的用户无法阅读内容,WCAG 明确要求不得禁止。iOS 16+ Safari 已强制忽略这个设置,Android 仍有效 — 不要写 maximum-scale=1

WCAG Violation

Bad — 关键信息只在 hover 时显示

Choose Your Plan
Basic · $9/mo
Hover to see what's included
ℹ Details on hover
Pro · $29/mo
Hover to see what's included
ℹ Details on hover
← Mobile users can never see plan details. No tap alternative provided.
× 问题产品详情只通过 hover 工具提示展示。手机用户无法触发 hover,永远看不到对比信息,无法做购买决策。

Good — 信息默认可见,或有明确点击展开

Choose Your Plan
Basic · $9/mo
✓ 10 hours/month recording
✓ Basic transcription
✓ 1 device
POPULAR
Pro · $29/mo
✓ Unlimited recording
✓ AI speaker tagging
✓ 5 devices
✓ All details visible by default. No hover required.
✓ 正确所有关键信息默认展示,不依赖 hover。移动端用户打开即可完整比较两个方案,无需任何额外操作。

Bad — Flex 溢出导致横向滚动

Key Features
🎙
MEMS Microphone
Studio-grade clarity
🤖
AI Transcription
Real-time accuracy
🔋
32hr Battery
All-day endurance
← Flex items have min-width:120px. They overflow and cause horizontal scroll.
× 问题Flex 子项设了 min-width: 120px,三张卡片总宽度超出 375px 屏幕,撑出横向滚动条。用户会以为页面坏了。

Good — flex-wrap 或 grid 自动换行

Key Features
🎙
MEMS Mic
Studio-grade clarity
🤖
AI Transcription
Real-time accuracy
🔋
32hr Battery
All-day endurance
📱
MFi Certified
Apple compatible
✓ grid: 1fr 1fr. Fits any screen width. No overflow.
✓ 正确改用 grid-template-columns: 1fr 1fr,两列自适应宽度,无论屏幕多宽都不会溢出。内容更整齐,阅读更高效。
07 — Performance

页面性能

性能是隐形的 UX。加载慢不只是烦人 — Google 的 Core Web Vitals 直接影响搜索排名,而移动端网络比桌面端慢得多。

LCP
Good ≤2.5s
≤4s
Poor >4s
目标 ≤ 2.5s
INP
Good ≤200ms
≤500ms
Poor >500ms
目标 ≤ 200ms
CLS
Good ≤0.1
≤0.25
Poor >0.25
目标 ≤ 0.1
LCP IMAGE

Hero 图片优化

fetchpriority="high"

Hero 区域图片通常是 LCP 元素。加 loading="eager" + fetchpriority="high" 让浏览器优先加载。格式用 WebP(体积比 JPG 小 25–34%)。Shopify 正确写法是用 Liquid filter:{{ image | image_url: width: 375 }},不要用旧版 URL 参数 _375x(Dawn OS 2.0 已弃用)。在 .liquid 文件里通过 image_tag filter 传入 loading: 'eager', fetchpriority: 'high' 参数。

Critical
IMAGE SIZE

图片不压缩是最大杀手

3000px → 375px 显示

移动端按 375px 显示的图片,如果上传的是 3000px 宽 JPG,浏览器下载完整文件再缩小 — 浪费几十倍流量。Shopify 支持 image_url: width: 375 filter 自动输出正确尺寸。

Critical
VIDEO

视频自动播放三件套

autoplay muted playsinline

iOS Safari 默认禁止自动播放有声视频。要在 iPhone 上静音自动播放,必须同时加这三个属性。缺少 playsinline 会在 iPhone 上弹出全屏播放器,破坏页面布局。

Critical for iOS
CLS

图片必须声明宽高

width + height 属性

图片加载前没有声明尺寸,加载完成后会撑开页面导致内容跳动(CLS 差)。给所有 <img>widthheight 属性,浏览器提前预留空间。

Core Web Vitals
如何测量你们的 Core Web Vitals打开 Chrome → 访问 flowtica.ai → F12 → Lighthouse 面板 → 选「Mobile」设备 → 点「Analyze page load」。会给出 LCP / INP / CLS 的实测分数和具体改善建议。每次大改版后跑一次。
08 — Forms & Input

表单与输入

表单是转化的最后一步。移动端表单有几个独特的规范,违反任何一条都会大幅提高放弃率。

Bad — 只用 placeholder 代替 label

Get Early Access
Your name…
your@email.com…
Phone number…
← After typing, placeholder disappears. User forgets what field this is.
Submit
× 问题Placeholder 在用户输入后消失。填到一半忘记字段含义,尤其多字段表单中极常见。

Good — Label 在上方,placeholder 为辅助

Get Early Access
Full name
e.g. Alex Chen
Email address
your@email.com
✓ Label stays visible after typing. No confusion.
Submit
✓ 正确Label 始终可见,placeholder 只是格式提示。用户输入中途不会迷失。

键盘类型 — 正确的 input type / inputmode

Email
type="email"
q
w
e
r
t
y
@
a
s
d
.
space
return
电话号码
type="tel"
1
2
3
4
5
6
7
8
9
*
0
#
金额/小数
inputmode="decimal"
1
2
3
4
5
6
7
8
9
.
0
搜索
type="search"
q
w
e
r
t
y
a
s
d
f
g
space
Search
INPUT HEIGHT

输入框最小高度

≥ 44px

同触控目标原则。输入框点击区域也必须够大,否则用户难以准确点中。加 padding: 12px 16px 自然达到 44px 高度同时改善可读性。

Critical
AUTOCOMPLETE

开启自动填充

autocomplete 属性

给输入框加 autocomplete="email"autocomplete="name" 等属性,让浏览器/iOS 自动填充已保存的信息,大幅减少手机键盘输入量,提升结账转化率。

Conversion Win
09 — Internationalization

多语种排版规范

日语、德语、西班牙语都有专属的排版规范。英文设计师照搬英文规范到其他语种,是很多国际化页面翻车的根源。

🔴
固定宽度按钮是多语种的头号杀手德语「Add to Cart」→「In den Warenkorb legen」,长度近乎翻倍。width: 106px 的按钮在德语版会截断文字。所有按钮必须用 min-width + 自动撑开,或允许换行。

Bad — 固定宽度按钮遇到德语

Flowtica Scribe
KI-Aufnahmestift für professionelle Anwender.
In den Waren…
Mehr erfah…
← Text clipped. width: 90px is too narrow for German.
× 问题固定宽度按钮截断德语文字,用户无法看到完整 CTA,直接影响转化。

Good — min-width 自动撑开

Flowtica Scribe
KI-Aufnahmestift für professionelle Anwender.
In den Warenkorb
Mehr erfahren
✓ min-width + auto stretch. Full text visible.
✓ 正确按钮宽度自动适配内容长度,德语完整可读。
语言关键规范具体要求如果忽略
日语 最小字号 ≥ 14px(建议 15–16px)。日文汉字笔画密集,比英文需要更大字号才能清晰。 字符模糊不可读,尤其低 PPI 设备
日语 行高 1.7–1.9(比英文 1.5 更大)。日文字符高度接近,行间没有天然空隙。 文字密成一块,视觉极度不适
日语 断字规则 line-break: strict 处理标点禁则(句号、括号不能出现在行首)。 悬挂标点,日本用户觉得极度业余
日语 禁用 word-break: break-all 这个属性对英文有用,对日文会在错误位置断字,语义被切断。 词义被截断,不可读
德语 长单词断词 hyphens: auto + HTML 标签设 lang="de"。「Datenschutzerklärung」一个词能撑破移动端容器。 横向滚动条,布局破版
德语 内容长度 +30% 所有容纳文字的容器用 min-height,按钮用 min-width,绝不写死尺寸。 文字截断,CTA 不完整
德语 Eszett 大写 对德文用 text-transform: uppercase 前,确认字体支持 ẞ,否则 ß → SS,词义改变。 语义错误,专业度受损
西语 内容长度 +20% 同德语原则,用弹性宽度。「Subscribe」→「Suscribirse」,「Free Shipping」→「Envío gratuito」。 按钮文字截断或换行破坏布局
西语 倒置标点 ¡ ¿ 检查这两个字符在所用字体中的渲染高度,确认与首行其他字符对齐。 首行视觉错位,段落开头有「漂浮感」
所有语言 lang 属性 <html lang="ja"> / lang="de"> 必须随页面语言切换。影响断词、引号、hyphens 是否生效。 所有 CSS 断词规则全部失效
所有语言 图片内嵌文字 图片里的文字无法本地化。英文图片出现在日语页面上,品牌感和信任感受损。图文必须分离,文字用 HTML 叠加。 英文内容混入多语种页面
所有语言 字体字符集 Google Fonts 默认只加载 Latin 字符集。日语需要单独加载日文字体(文件体积大,需 font-display: swap)。 日语回退到系统字体,品牌感消失
10 — Accessibility & Edge Cases

无障碍 & 边缘情况

无障碍不只是服务残障用户 — 老年人、弱视用户、户外强光下的普通用户都会受益。这些规范同时也是很多国家的法律要求。

FONT SCALE

系统字体放大 200% 不破版

用 rem / em,不用 px

用户在系统无障碍设置里调大字体(老年用户常用),好的布局用相对单位自动适配。验证:Chrome DevTools → Rendering → Font size → 调到 200%,检查是否有文字溢出容器。

A11y
DARK MODE

深色模式适配

color-scheme: light

如果没有专门适配深色模式,至少在 <meta> 或 CSS 里声明 color-scheme: light,防止浏览器自动反转颜色导致白底白字(完全不可读)。

Prevent Disasters
ALT TEXT

图片 alt 文字

alt="描述性文字"

所有产品图片必须有有意义的 alt 属性。装饰性图片用 alt=""(空值,屏幕阅读器跳过)。Shopify 在后台上传图片时可以填写 alt 文字。

WCAG A
FOCUS STATE

键盘焦点样式

不能用 outline: none

很多设计师为了「好看」移除了 :focus 样式。这让使用键盘或辅助技术的用户完全看不出焦点在哪里。可以自定义焦点样式,但不能移除。

WCAG AA
LANDSCAPE

横屏模式不破版

测试横屏布局

将手机旋转到横屏,检查 Hero 高度是否过高挡住内容,固定底部元素是否占用太多屏幕空间。Hero 用 min-height 而非 height: 100vh 可避免横屏时全屏被占满。

Edge Case
RTL FUTURE

为 RTL 语言预留

逻辑属性

现在用逻辑属性(margin-inline-start 而非 margin-left),未来支持阿拉伯语/希伯来语时只需加一行 dir="rtl",不需要重写所有间距规则。

Future-Proof

Bad — 移除了焦点样式 (outline: none)

Quick Links
Product Overview
Technical Specs
Buy Now →
Keyboard / assistive nav:
Technical Specs [no visible focus]
← outline:none on :focus. Keyboard users can't tell where they are.
× 问题CSS 里加了 outline: none 去掉浏览器默认焦点框。键盘用户 Tab 切换时看不出当前焦点在哪个元素上,完全无法操作。

Good — 自定义清晰的焦点样式

Quick Links
Product Overview
Technical Specs
Buy Now →
Keyboard / assistive nav:
Technical Specs
✓ Custom 2px solid outline on :focus-visible. Clear, branded, accessible.
✓ 正确自定义 :focus-visible 样式:2px 深色实线描边 + 2px offset,既符合品牌视觉,又让键盘用户清晰看到当前位置。

Bad — 固定 px 单位,字体放大后溢出

系统字体放大 150% 后的效果
Buy Now
Learn More
⚠ Your cart has items waiting
Notification text overflow because height:32px is fix
← height: 32px fixed in px. At 150% font size, text clips.
× 问题容器高度用 height: 32px 固定。系统字体放大到 150% 后,文字超出容器被截断。老年用户或弱视用户常开启大字体。

Good — rem 相对单位,随系统字体自动缩放

系统字体放大 150% 后的效果
Buy Now
Learn More
⚠ Your cart has items waiting for checkout
Notification text wraps naturally inside min-height container
✓ min-height + padding in em. Text wraps, never clips.
✓ 正确min-height + padding: 0.5em 0.75em,容器随字体大小自动伸展。字体放大后文字自然换行,不截断。
快速无障碍检查工具Chrome 扩展「axe DevTools」或 Lighthouse 的 Accessibility 评分,可以自动扫描页面并列出违反 WCAG 标准的具体问题。建议每次大版本上线前跑一次,目标分数 ≥ 90。
11 — Launch Checklist

移动端上线 Checklist

每次推送新版本前,用这份清单过一遍。点击条目标记为已检查。A = 必须,B = 强烈建议,C = 加分项。

完成进度
0 / 26
触控 & 布局
所有可点击元素高度 ≥ 44px
重点:导航链接、Hero CTA、加购按钮、关闭图标、社交图标。Chrome DevTools Computed 面板查高度。
A 级
相邻可点击元素间距 ≥ 8px
数量加减按钮、轮播导航点、图标组 — 确保用户不会误触相邻目标。
A 级
页面左右边距 ≥ 16px
在 375px 宽度下,内容区域不得与屏幕边缘距离小于 16px。全出血图片除外。
A 级
无意外横向滚动条
375px 下横向滚动页面,不应出现水平滚动条。快速排查:* { outline: 1px solid red } 可视化所有元素边界。
A 级
所有图片有 max-width: 100%
防止图片撑破移动端布局。
A 级
图片声明了 width 和 height 属性
让浏览器提前预留空间,防止图片加载后内容跳动(CLS 差)。
B 级
字体 & 可读性
表单 input 字体 ≥ 16px
邮件订阅、结账表单、搜索框。低于 16px 触发 iOS Safari 自动放大。
A 级
正文行高 ≥ 1.5
DevTools Computed 查 line-height。段落不得低于 1.5,建议 1.6。日语建议 1.7–1.9。
B 级
正文对比度 ≥ 4.5:1
用 webaim.org 检测。重点:促销 banner 彩色文字、产品页描述、图片内嵌文字。
A 级
没有整段的全大写文字
text-transform: uppercase 只用于短标签(3个词以内),不用于段落或说明文字。
B 级
交互 & 操作系统
在 375px / 390px / 428px 三个宽度测试
Chrome DevTools → F12 → 设备模拟 → 手动输入宽度。覆盖主流 iPhone 尺寸。
A 级
Fixed/sticky 元素不遮挡内容
顶部固定导航、底部购物车栏、Smile.io 积分浮窗 — 确认不挡住正文内容或按钮。
B 级
iPhone 底部安全区 padding 已处理
底部固定 UI 需加 padding-bottom: env(safe-area-inset-bottom),防止 Home 指示条遮挡按钮。
B 级
Hover 信息有移动端替代方案
价格明细、尺寸说明、功能说明不能只靠 hover 显示。手机用户必须能通过点击或默认可见获取同等信息。
A 级
视频有 autoplay muted playsinline 三属性
缺少 playsinline 会在 iPhone 上弹出全屏播放器,破坏页面布局。
A 级(有视频时)
在真机上测试(不只是模拟器)
DevTools 模拟器不能模拟真实触控、Safari 渲染差异。用 shopify theme dev 本地 URL 在手机上打开测试。
B 级
表单
所有输入框有 label(不只是 placeholder)
Label 放在输入框上方,始终可见。Placeholder 只作为格式提示,不能替代 label。
A 级
input type 和 inputmode 正确设置
email → type="email",电话 → type="tel",金额 → inputmode="decimal"。弹出正确的键盘类型。
B 级
关键输入框有 autocomplete 属性
姓名、邮箱、地址字段加 autocomplete,减少用户手机输入量,提升结账转化率。
B 级
多语种(有多语种版本时)
HTML lang 属性随语言正确切换
<html lang="ja">lang="de">lang="es">。影响断词、引号、hyphens 是否生效。
A 级
按钮/容器无固定宽度(德语/西语 +20–35%)
所有含翻译文字的容器用 min-width / min-height,允许弹性伸缩。
A 级
德语启用 hyphens: auto 断词
长复合词如 Datenschutzerklärung 会撑破移动端容器。需要 hyphens: auto + lang="de"。
A 级(德语)
日语行高 ≥ 1.7,字号 ≥ 14px
日文字符密集,行高比英文更大才能可读。字号比英文最低标准更严格。
A 级(日语)
无障碍 & 性能
所有产品图片有有意义的 alt 文字
Shopify 后台上传图片时填写 alt。装饰性图片用 alt=""。
A 级
Lighthouse 无障碍评分 ≥ 90
F12 → Lighthouse → Accessibility → Analyze。每次大版本上线前跑一次。
B 级
横屏模式不破版
将手机旋转横屏,检查 Hero 高度是否过高,底部固定元素是否占用太多空间。
C 级