讨论

响应式Web应用开发计划生成器

来自 Wikiprompt,自由的提示词百科全书

Watson Charlie

2026年3月10日

响应式Web应用开发计划生成器 用于生成响应式Web应用详细、可执行开发计划的结构化系统提示,涵盖设计、性能、用户体验和架构。

提示词内容收藏

🌐
## 执行摘要 本计划采用移动优先、渐进增强的策略,构建一个响应式Web应用,以性能为核心,以设计系统为驱动。我们将使用React + TypeScript + Vite作为技术栈,配合Tailwind CSS v4(利用其CSS-first配置)和Radix UI原语,构建一个符合WCAG 2.1 AA标准、具备流畅动画和优雅暗色模式的应用。核心方法是通过8px基准间距、流体排版和容器查询实现自适应布局,同时通过代码分割、资源优化和GPU加速动画确保Core Web Vitals达标。该计划分为四个阶段:MVP功能、设计系统完善、性能优化和跨设备质量保障。 --- ## 1. 响应式策略 ### 断点策略(移动优先) | 断点 | 宽度 | 布局策略 | 理由 | |------|------|----------|------| | `base` | 320px–639px | 单列堆叠,底部导航栏,全宽触控目标 | 覆盖小型手机,最小可用宽度 | | `sm` | 640px–767px | 单列,顶部导航栏,卡片网格2列 | 大型手机/小型平板,利用额外宽度 | | `md` | 768px–1023px | 双列布局,侧边栏可折叠,卡片网格3列 | 平板,平衡内容密度与可读性 | | `lg` | 1024px–1439px | 三列布局,固定侧边栏,卡片网格4列 | 标准桌面,最大化信息展示 | | `xl` | 1440px+ | 最大内容宽度1440px,居中,卡片网格4–6列 | 大型显示器,防止内容过度拉伸 | **方法:** 移动优先。理由:目标用户中移动端流量占60%以上,强制优先考虑核心功能和性能,并通过渐进增强实现桌面端增强。 ### 布局系统 - **CSS Grid** 用于页面级布局(`grid-template-columns: repeat(12, 1fr)`),**Flexbox** 用于组件内部排列。 - **容器查询**(`@container`)用于卡片和面板,使其能够根据父容器而非视口进行自适应。 - **流体排版:** 使用 `clamp()` 函数:`font-size: clamp(1rem, 0.9rem + 0.5vw, 1.25rem)`,确保字号在320px到1440px之间平滑缩放。 ### 设备适配 - **安全区域:** 使用 `env(safe-area-inset-*)` 处理刘海屏和底部手势条,为固定元素添加 `padding-bottom: env(safe-area-inset-bottom)`。 - **动态视口单位:** 使用 `100dvh` 用于全屏容器,`100svh` 用于粘性页脚,`100lvh` 用于需要稳定高度的滚动容器。 - **触控目标:** 所有可交互元素最小为44×44px(移动端),桌面端最小为32×32px。 - **悬停状态:** 仅在 `(hover: hover)` 和 `(pointer: fine)` 媒体查询下启用,避免触控设备出现粘滞悬停。 - **键盘导航:** 实现可见焦点指示器(2px轮廓,偏移2px),支持Tab键顺序,使用 `:focus-visible` 伪类。 ### 图片优化 - **`srcset` 和 `sizes`:** 提供320w、640w、960w、1280w、1920w的图片,配合 `sizes="(max-width: 640px) 100vw, (max-width: 1024px) 50vw, 33vw"`。 - **艺术指导:** 使用 `<picture>` 元素为移动端提供裁剪版本(居中裁剪),为桌面端提供完整宽幅版本。 - **格式:** 使用WebP(支持率>95%),回退到JPEG;对图标使用SVG。 --- ## 2. 性能蓝图 ### 核心Web Vitals目标 | 指标 | 目标 | 达标策略 | |------|------|----------| | LCP | <2.5s(移动端3G网络) | 预加载关键资源,内联关键CSS,使用 `fetchpriority="high"` | | INP | <100ms | 最小化主线程工作,使用Web Workers处理数据解析,防抖输入处理 | | CLS | <0.1 | 为图片和嵌入内容预留尺寸,使用 `aspect-ratio` CSS属性,字体加载使用 `font-display: swap` | ### 加载策略 - **代码分割:** 使用React.lazy()按路由分割,将初始包控制在<170KB(gzip压缩后)。 - **懒加载:** 图片使用 `loading="lazy"`(首屏以上除外),IntersectionObserver用于滚动进入视口的组件。 - **资源优化:** 使用Vite的 `build.assetsInlineLimit`(默认4KB)内联小资源,使用 `vite-plugin-compression` 进行gzip/brotli预压缩。 - **预加载关键路径:** 预加载字体(`rel="preload"`)、首屏图片(`fetchpriority="high"`)和主CSS。 ### 渲染与动画 - **CSS Containment:** 在独立组件上使用 `content-visibility: auto` + `contain-intrinsic-size`,跳过视口外渲染。 - **GPU合成:** 仅对 `transform` 和 `opacity` 属性进行动画(避免 `top/left/width/height`),使用 `will-change: transform` 仅用于持续动画元素。 - **CSS Containment属性:** 在卡片、列表项和模态框上使用 `contain: layout paint`,隔离布局和绘制。 - **动画帧率:** 使用 `requestAnimationFrame` 进行JS驱动的动画,使用Web Animations API(WAAPI)实现高性能、可取消的动画。 ### 离线与降级 - **Service Worker:** 使用Workbox进行运行时缓存(图片、字体、API响应),采用Stale-While-Revalidate策略。 - **降级:** 如果WebGL不可用,回退到Canvas;如果Canvas不可用,回退到静态图片。如果JS被禁用,显示无脚本提示,并提供核心内容的静态HTML。 ### 工具 - **Lighthouse CI** 用于每次PR的预算检查(性能≥90,可访问性≥95)。 - **WebPageTest** 用于多位置、真实设备测试。 - **Bundle Analyzer**(`vite-bundle-visualizer`)用于包体积监控。 --- ## 3. 设计系统规范 ### 设计令牌架构 令牌分为三层:**原始令牌**(原始值)、**语义令牌**(用途)、**组件令牌**(组件特定)。使用CSS自定义属性(`@theme` 在Tailwind v4中)实现运行时主题切换。 ### 色彩策略 **基础调色板(原始令牌):** - 中性色:`--color-gray-50` 至 `--color-gray-950`(10阶,冷色调) - 品牌色:`--color-primary-500`(#4F46E5,靛蓝),`--color-primary-600`(#4338CA) - 强调色:`--color-accent-500`(#F59E0B,琥珀色),用于关键操作 - 语义色:`--color-success`(#10B981),`--color-error`(#EF4444),`--color-warning`(#F59E0B),`--color-info`(#3B82F6) **语义令牌(浅色/暗色模式):** | 令牌 | 浅色 | 暗色 | |------|------|------| | `--bg-primary` | `#FFFFFF` | `#0F172A` | | `--bg-secondary` | `#F8FAFC` | `#1E293B` | | `--text-primary` | `#0F172A` | `#F1F5F9` | | `--text-secondary` | `#475569` | `#94A3B8` | | `--border-default` | `#E2E8F0` | `#334155` | **对比度:** 所有文本/背景组合≥4.5:1(AA),大文本(≥18pt)≥3:1。暗色模式使用 `color-scheme: dark` 确保原生控件适配。 ### 字体排印 - **正文字体:** Inter(可变字体),`font-feature-settings: "cv11"` 优化屏幕显示。理由:x-height高,数字清晰,在320px宽度下可读性好。 - **标题字体:** 使用相同的Inter字体,通过字重(600–800)和字距(`-0.02em`)区分层级,避免额外的字体请求。 - **字体加载:** 使用 `font-display: swap` 预加载,使用 `size-adjust` 和 `ascent-override` 防止CLS。 **字号比例(流体):** | 层级 | 移动端 | 桌面端 | 字重 | |------|--------|--------|------| | 标题1 | `clamp(1.5rem, 1.2rem + 1vw, 2.5rem)` | 2.5rem | 700 | | 标题2 | `clamp(1.25rem, 1rem + 0.8vw, 2rem)` | 2rem | 600 | | 标题3 | `clamp(1.125rem, 1rem + 0.5vw, 1.5rem)` | 1.5rem | 600 | | 正文 | `clamp(0.875rem, 0.85rem + 0.2vw, 1rem)` | 1rem | 400 | | 小字 | `0.875rem` | 0.875rem | 400 | ### 间距与圆角 - **间距比例:** 8px基准:`4, 8, 12, 16, 24, 32, 48, 64, 96`(对应Tailwind的 `1, 2, 3, 4, 6, 8, 12, 16, 24`)。 - **圆角:** 4px(输入框/按钮)、8px(卡片)、12px(模态框/面板)、999px(胶囊/标签)。理由:4px用于小控件保持精确,8px+用于大容器营造亲和感。 ### 阴影与层级 | 层级 | 阴影令牌 | 用途 | |------|----------|------| | 1 | `0 1px 2px rgba(0,0,0,0.05)` | 静态卡片 | | 2 | `0 4px 6px -1px rgba(0,0,0,0.1)` | 悬停状态 | | 3 | `0 10px 15px -3px rgba(0,0,0,0.1)` | 下拉菜单 | | 4 | `0 20px 25px -5px rgba(0,0,0,0.15)` | 模态框 | 暗色模式使用更高的透明度值(`rgba(0,0,0,0.3)`+)以保持深度感知。 ### 动效令牌 | 令牌 | 值 | 用途 | |------|-----|------| | `--ease-out` | `cubic-bezier(0.16, 1, 0.3, 1)` | 元素进入(模态框、下拉菜单) | | `--ease-in-out` | `cubic-bezier(0.65, 0, 0.35, 1)` | 状态切换 | | `--duration-fast` | 150ms | 悬停、按钮反馈 | | `--duration-base` | 250ms | 折叠/展开、下拉菜单 | | `--duration-slow` | 400ms | 模态框、页面过渡 | ### 图标与插画 - **图标:** 使用Lucide图标(一致笔画宽度1.5px,几何风格),通过SVG sprite内联,支持 `currentColor` 实现主题适配。 - **插画:** 使用抽象几何风格,基于品牌色(靛蓝/琥珀色),避免照片写实风格。所有插画必须包含 `role="img"` 和 `aria-label`。 ### 组件一致性 - 所有按钮:最小高度44px(移动端),圆角8px,内边距16px水平/12px垂直。 - 所有输入框:边框1px,聚焦时2px品牌色边框,标签始终可见(不使用占位符作为标签)。 - 所有卡片:圆角8px,边框1px,内边距24px,阴影层级1。 --- ## 4. UX/UI模式库计划 ### 层级与可扫描性 - **F型布局** 用于仪表盘/列表页:标题 → 筛选器 → 内容列表,关键操作在右上角。 - **Z型布局** 用于营销/落地页:Logo → 导航 → 行动号召 → 内容 → 行动号召。 - **视觉权重:** 使用字号(标题2 vs 正文)、颜色(品牌色 vs 灰色)和间距(48px vs 24px)建立层级。 - **留白策略:** 内容块之间使用32px,卡片内使用24px,元素组之间使用16px。 ### 反馈与可发现性 - **加载状态:** 骨架屏(灰色脉冲块,匹配最终布局)用于数据获取;按钮加载时使用Spinner(16px,旋转)。 - **微交互:** 按钮按下时缩放至0.98,开关切换时颜色过渡150ms,列表项悬停时背景色变化。 - **错误状态:** 内联错误信息(红色文本+图标),位于字段下方,并附有可操作的修复建议(例如“请输入有效的邮箱地址”)。 ### 导航模式 - **移动端(<768px):** 底部导航栏(4–5个图标+标签,44px高),汉堡菜单用于二级导航。 - **平板(768–1023px):** 顶部导航栏 + 可折叠侧边栏(通过汉堡按钮切换)。 - **桌面端(≥1024px):** 固定左侧边栏(240px宽),顶部面包屑导航。 - **面包屑:** 用于层级页面,显示“首页 / 父级 / 当前”,并在最后一级使用 `aria-current="page"`。 ### 可访问性清单(WCAG 2.1 AA) - 所有图片使用 `alt` 文本,装饰性图片使用 `aria-hidden="true"`。 - 所有表单字段使用 `<label>` 关联,错误信息使用 `aria-describedby`。 - 模态框使用焦点陷阱(Tab循环),打开时聚焦到模态框,关闭时返回触发元素。 - 使用 `aria-live="polite"` 播报动态内容更新(例如购物车数量)。 - 所有颜色组合对比度≥4.5:1。 - 支持 `prefers-reduced-motion`:禁用非必要动画,替换为淡入淡出效果。 ### 表单与输入 - **输入类型:** 根据设备使用 `type="email"`、`type="tel"`、`type="number"`、`inputmode="numeric"` 调出正确的键盘。 - **验证:** 失焦时验证,输入时实时校验(防抖300ms),提交时全面验证。 - **自动填充:** 使用 `autocomplete="name"`、`autocomplete="email"` 等标准值,确保浏览器自动填充正确。 - **内联错误:** 字段下方显示红色文本+图标,输入框边框变红,错误信息通过 `aria-live` 播报。 ### 动效设计 - **目的:** 动效用于引导注意力(新内容高亮)、提供反馈(按钮状态)和建立空间关系(模态框从底部滑入)。 - **时长:** 微交互150ms,下拉菜单250ms,模态框400ms。 - **缓动:** 进入使用 `--ease-out`,退出使用 `--ease-in`,持续动画使用 `--ease-in-out`。 - **减少动效:** 在 `prefers-reduced-motion: reduce` 下,将所有动画时长设为0ms或仅保留透明度过渡。 ### 空状态与边缘情况 - **零数据:** 显示插画+标题+描述+行动号召按钮(例如“暂无项目,点击创建第一个”)。 - **错误:** 显示错误图标+友好信息+“重试”按钮+“联系支持”链接。 - **超时:** 显示“请求超时”+“重试”按钮,自动重试最多3次(指数退避)。 - **权限拒绝:** 显示解释+“如何启用权限”的步骤+“设置”按钮(链接到浏览器设置)。 --- ## 5. 技术架构 ### 技术栈 | 层 | 技术 | 理由 | |----|------|------| | 框架 | React 19 + TypeScript 5 | 生态成熟,类型安全,React 19的 `use()` Hook优化数据获取 | | 构建工具 | Vite 6 | 开发服务器极快(HMR<50ms),生产构建优化 | | CSS | Tailwind CSS v4 | CSS-first配置(无JS配置文件),原生CSS变量主题,内置容器查询 | | UI原语 | Radix UI | 无头组件,完全可访问(焦点管理、ARIA),样式自由 | | 状态管理 | Zustand | 轻量(<1KB),无样板代码,支持选择器避免不必要重渲染 | | 数据获取 | TanStack Query v5 | 缓存、重试、乐观更新,内置加载/错误状态 | | 路由 | React Router v7 | 声明式路由,支持代码分割和嵌套布局 | | 测试 | Vitest + Testing Library + Playwright | 单元测试、组件测试、端到端测试和视觉回归测试 | ### 组件架构(原子设计) ``` src/ ├── components/ │ ├── ui/ # 原子:Button, Input, Badge, Icon │ ├── composite/ # 分子:SearchBar, UserCard, FilterPanel │ ├── layout/ # 组织:Header, Sidebar, Footer, Container │ └── pages/ # 模板:DashboardPage, SettingsPage ├── hooks/ # 自定义Hooks:useMediaQuery, useLocalStorage ├── lib/ # 工具函数:formatters, validators ├── stores/ # Zustand stores ├── styles/ # 全局CSS,设计令牌 └── types/ # TypeScript类型定义 ``` ### 主题系统 - 使用CSS自定义属性(`@theme`)定义设计令牌。 - 通过 `data-theme="dark"` 属性在 `<html>` 元素上切换主题。 - 使用 `prefers-color-scheme` 媒体查询自动检测系统主题,并允许用户手动覆盖(存储在localStorage中)。 - 所有组件仅引用语义令牌(`var(--bg-primary)`),不引用原始令牌。 ### CSS策略 - **Tailwind CSS v4** 用于实用类(布局、间距、排版)。 - **CSS Modules** 用于复杂组件样式(伪元素、关键帧动画)。 - **全局CSS** 用于设计令牌、基础样式(重置、字体)和全局过渡。 ### 测试策略 - **单元测试(Vitest):** 测试工具函数、Hooks、状态逻辑。 - **组件测试(Testing Library):** 测试渲染、交互、可访问性(使用 `jest-axe`)。 - **端到端测试(Playwright):** 在以下视口测试关键用户流程: - 移动端:iPhone SE(375×667)、iPhone 14 Pro(393×852)、Pixel 7(412×915) - 平板:iPad Mini(768×1024)、iPad Pro(1024×1366) - 桌面端:1366×768、1920×1080 - **视觉回归:** 使用Chromatic或Percy,在每次PR时对比基线截图。 --- ## 6. 分阶段推出计划 ### 第一阶段:MVP(第1–3周) **目标:** 核心功能在移动端和桌面端可用。 - 搭建Vite + React + TS + Tailwind项目。 - 实现设计令牌基础(颜色、间距、字体)。 - 构建核心布局(移动端底部导航,桌面端侧边栏)。 - 实现核心页面(仪表盘、列表页、详情页)。 - 实现基础表单验证和错误状态。 - 配置CI(Lint、类型检查、单元测试)。 **完成标准:** 核心用户流程在移动端和桌面端可用,Lighthouse性能≥70。 ### 第二阶段:设计系统完善(第4–5周) **目标:** 视觉一致性,暗色模式,动效。 - 实现完整的语义令牌(暗色模式)。 - 构建组件库(按钮、输入框、卡片、模态框、下拉菜单)。 - 实现动效令牌和过渡。 - 实现骨架屏和加载状态。 - 实现空状态和错误状态。 - 添加图标系统(SVG sprite)。 **完成标准:** 所有组件符合设计规范,暗色模式无对比度问题,动效流畅(60fps)。 ### 第三阶段:性能优化(第6–7周) **目标:** 达到Core Web Vitals目标。 - 实现代码分割(路由级懒加载)。 - 实现图片优化(srcset、懒加载、预加载关键图片)。 - 实现Service Worker(运行时缓存)。 - 优化字体加载(预加载、font-display)。 - 添加CSS containment和content-visibility。 - 使用Lighthouse CI设置性能预算。 **完成标准:** LCP<2.5s,INP<100ms,CLS<0.1,Lighthouse性能≥90。 ### 第四阶段:跨设备质量保障(第8周) **目标:** 在所有目标设备上实现无缺陷体验。 - 在真实设备上测试(BrowserStack或本地设备实验室)。 - 修复触摸目标、安全区域、动态视口问题。 - 在暗色/浅色模式下进行可访问性审计(axe-core)。 - 键盘导航测试(无鼠标操作)。 - 减少动效测试(`prefers-reduced-motion`)。 - 离线模式测试。 **完成标准:** 所有Playwright测试通过,axe审计零严重问题,手动设备测试清单全部通过。 --- ## 7. 发布前质量检查清单 ### 响应式 - [ ] 在320px、375px、768px、1024px、1440px、1920px宽度下无水平滚动。 - [ ] 所有触控目标≥44×44px(移动端)。 - [ ] 安全区域(刘海屏、底部手势条)已处理。 - [ ] 图片在所有断点下清晰且无变形。 - [ ] 字体在所有断点下可读(无截断、无重叠)。 ### 性能 - [ ] LCP < 2.5s(移动端3G网络模拟)。 - [ ] INP < 100ms(Playwright性能追踪)。 - [ ] CLS < 0.1(Lighthouse)。 - [ ] 初始包 < 170KB gzip。 - [ ] 所有图片使用WebP格式,并设置 `srcset`。 - [ ] Service Worker已注册并缓存核心资源。 ### 可访问性 - [ ] 所有图片有 `alt` 文本。 - [ ] 所有表单字段有 `<label>`。 - [ ] 模态框有焦点陷阱和正确的 `aria-labelledby`。 - [ ] 所有颜色组合对比度≥4.5:1。 - [ ] 键盘可访问所有功能(Tab顺序逻辑清晰)。 - [ ] `prefers-reduced-motion` 已支持。 ### 功能 - [ ] 所有表单验证正常工作(内联错误、提交阻止)。 - [ ] 空状态、错误状态、超时状态均已处理。 - [ ] 暗色模式切换持久化(localStorage)。 - [ ] 离线模式显示降级提示。 ### 视觉 - [ ] 所有组件符合设计令牌(颜色、间距、圆角)。 - [ ] 暗色模式下无“刺眼”对比度问题。 - [ ] 动画流畅(无卡顿、无闪烁)。 - [ ] 图标在所有尺寸下清晰(无模糊、无像素化)。

登录以查看完整提示词

继续使用:

登录即表示你同意我们的 使用条款 和 隐私政策

用法

此提示词专为 coding 设计。复制上方内容并粘贴到你常用的 AI 工具中。

为获得最佳效果,可将占位符(方括号或大写字母标示)替换为你的具体需求。

参考资料

分类:coding| prompts.chat| responsive-design| web-development

讨论