webdesign-5
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseModern Web Design
现代网页设计
Overview
概述
Modern web design in 2024-2025 emphasizes performance, accessibility, and meaningful interactions. This skill provides comprehensive guidance on current design trends, implementation patterns, and best practices for creating engaging, accessible, and performant web experiences.
This meta-skill synthesizes knowledge from all animation, interaction, and 3D skills in this repository to provide holistic design guidance.
2024-2025年的现代网页设计强调性能、无障碍性和有意义的交互。本技能提供关于当前设计趋势、实现模式以及创建引人入胜、无障碍且高性能网页体验的最佳实践的全面指导。
此元技能整合了本仓库中所有动画、交互和3D技能的知识,以提供整体设计指导。
Core Design Principles (2024-2025)
核心设计原则(2024-2025)
1. Performance-First Design
1. 性能优先设计
Philosophy: Design decisions should prioritize Core Web Vitals and user experience on all devices.
Key Metrics:
- Largest Contentful Paint (LCP): < 2.5s
- First Input Delay (FID): < 100ms
- Cumulative Layout Shift (CLS): < 0.1
- Interaction to Next Paint (INP): < 200ms
Implementation Guidelines:
- Defer non-critical animations until after page load
- Use CSS transforms/opacity for animations (GPU-accelerated)
- Implement lazy loading for images, videos, and 3D content
- Progressive enhancement: core content without JavaScript
Related Skills: , , for optimized animations
scroll-animation-3animation4animation2理念:设计决策应优先考虑Core Web Vitals和全设备用户体验。
关键指标:
- Largest Contentful Paint (LCP): < 2.5s
- First Input Delay (FID): < 100ms
- Cumulative Layout Shift (CLS): < 0.1
- Interaction to Next Paint (INP): < 200ms
实施指南:
- 延迟非关键动画至页面加载完成后
- 使用CSS transforms/opacity实现动画(GPU加速)
- 为图片、视频和3D内容实现懒加载
- 渐进式增强:无JavaScript时仍可访问核心内容
相关技能: , , (用于优化动画)
scroll-animation-3animation4animation22. Bold Minimalism
2. 大胆极简主义
Characteristics:
- Large, impactful typography (clamp() for fluid sizing)
- Ample white space (negative space as design element)
- Limited color palettes (3-5 primary colors)
- Intentional use of bold accent colors
- Geometric shapes and clean lines
Typography Scale (Modern fluid system):
css
/* Fluid typography using clamp() */
--font-size-xs: clamp(0.75rem, 0.7rem + 0.25vw, 0.875rem);
--font-size-sm: clamp(0.875rem, 0.8rem + 0.375vw, 1rem);
--font-size-base: clamp(1rem, 0.9rem + 0.5vw, 1.25rem);
--font-size-lg: clamp(1.25rem, 1.1rem + 0.75vw, 1.75rem);
--font-size-xl: clamp(1.75rem, 1.5rem + 1.25vw, 2.5rem);
--font-size-2xl: clamp(2.5rem, 2rem + 2.5vw, 4rem);
--font-size-3xl: clamp(3.5rem, 2.5rem + 5vw, 6rem);Color System (Accessibility-first):
css
/* WCAG AAA compliant color system */
--color-primary: oklch(50% 0.2 250); /* Blue */
--color-accent: oklch(65% 0.25 30); /* Coral */
--color-neutral-50: oklch(98% 0 0);
--color-neutral-900: oklch(20% 0 0);
/* Contrast ratio: minimum 7:1 for text */Related Skills: for UI components
webdesign-4特征:
- 大尺寸、有冲击力的排版(使用clamp()实现流体尺寸)
- 充足的留白(将负空间作为设计元素)
- 有限的调色板(3-5种主色调)
- 刻意使用醒目的强调色
- 几何形状与简洁线条
排版比例(现代流体系统):
css
/* Fluid typography using clamp() */
--font-size-xs: clamp(0.75rem, 0.7rem + 0.25vw, 0.875rem);
--font-size-sm: clamp(0.875rem, 0.8rem + 0.375vw, 1rem);
--font-size-base: clamp(1rem, 0.9rem + 0.5vw, 1.25rem);
--font-size-lg: clamp(1.25rem, 1.1rem + 0.75vw, 1.75rem);
--font-size-xl: clamp(1.75rem, 1.5rem + 1.25vw, 2.5rem);
--font-size-2xl: clamp(2.5rem, 2rem + 2.5vw, 4rem);
--font-size-3xl: clamp(3.5rem, 2.5rem + 5vw, 6rem);色彩系统(无障碍优先):
css
/* WCAG AAA compliant color system */
--color-primary: oklch(50% 0.2 250); /* Blue */
--color-accent: oklch(65% 0.25 30); /* Coral */
--color-neutral-50: oklch(98% 0 0);
--color-neutral-900: oklch(20% 0 0);
/* Contrast ratio: minimum 7:1 for text */相关技能: (用于UI组件)
webdesign-43. Micro-Interactions
3. 微交互
Definition: Small, purposeful animations that provide feedback, guide users, and enhance perceived performance.
Categories:
a) Hover States (Desktop):
- Scale transformations (1.05-1.1x)
- Color transitions (200-300ms)
- Shadow depth changes
- Cursor transformations
b) Loading States:
- Skeleton screens (better than spinners)
- Progressive image loading (blur-up technique)
- Optimistic UI updates
- Staggered content reveals
c) Interactive Feedback:
- Button press states (scale down 0.95x)
- Toggle switches with spring physics
- Form field validation (immediate, kind feedback)
- Success/error states with motion
Implementation Example (Framer Motion):
jsx
// Button with micro-interaction
<motion.button
whileHover={{ scale: 1.05, y: -2 }}
whileTap={{ scale: 0.95 }}
transition={{ type: "spring", stiffness: 400, damping: 17 }}
>
Click me
</motion.button>Related Skills: , , for micro-interactions
animation4animation3animejs定义: 小型、有目的性的动画,用于提供反馈、引导用户并提升感知性能。
分类:
a) 悬停状态(桌面端):
- 缩放变换(1.05-1.1倍)
- 颜色过渡(200-300ms)
- 阴影深度变化
- 光标变换
b) 加载状态:
- 骨架屏(优于加载 spinner)
- 渐进式图片加载(模糊加载技术)
- 乐观UI更新
- 交错内容展示
c) 交互反馈:
- 按钮按压状态(缩小至0.95倍)
- 带弹簧物理效果的切换开关
- 表单字段验证(即时、友好的反馈)
- 带动效的成功/错误状态
实现示例(Framer Motion):
jsx
// Button with micro-interaction
<motion.button
whileHover={{ scale: 1.05, y: -2 }}
whileTap={{ scale: 0.95 }}
transition={{ type: "spring", stiffness: 400, damping: 17 }}
>
Click me
</motion.button>相关技能: , , (用于微交互)
animation4animation3animejs4. Scrollytelling
4. 滚动叙事
Definition: Narrative-driven experiences where content reveals and transforms as the user scrolls.
Patterns:
a) Scroll-Triggered Reveals:
- Fade-in on scroll entry (with offset)
- Slide-in from sides with stagger
- Scale + opacity transitions
- Clip-path reveals
b) Scroll-Linked Animations:
- Parallax layers (different scroll speeds)
- Horizontal scrolling sections
- Pinned sections with scrubbing animations
- 3D object rotation tied to scroll
c) Progress Indicators:
- Reading progress bars
- Step-by-step visual guides
- Animated SVG paths following scroll
Implementation Example (GSAP ScrollTrigger):
javascript
// Scroll-linked 3D rotation
gsap.to(".cube", {
scrollTrigger: {
trigger: ".section",
start: "top top",
end: "bottom top",
scrub: 1, // Smooth scrubbing
},
rotationY: 360,
ease: "none"
});Related Skills: , , , for 3D scrollytelling
scroll-animation-3scroll-animation-2scroll-animation3d-effekt-7定义: 以叙事为驱动的体验,用户滚动时内容逐步展示并变换。
模式:
a) 滚动触发展示:
- 滚动进入时淡入(带偏移量)
- 从侧边滑入并交错展示
- 缩放+透明度过渡
- 裁剪路径展示
b) 滚动关联动画:
- 视差图层(不同滚动速度)
- 横向滚动区域
- 固定区域与 scrubbing 动画
- 与滚动绑定的3D对象旋转
c) 进度指示器:
- 阅读进度条
- 分步视觉引导
- 跟随滚动的动画SVG路径
实现示例(GSAP ScrollTrigger):
javascript
// Scroll-linked 3D rotation
gsap.to(".cube", {
scrollTrigger: {
trigger: ".section",
start: "top top",
end: "bottom top",
scrub: 1, // Smooth scrubbing
},
rotationY: 360,
ease: "none"
});相关技能: , , , (用于3D滚动叙事)
scroll-animation-3scroll-animation-2scroll-animation3d-effekt-75. Cursor UX
5. 光标UX
Evolution: Custom cursors that enhance interaction and provide contextual feedback.
Patterns:
a) Custom Cursor Shapes:
- Circle/dot followers (delayed with easing)
- Text-based cursors ("View", "Drag", "Click")
- Blend modes for visual interest
- Scale/morph on hover
b) Contextual Transformations:
- Expand on links/buttons
- Magnetic attraction to interactive elements
- Color inversion over images
- Custom icons for actions (play, zoom, expand)
c) Performance Considerations:
- Use CSS transforms only (no top/left)
- RequestAnimationFrame for JS cursors
- Disable on mobile/touch devices
- Respect
prefers-reduced-motion
Implementation Example:
javascript
// Simple smooth cursor follower
const cursor = document.querySelector('.cursor');
let mouseX = 0, mouseY = 0;
let cursorX = 0, cursorY = 0;
document.addEventListener('mousemove', (e) => {
mouseX = e.clientX;
mouseY = e.clientY;
});
function updateCursor() {
// Smooth easing
cursorX += (mouseX - cursorX) * 0.1;
cursorY += (mouseY - cursorY) * 0.1;
cursor.style.transform = `translate(${cursorX}px, ${cursorY}px)`;
requestAnimationFrame(updateCursor);
}
updateCursor();Related Skills: (for easing), (for React cursor components)
scroll-animation-3animation4演进: 自定义光标可增强交互并提供上下文反馈。
模式:
a) 自定义光标形状:
- 圆形/点状跟随器(带延迟和缓动效果)
- 基于文本的光标("View"、"Drag"、"Click")
- 混合模式提升视觉趣味
- 悬停时缩放/变形
b) 上下文变换:
- 链接/按钮上的光标放大
- 对交互元素的磁吸效果
- 图片上的颜色反转
- 对应操作的自定义图标(播放、缩放、展开)
c) 性能考量:
- 仅使用CSS transforms(不使用top/left)
- 为JS光标使用RequestAnimationFrame
- 在移动/触摸设备上禁用自定义光标
- 尊重设置
prefers-reduced-motion
实现示例:
javascript
// Simple smooth cursor follower
const cursor = document.querySelector('.cursor');
let mouseX = 0, mouseY = 0;
let cursorX = 0, cursorY = 0;
document.addEventListener('mousemove', (e) => {
mouseX = e.clientX;
mouseY = e.clientY;
});
function updateCursor() {
// Smooth easing
cursorX += (mouseX - cursorX) * 0.1;
cursorY += (mouseY - cursorY) * 0.1;
cursor.style.transform = `translate(${cursorX}px, ${cursorY}px)`;
requestAnimationFrame(updateCursor);
}
updateCursor();相关技能: (用于缓动), (用于React光标组件)
scroll-animation-3animation46. Glassmorphism & Depth
6. 玻璃态设计与层次感
Characteristics:
- Frosted glass effect (backdrop-filter)
- Layered UI with depth hierarchy
- Subtle shadows and borders
- Translucent backgrounds
Modern Glassmorphism (2024):
css
.glass-card {
background: rgba(255, 255, 255, 0.1);
backdrop-filter: blur(10px) saturate(180%);
border: 1px solid rgba(255, 255, 255, 0.2);
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
border-radius: 16px;
}Depth System (Layering):
css
/* Elevation scale */
--elevation-1: 0 1px 3px rgba(0,0,0,0.12);
--elevation-2: 0 4px 8px rgba(0,0,0,0.15);
--elevation-3: 0 8px 16px rgba(0,0,0,0.18);
--elevation-4: 0 16px 32px rgba(0,0,0,0.2);Related Skills: for glassmorphic components
webdesign-4特征:
- 磨砂玻璃效果(backdrop-filter)
- 带深度层级的分层UI
- 柔和阴影与边框
- 半透明背景
现代玻璃态设计(2024):
css
.glass-card {
background: rgba(255, 255, 255, 0.1);
backdrop-filter: blur(10px) saturate(180%);
border: 1px solid rgba(255, 255, 255, 0.2);
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
border-radius: 16px;
}深度系统(分层):
css
/* Elevation scale */
--elevation-1: 0 1px 3px rgba(0,0,0,0.12);
--elevation-2: 0 4px 8px rgba(0,0,0,0.15);
--elevation-3: 0 8px 16px rgba(0,0,0,0.18);
--elevation-4: 0 16px 32px rgba(0,0,0,0.2);相关技能: (用于玻璃态组件)
webdesign-47. AI-Enhanced Personalization
7. AI增强个性化
Patterns:
a) Adaptive Content:
- Dynamic layout based on user behavior
- Personalized content recommendations
- Adaptive color schemes (system preference + user history)
- Smart defaults based on context
b) Intelligent Interactions:
- Predictive search with instant results
- Smart form completion
- Context-aware suggestions
- Progressive disclosure based on usage
c) Performance + Privacy:
- Client-side personalization (localStorage, IndexedDB)
- Edge computing for fast personalization
- Privacy-preserving analytics
- Transparent data usage
Implementation Considerations:
- Fallback to default experience
- No layout shift from personalization
- Respect "Do Not Track"
- GDPR/CCPA compliance
模式:
a) 自适应内容:
- 基于用户行为的动态布局
- 个性化内容推荐
- 自适应配色方案(系统偏好+用户历史)
- 基于上下文的智能默认值
b) 智能交互:
- 带即时结果的预测搜索
- 智能表单填充
- 上下文感知建议
- 基于使用情况的渐进式披露
c) 性能+隐私:
- 客户端个性化(localStorage、IndexedDB)
- 边缘计算实现快速个性化
- 隐私保护分析
- 透明的数据使用
实施考量:
- 回退至默认体验
- 个性化内容不导致布局偏移
- 尊重"Do Not Track"设置
- 符合GDPR/CCPA合规要求
Common Design Patterns
常见设计模式
Pattern 1: Immersive Hero Section
模式1:沉浸式Hero区域
Use Case: Landing pages, product launches, portfolio sites
Characteristics:
- Full viewport height
- Subtle 3D background or animated gradient
- Large headline with fluid typography
- Smooth scroll indicator
- Parallax on scroll exit
Implementation (Combined approach):
HTML Structure:
html
<section class="hero">
<div id="bg-canvas"></div>
<div class="hero__content">
<h1 class="hero__title">Modern Design</h1>
<p class="hero__subtitle">Performance meets beauty</p>
<button class="hero__cta">Explore</button>
</div>
<div class="scroll-indicator">
<span>Scroll</span>
</div>
</section>Technologies:
- Background: Vanta.js WAVES effect ()
3d-effekt-8 - Text animation: GSAP SplitText with stagger ()
scroll-animation-3 - Button: Framer Motion hover states ()
animation4 - Scroll indicator: CSS animation + GSAP fade out on scroll
Related Skills: , ,
3d-effekt-8scroll-animation-3animation4适用场景: 着陆页、产品发布、作品集网站
特征:
- 全屏视窗高度
- 柔和3D背景或渐变动画
- 大尺寸标题搭配流体排版
- 平滑滚动指示器
- 滚动退出时的视差效果
实现(组合方案):
HTML结构:
html
<section class="hero">
<div id="bg-canvas"></div>
<div class="hero__content">
<h1 class="hero__title">Modern Design</h1>
<p class="hero__subtitle">Performance meets beauty</p>
<button class="hero__cta">Explore</button>
</div>
<div class="scroll-indicator">
<span>Scroll</span>
</div>
</section>技术:
- 背景:Vanta.js WAVES效果 ()
3d-effekt-8 - 文本动画:GSAP SplitText搭配交错效果 ()
scroll-animation-3 - 按钮:Framer Motion悬停状态 ()
animation4 - 滚动指示器:CSS动画+GSAP滚动时淡出
相关技能: , ,
3d-effekt-8scroll-animation-3animation4Pattern 2: Horizontal Scroll Gallery
模式2:横向滚动画廊
Use Case: Portfolio work, product showcases, case studies
Implementation (GSAP ScrollTrigger):
javascript
gsap.to(".gallery__track", {
x: () => -(document.querySelector(".gallery__track").scrollWidth - window.innerWidth),
ease: "none",
scrollTrigger: {
trigger: ".gallery",
pin: true,
scrub: 1,
end: () => "+=" + document.querySelector(".gallery__track").scrollWidth
}
});Enhancements:
- Lazy load images as they scroll into view
- Parallax within cards
- Scale transformation on active card
- Smooth momentum scrolling with Locomotive
Related Skills: ,
scroll-animation-3scroll-animation-2适用场景: 作品集展示、产品陈列、案例研究
实现(GSAP ScrollTrigger):
javascript
gsap.to(".gallery__track", {
x: () => -(document.querySelector(".gallery__track").scrollWidth - window.innerWidth),
ease: "none",
scrollTrigger: {
trigger: ".gallery",
pin: true,
scrub: 1,
end: () => "+=" + document.querySelector(".gallery__track").scrollWidth
}
});增强功能:
- 图片滚动进入视野时懒加载
- 卡片内的视差效果
- 激活卡片时的缩放变换
- 使用Locomotive实现平滑动量滚动
相关技能: ,
scroll-animation-3scroll-animation-2Pattern 3: 3D Product Viewer
模式3:3D产品查看器
Use Case: E-commerce, product marketing, showcases
Implementation (React Three Fiber):
jsx
import { Canvas } from '@react-three/fiber'
import { OrbitControls, useGLTF } from '@react-three/drei'
function ProductViewer() {
return (
<Canvas camera={{ position: [0, 0, 5], fov: 50 }}>
<ambientLight intensity={0.5} />
<spotLight position={[10, 10, 10]} angle={0.15} />
<Product />
<OrbitControls
enableZoom={false}
autoRotate
autoRotateSpeed={2}
/>
</Canvas>
)
}Enhancements:
- Material variants (color picker)
- Hotspots with annotations
- AR mode on mobile
- Screenshot/share functionality
Related Skills: , ,
3d-effekt-73d-effekt-4model-viewer-component适用场景: 电商、产品营销、展示
实现(React Three Fiber):
jsx
import { Canvas } from '@react-three/fiber'
import { OrbitControls, useGLTF } from '@react-three/drei'
function ProductViewer() {
return (
<Canvas camera={{ position: [0, 0, 5], fov: 50 }}>
<ambientLight intensity={0.5} />
<spotLight position={[10, 10, 10]} angle={0.15} />
<Product />
<OrbitControls
enableZoom={false}
autoRotate
autoRotateSpeed={2}
/>
</Canvas>
)
}增强功能:
- 材质变体(颜色选择器)
- 带注释的热点
- 移动端AR模式
- 截图/分享功能
相关技能: , ,
3d-effekt-73d-effekt-4model-viewer-componentPattern 4: Animated Data Visualization
模式4:动画数据可视化
Use Case: Dashboards, analytics, infographics
Patterns:
- Count-up animations on scroll into view
- Animated chart reveals (progress bars, pie charts)
- Staggered grid animations
- Particle backgrounds representing data
Implementation (Framer Motion + IntersectionObserver):
jsx
function AnimatedStat({ end, label }) {
const [count, setCount] = useState(0);
const ref = useRef();
const isInView = useInView(ref, { once: true });
useEffect(() => {
if (isInView) {
// Count up animation
const duration = 2000;
const steps = 60;
const increment = end / steps;
let current = 0;
const timer = setInterval(() => {
current += increment;
if (current >= end) {
setCount(end);
clearInterval(timer);
} else {
setCount(Math.floor(current));
}
}, duration / steps);
}
}, [isInView, end]);
return (
<motion.div
ref={ref}
initial={{ opacity: 0, y: 20 }}
animate={isInView ? { opacity: 1, y: 0 } : {}}
transition={{ duration: 0.6 }}
>
<h2>{count}+</h2>
<p>{label}</p>
</motion.div>
);
}Related Skills: , for canvas-based visualizations
animation42d-effekt适用场景: 仪表盘、分析、信息图
模式:
- 滚动进入视野时的计数动画
- 动画图表展示(进度条、饼图)
- 交错网格动画
- 代表数据的粒子背景
实现(Framer Motion + IntersectionObserver):
jsx
function AnimatedStat({ end, label }) {
const [count, setCount] = useState(0);
const ref = useRef();
const isInView = useInView(ref, { once: true });
useEffect(() => {
if (isInView) {
// Count up animation
const duration = 2000;
const steps = 60;
const increment = end / steps;
let current = 0;
const timer = setInterval(() => {
current += increment;
if (current >= end) {
setCount(end);
clearInterval(timer);
} else {
setCount(Math.floor(current));
}
}, duration / steps);
}
}, [isInView, end]);
return (
<motion.div
ref={ref}
initial={{ opacity: 0, y: 20 }}
animate={isInView ? { opacity: 1, y: 0 } : {}}
transition={{ duration: 0.6 }}
>
<h2>{count}+</h2>
<p>{label}</p>
</motion.div>
);
}相关技能: , (用于基于Canvas的可视化)
animation42d-effektPattern 5: Page Transitions
模式5:页面过渡
Use Case: Multi-page apps, portfolio sites, storytelling experiences
Implementation (Barba.js + GSAP):
javascript
barba.init({
transitions: [{
name: 'slide',
leave(data) {
return gsap.to(data.current.container, {
xPercent: -100,
duration: 0.5
});
},
enter(data) {
return gsap.from(data.next.container, {
xPercent: 100,
duration: 0.5
});
}
}]
});Modern Alternatives:
- View Transitions API (Chrome 111+, progressive enhancement)
- Framer Motion's AnimatePresence for React SPAs
- Shared element transitions
Related Skills: , ,
animationscroll-animation-3animation4适用场景: 多页面应用、作品集网站、叙事体验
实现(Barba.js + GSAP):
javascript
barba.init({
transitions: [{
name: 'slide',
leave(data) {
return gsap.to(data.current.container, {
xPercent: -100,
duration: 0.5
});
},
enter(data) {
return gsap.from(data.next.container, {
xPercent: 100,
duration: 0.5
});
}
}]
});现代替代方案:
- View Transitions API(Chrome 111+,渐进式增强)
- Framer Motion的AnimatePresence(适用于React单页应用)
- 共享元素过渡
相关技能: , ,
animationscroll-animation-3animation4Pattern 6: Interactive Cursor Effects
模式6:交互式光标效果
Use Case: Creative agencies, portfolios, interactive experiences
Patterns:
- Text cursor that follows with delay
- Magnetic buttons (cursor attracted to elements)
- Blend mode cursor (inverts colors)
- Cursor that reveals content
Implementation (Vanilla JS + GSAP):
javascript
const links = document.querySelectorAll('a');
const cursor = document.querySelector('.cursor');
links.forEach(link => {
link.addEventListener('mouseenter', () => {
gsap.to(cursor, {
scale: 2,
duration: 0.3,
ease: "power2.out"
});
});
link.addEventListener('mouseleave', () => {
gsap.to(cursor, {
scale: 1,
duration: 0.3,
ease: "power2.out"
});
});
});Related Skills: ,
scroll-animation-3animation4适用场景: 创意机构、作品集、交互体验
模式:
- 带延迟的文本跟随光标
- 磁吸按钮(光标被元素吸引)
- 混合模式光标(颜色反转)
- 可揭示内容的光标
实现(Vanilla JS + GSAP):
javascript
const links = document.querySelectorAll('a');
const cursor = document.querySelector('.cursor');
links.forEach(link => {
link.addEventListener('mouseenter', () => {
gsap.to(cursor, {
scale: 2,
duration: 0.3,
ease: "power2.out"
});
});
link.addEventListener('mouseleave', () => {
gsap.to(cursor, {
scale: 1,
duration: 0.3,
ease: "power2.out"
});
});
});相关技能: ,
scroll-animation-3animation4Pattern 7: Staggered Content Reveals
模式7:交错内容展示
Use Case: Feature sections, testimonials, team grids
Implementation (Framer Motion variants):
jsx
const container = {
hidden: { opacity: 0 },
show: {
opacity: 1,
transition: {
staggerChildren: 0.1
}
}
};
const item = {
hidden: { opacity: 0, y: 20 },
show: { opacity: 1, y: 0 }
};
function FeatureGrid() {
return (
<motion.div
variants={container}
initial="hidden"
whileInView="show"
viewport={{ once: true, amount: 0.3 }}
className="grid"
>
{features.map((feature, i) => (
<motion.div key={i} variants={item}>
{feature}
</motion.div>
))}
</motion.div>
);
}Related Skills: , ,
animation4scroll-animation-3scroll-animation适用场景: 功能区域、 testimonials、团队网格
实现(Framer Motion变体):
jsx
const container = {
hidden: { opacity: 0 },
show: {
opacity: 1,
transition: {
staggerChildren: 0.1
}
}
};
const item = {
hidden: { opacity: 0, y: 20 },
show: { opacity: 1, y: 0 }
};
function FeatureGrid() {
return (
<motion.div
variants={container}
initial="hidden"
whileInView="show"
viewport={{ once: true, amount: 0.3 }}
className="grid"
>
{features.map((feature, i) => (
<motion.div key={i} variants={item}>
{feature}
</motion.div>
))}
</motion.div>
);
}相关技能: , ,
animation4scroll-animation-3scroll-animationIntegration with Other Skills
与其他技能的集成
Animation Skills Integration
动画技能集成
GSAP ScrollTrigger ():
scroll-animation-3- Use for scroll-driven storytelling
- Pin sections for multi-step reveals
- Scrub animations tied to scroll position
- Batch animations for performance
Framer Motion ():
animation4- React component animations
- Page transitions with AnimatePresence
- Gesture-based interactions (drag, hover, tap)
- Layout animations (shared element transitions)
React Spring ():
animation3- Physics-based animations (more natural feel)
- Interactive springs (drag, pull)
- Trail animations (sequential reveals)
- Use for UI feedback that feels "real"
Anime.js ():
animejs- SVG path animations (line drawing)
- SVG morphing transitions
- Stagger grid animations
- Timeline-based sequences
Lottie ():
animation2- Complex designer-created animations
- Icon animations and micro-interactions
- Loading states
- Scroll-driven playback
GSAP ScrollTrigger ():
scroll-animation-3- 用于滚动驱动的叙事
- 固定区域实现多步骤展示
- 与滚动位置绑定的scrubbing动画
- 批量动画提升性能
Framer Motion ():
animation4- React组件动画
- 使用AnimatePresence实现页面过渡
- 基于手势的交互(拖拽、悬停、点击)
- 布局动画(共享元素过渡)
React Spring ():
animation3- 基于物理的动画(更自然的效果)
- 交互式弹簧(拖拽、拉动)
- 轨迹动画(顺序展示)
- 用于提供“真实”感的UI反馈
Anime.js ():
animejs- SVG路径动画(线条绘制)
- SVG变形过渡
- 交错网格动画
- 基于时间轴的序列动画
Lottie ():
animation2- 设计师创建的复杂动画
- 图标动画和微交互
- 加载状态
- 滚动驱动的播放
3D Skills Integration
3D技能集成
Three.js ():
3d-effekt-4- Custom 3D scenes and experiences
- Shader effects and post-processing
- WebGL-based particle systems
- Advanced lighting and materials
React Three Fiber ():
3d-effekt-7- 3D in React applications
- Product viewers and configurators
- Interactive 3D UI components
- Scroll-driven 3D animations
Babylon.js ():
3d-effekt-2- Physics-based 3D experiences
- VR/XR applications
- Game-like interactions
- PBR materials for realism
Lightweight 3D ():
3d-effekt-8- Background effects (Vanta.js)
- Subtle 3D illustrations (Zdog)
- Tilt effects (Vanilla-Tilt)
- Performance-friendly 3D accents
Three.js ():
3d-effekt-4- 自定义3D场景和体验
- 着色器效果和后期处理
- 基于WebGL的粒子系统
- 高级光照和材质
React Three Fiber ():
3d-effekt-7- React应用中的3D内容
- 产品查看器和配置器
- 交互式3D UI组件
- 滚动驱动的3D动画
Babylon.js ():
3d-effekt-2- 基于物理的3D体验
- VR/XR应用
- 类游戏交互
- PBR材质实现真实感
轻量3D ():
3d-effekt-8- 背景效果(Vanta.js)
- 柔和3D插画(Zdog)
- 倾斜效果(Vanilla-Tilt)
- 性能友好的3D装饰
Component Libraries
组件库
Animated Components ():
webdesign-4- Magic UI components (backgrounds, text effects)
- Pre-built interactive components
- Design system foundations
- Rapid prototyping
Scroll Reveals ():
scroll-animation- Simple fade/slide on scroll
- AOS library integration
- Lightweight alternative to ScrollTrigger
- Quick implementation for basic reveals
动画组件 ():
webdesign-4- Magic UI组件(背景、文本效果)
- 预构建交互式组件
- 设计系统基础
- 快速原型开发
滚动展示 ():
scroll-animation- 简单的滚动淡入/滑入
- AOS库集成
- ScrollTrigger的轻量替代方案
- 快速实现基础展示效果
Accessibility Best Practices
无障碍最佳实践
1. Motion & Animation
1. 动效与动画
Respect User Preferences:
css
@media (prefers-reduced-motion: reduce) {
*,
*::before,
*::after {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
scroll-behavior: auto !important;
}
}JavaScript Detection:
javascript
const prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
if (prefersReducedMotion) {
// Disable or simplify animations
gsap.config({ nullTargetWarn: false });
// Skip scroll animations, use instant reveals
}尊重用户偏好:
css
@media (prefers-reduced-motion: reduce) {
*,
*::before,
*::after {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
scroll-behavior: auto !important;
}
}JavaScript检测:
javascript
const prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
if (prefersReducedMotion) {
// 禁用或简化动画
gsap.config({ nullTargetWarn: false });
// 跳过滚动动画,使用即时展示
}2. Color Contrast
2. 色彩对比度
WCAG AAA Standards:
- Normal text: 7:1 contrast ratio
- Large text (18pt+): 4.5:1 contrast ratio
- Use OKLCH color space for perceptual uniformity
Testing:
javascript
// Check contrast ratio
function getContrastRatio(color1, color2) {
const l1 = getLuminance(color1);
const l2 = getLuminance(color2);
const lighter = Math.max(l1, l2);
const darker = Math.min(l1, l2);
return (lighter + 0.05) / (darker + 0.05);
}WCAG AAA标准:
- 普通文本:7:1对比度
- 大文本(18pt+):4.5:1对比度
- 使用OKLCH色彩空间实现感知均匀性
测试:
javascript
// Check contrast ratio
function getContrastRatio(color1, color2) {
const l1 = getLuminance(color1);
const l2 = getLuminance(color2);
const lighter = Math.max(l1, l2);
const darker = Math.min(l1, l2);
return (lighter + 0.05) / (darker + 0.05);
}3. Keyboard Navigation
3. 键盘导航
Requirements:
- All interactive elements focusable
- Visible focus indicators (not outline: none)
- Logical tab order
- Skip links for long navigation
- Escape key closes modals/overlays
Focus Styles (Modern):
css
:focus-visible {
outline: 3px solid var(--color-accent);
outline-offset: 2px;
border-radius: 4px;
}
/* Remove focus ring for mouse users */
:focus:not(:focus-visible) {
outline: none;
}要求:
- 所有交互元素可获取焦点
- 可见的焦点指示器(不要使用outline: none)
- 合理的Tab顺序
- 长导航的跳转链接
- Escape键关闭模态框/覆盖层
现代焦点样式:
css
:focus-visible {
outline: 3px solid var(--color-accent);
outline-offset: 2px;
border-radius: 4px;
}
/* 为鼠标用户移除焦点环 */
:focus:not(:focus-visible) {
outline: none;
}4. Screen Reader Support
4. 屏幕阅读器支持
Semantic HTML:
- Use proper heading hierarchy (h1-h6)
- Landmark regions (header, nav, main, footer)
- aria-labels for icon buttons
- aria-live regions for dynamic content
Animation Announcements:
html
<!-- Announce when content loads -->
<div role="status" aria-live="polite" aria-atomic="true">
Loading complete. 12 items displayed.
</div>语义化HTML:
- 使用正确的标题层级(h1-h6)
- 地标区域(header、nav、main、footer)
- 图标按钮的aria-labels
- 动态内容的aria-live区域
动画通知:
html
<!-- 内容加载完成时通知 -->
<div role="status" aria-live="polite" aria-atomic="true">
Loading complete. 12 items displayed.
</div>5. Touch Targets
5. 触摸目标
Minimum Size: 44x44px (iOS), 48x48px (Android)
Spacing: Minimum 8px between touch targets
Implementation:
css
.button {
min-height: 44px;
min-width: 44px;
padding: 12px 24px;
/* Tap target includes padding */
}最小尺寸: 44x44px(iOS),48x48px(Android)
间距: 触摸目标间最小8px间距
实现:
css
.button {
min-height: 44px;
min-width: 44px;
padding: 12px 24px;
/* 触摸目标包含内边距 */
}Performance Optimization
性能优化
1. Animation Performance
1. 动画性能
60 FPS Checklist:
- Use CSS transforms (translateX/Y/Z, scale, rotate) - GPU accelerated
- Use opacity for fades - GPU accelerated
- Avoid: top/left, width/height, margin, padding animations
- Use sparingly (memory cost)
will-change - RequestAnimationFrame for JS animations
GSAP Performance:
javascript
// Force GPU acceleration
gsap.set(element, { force3D: true });
// Use will-change during animation only
gsap.to(element, {
x: 100,
onStart: () => element.style.willChange = 'transform',
onComplete: () => element.style.willChange = 'auto'
});60 FPS检查清单:
- 使用CSS transforms(translateX/Y/Z、scale、rotate)- GPU加速
- 使用opacity实现淡入效果 - GPU加速
- 避免:top/left、width/height、margin、padding动画
- 谨慎使用(内存开销)
will-change - JS动画使用RequestAnimationFrame
GSAP性能优化:
javascript
// 强制GPU加速
gsap.set(element, { force3D: true });
// 仅在动画期间使用will-change
gsap.to(element, {
x: 100,
onStart: () => element.style.willChange = 'transform',
onComplete: () => element.style.willChange = 'auto'
});2. Loading Strategies
2. 加载策略
Critical Path:
- Inline critical CSS (above-the-fold)
- Defer non-critical CSS
- Async JavaScript loading
- Preload fonts and hero images
Progressive Enhancement:
html
<!-- Load essential styles first -->
<style>
/* Critical CSS inlined */
</style>
<!-- Defer non-critical styles -->
<link rel="preload" href="animations.css" as="style" onload="this.onload=null;this.rel='stylesheet'">
<noscript><link rel="stylesheet" href="animations.css"></noscript>关键路径:
- 内联关键CSS(首屏内容)
- 延迟非关键CSS
- 异步加载JavaScript
- 预加载字体和Hero图片
渐进式增强:
html
<!-- 先加载必要样式 -->
<style>
/* 内联关键CSS */
</style>
<!-- 延迟非关键样式 -->
<link rel="preload" href="animations.css" as="style" onload="this.onload=null;this.rel='stylesheet'">
<noscript><link rel="stylesheet" href="animations.css"></noscript>3. Image Optimization
3. 图片优化
Modern Formats:
html
<picture>
<source srcset="image.avif" type="image/avif">
<source srcset="image.webp" type="image/webp">
<img src="image.jpg" alt="Description" loading="lazy">
</picture>Responsive Images:
html
<img
srcset="image-400.jpg 400w,
image-800.jpg 800w,
image-1200.jpg 1200w"
sizes="(max-width: 640px) 100vw,
(max-width: 1024px) 50vw,
33vw"
src="image-800.jpg"
alt="Description"
loading="lazy"
>现代格式:
html
<picture>
<source srcset="image.avif" type="image/avif">
<source srcset="image.webp" type="image/webp">
<img src="image.jpg" alt="Description" loading="lazy">
</picture>响应式图片:
html
<img
srcset="image-400.jpg 400w,
image-800.jpg 800w,
image-1200.jpg 1200w"
sizes="(max-width: 640px) 100vw,
(max-width: 1024px) 50vw,
33vw"
src="image-800.jpg"
alt="Description"
loading="lazy"
>4. 3D Content Optimization
4. 3D内容优化
Loading Strategy:
- Show placeholder while loading
- Load low-poly model first
- Progressive enhancement with high-poly
- Lazy load 3D scenes below fold
Runtime Performance:
- Use object pooling
- Implement LOD (Level of Detail)
- Frustum culling
- Texture compression (Basis Universal)
Related Skills: , ,
3d-effekt-43d-effekt-73d-effekt-2加载策略:
- 加载时显示占位符
- 先加载低多边形模型
- 渐进式增强至高多边形模型
- 懒加载视口下方的3D场景
运行时性能:
- 使用对象池
- 实现LOD(细节层级)
- 视锥体剔除
- 纹理压缩(Basis Universal)
相关技能: , ,
3d-effekt-43d-effekt-73d-effekt-25. JavaScript Bundle Size
5. JavaScript包大小
Code Splitting:
javascript
// Dynamic imports
const AnimationModule = lazy(() => import('./animations'));
// Route-based splitting
const Gallery = lazy(() => import('./pages/Gallery'));Tree Shaking:
- Use ES6 imports
- Import only what you need
- Use modern build tools (Vite, esbuild)
代码分割:
javascript
// 动态导入
const AnimationModule = lazy(() => import('./animations'));
// 基于路由的分割
const Gallery = lazy(() => import('./pages/Gallery'));Tree Shaking:
- 使用ES6导入
- 仅导入所需内容
- 使用现代构建工具(Vite、esbuild)
Common Pitfalls
常见陷阱
Pitfall 1: Over-Animation
陷阱1:过度动画
Problem: Too many animations distract from content and hurt performance.
Solution:
- Limit animations to meaningful interactions
- Use animation to guide attention, not demand it
- Follow the principle: "Animation with purpose"
- Measure performance impact (Chrome DevTools Performance tab)
Rule of Thumb: If you can't explain why an animation exists, remove it.
问题: 过多动画分散内容注意力并影响性能。
解决方案:
- 将动画限制在有意义的交互中
- 使用动画引导注意力,而非吸引注意力
- 遵循原则:“有目的的动画”
- 测量性能影响(Chrome DevTools性能面板)
经验法则: 如果你无法解释动画存在的原因,就移除它。
Pitfall 2: Ignoring Mobile Performance
陷阱2:忽视移动端性能
Problem: Animations work on desktop but lag on mobile devices.
Solution:
- Test on real devices (not just simulators)
- Reduce animation complexity on mobile
- Disable expensive effects (parallax, 3D) on low-end devices
- Use for device-specific experiences
matchMedia
javascript
const isLowEndDevice = () => {
return /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) &&
navigator.hardwareConcurrency < 4;
};
if (isLowEndDevice()) {
// Simplify or disable animations
}问题: 动画在桌面端正常,但在移动设备上卡顿。
解决方案:
- 在真实设备上测试(而非仅模拟器)
- 在移动端降低动画复杂度
- 在低端设备上禁用昂贵效果(视差、3D)
- 使用实现设备专属体验
matchMedia
javascript
const isLowEndDevice = () => {
return /Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent) &&
navigator.hardwareConcurrency < 4;
};
if (isLowEndDevice()) {
// 简化或禁用动画
}Pitfall 3: Missing Fallbacks
陷阱3:缺少回退方案
Problem: Experience breaks without JavaScript or on older browsers.
Solution:
- Progressive enhancement mindset
- Core content accessible without JS
- Feature detection before using modern APIs
- Polyfills for critical features
javascript
// Feature detection
if ('IntersectionObserver' in window) {
// Use scroll-triggered animations
} else {
// Show content immediately
}问题: 无JavaScript或在旧浏览器上体验崩溃。
解决方案:
- 渐进式增强思维
- 核心内容无需JS即可访问
- 使用现代API前先进行特性检测
- 为关键功能添加Polyfill
javascript
// 特性检测
if ('IntersectionObserver' in window) {
// 使用滚动触发动画
} else {
// 立即显示内容
}Pitfall 4: Accessibility Oversight
陷阱4:无障碍疏忽
Problem: Forgetting keyboard users, screen readers, or motion-sensitive users.
Solution:
- Test with keyboard only
- Test with screen reader (NVDA, VoiceOver)
- Always check
prefers-reduced-motion - Use semantic HTML
- Maintain proper focus management
Checklist:
- All interactive elements keyboard accessible
- Focus indicators visible
- Color contrast meets WCAG AAA
- Motion can be disabled
- Screen reader announcements make sense
问题: 忘记键盘用户、屏幕阅读器或对动效敏感的用户。
解决方案:
- 仅使用键盘测试
- 使用屏幕阅读器测试(NVDA、VoiceOver)
- 始终检查设置
prefers-reduced-motion - 使用语义化HTML
- 保持合理的焦点管理
检查清单:
- 所有交互元素可通过键盘访问
- 焦点指示器可见
- 色彩对比度符合WCAG AAA标准
- 可禁用动效
- 屏幕阅读器通知合理
Pitfall 5: Ignoring Loading States
陷阱5:忽视加载状态
Problem: Blank screen or layout shifts during content load.
Solution:
- Skeleton screens for predictable layouts
- Smooth loading transitions
- Reserve space for dynamic content
- Show meaningful loading indicators
jsx
// Skeleton screen pattern
function ProductCard({ loading, data }) {
if (loading) {
return (
<div className="skeleton">
<div className="skeleton__image" />
<div className="skeleton__title" />
<div className="skeleton__price" />
</div>
);
}
return <ProductCardContent data={data} />;
}问题: 内容加载时出现空白屏幕或布局偏移。
解决方案:
- 使用骨架屏实现可预测布局
- 平滑加载过渡
- 为动态内容预留空间
- 显示有意义的加载指示器
jsx
// 骨架屏模式
function ProductCard({ loading, data }) {
if (loading) {
return (
<div className="skeleton">
<div className="skeleton__image" />
<div className="skeleton__title" />
<div className="skeleton__price" />
</div>
);
}
return <ProductCardContent data={data} />;
}Pitfall 6: Scroll Hijacking
陷阱6:滚动劫持
Problem: Overriding native scroll behavior frustrates users.
Solution:
- Preserve browser's native scroll (momentum, keyboard)
- Use ScrollTrigger/Locomotive without changing scroll physics
- Allow users to scroll at their own pace
- Never disable scroll entirely
- Avoid scroll-jacking for full-page sections
Good Practice: Enhance scroll, don't replace it.
问题: 覆盖原生滚动行为使用户受挫。
解决方案:
- 保留浏览器原生滚动(动量、键盘)
- 使用ScrollTrigger/Locomotive时不改变滚动物理特性
- 允许用户按自己的节奏滚动
- 永远不要完全禁用滚动
- 避免对全屏区域进行滚动劫持
最佳实践: 增强滚动体验,而非替换它。
Design System Architecture
设计系统架构
Token Structure
令牌结构
Modern Design Tokens (CSS Custom Properties):
css
:root {
/* Colors - OKLCH for perceptual uniformity */
--color-primary: oklch(50% 0.2 250);
--color-accent: oklch(65% 0.25 30);
/* Spacing - Consistent scale */
--space-2xs: clamp(0.25rem, 0.2rem + 0.25vw, 0.375rem);
--space-xs: clamp(0.5rem, 0.4rem + 0.5vw, 0.75rem);
--space-sm: clamp(0.75rem, 0.6rem + 0.75vw, 1.125rem);
--space-md: clamp(1rem, 0.8rem + 1vw, 1.5rem);
--space-lg: clamp(1.5rem, 1.2rem + 1.5vw, 2.25rem);
--space-xl: clamp(2rem, 1.6rem + 2vw, 3rem);
--space-2xl: clamp(3rem, 2.4rem + 3vw, 4.5rem);
/* Typography - Fluid scale */
--font-size-base: clamp(1rem, 0.9rem + 0.5vw, 1.25rem);
/* Animation - Consistent timing */
--duration-fast: 150ms;
--duration-normal: 250ms;
--duration-slow: 400ms;
/* Easing - Natural motion */
--ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
--ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
}现代设计令牌(CSS自定义属性):
css
:root {
/* 颜色 - 使用OKLCH实现感知均匀性 */
--color-primary: oklch(50% 0.2 250);
--color-accent: oklch(65% 0.25 30);
/* 间距 - 统一比例 */
--space-2xs: clamp(0.25rem, 0.2rem + 0.25vw, 0.375rem);
--space-xs: clamp(0.5rem, 0.4rem + 0.5vw, 0.75rem);
--space-sm: clamp(0.75rem, 0.6rem + 0.75vw, 1.125rem);
--space-md: clamp(1rem, 0.8rem + 1vw, 1.5rem);
--space-lg: clamp(1.5rem, 1.2rem + 1.5vw, 2.25rem);
--space-xl: clamp(2rem, 1.6rem + 2vw, 3rem);
--space-2xl: clamp(3rem, 2.4rem + 3vw, 4.5rem);
/* 排版 - 流体比例 */
--font-size-base: clamp(1rem, 0.9rem + 0.5vw, 1.25rem);
/* 动画 - 统一时长 */
--duration-fast: 150ms;
--duration-normal: 250ms;
--duration-slow: 400ms;
/* 缓动 - 自然动效 */
--ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
--ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
}Component Architecture
组件架构
Atomic Design (Brad Frost):
- Atoms: Buttons, inputs, labels
- Molecules: Form fields, cards
- Organisms: Navigation, hero sections
- Templates: Page layouts
- Pages: Specific instances
Related Skills: for component patterns
webdesign-4原子设计(Brad Frost):
- 原子: 按钮、输入框、标签
- 分子: 表单字段、卡片
- 有机体: 导航栏、Hero区域
- 模板: 页面布局
- 页面: 具体实例
相关技能: (用于组件模式)
webdesign-4Resources
资源
This skill references the following skills for implementation:
本技能参考以下技能进行实施:
Animation & Interaction
动画与交互
- - Scroll-driven animations, pinning, scrubbing
scroll-animation-3 - - React animations, gestures, layout animations
animation4 - - Physics-based animations
animation3 - - SVG animations, stagger effects
animejs - - Designer-created animations
animation2 - - Simple scroll reveals (AOS)
scroll-animation
- - 滚动驱动动画、固定、scrubbing
scroll-animation-3 - - React动画、手势、布局动画
animation4 - - 基于物理的动画
animation3 - - SVG动画、交错效果
animejs - - 设计师创建的动画
animation2 - - 简单滚动展示(AOS)
scroll-animation
3D & WebGL
3D与WebGL
- - Custom 3D scenes and effects
3d-effekt-4 - - 3D in React applications
3d-effekt-7 - - Physics-based 3D, VR/XR
3d-effekt-2 - - Vanta.js backgrounds, Zdog illustrations
3d-effekt-8
- - 自定义3D场景和效果
3d-effekt-4 - - React应用中的3D内容
3d-effekt-7 - - 基于物理的3D、VR/XR
3d-effekt-2 - - Vanta.js背景、Zdog插画
3d-effekt-8
Page Transitions & Scroll
页面过渡与滚动
- - Page transitions
animation - - Smooth scrolling
scroll-animation-2
- - 页面过渡
animation - - 平滑滚动
scroll-animation-2
Component Libraries
组件库
- - Magic UI, React Bits
webdesign-4 - - Canvas-based 2D graphics
2d-effekt
- - Magic UI、React Bits
webdesign-4 - - 基于Canvas的2D图形
2d-effekt
Detailed References
详细参考
See the directory for in-depth documentation:
references/- - Current web design trends and forecasts
design_trends_2024.md - - Comprehensive micro-interaction catalog
interaction_patterns.md - - WCAG compliance patterns and testing
accessibility_guide.md - - Optimization strategies and metrics
performance_checklist.md
查看目录获取深入文档:
references/- - 当前网页设计趋势与预测
design_trends_2024.md - - 全面的微交互目录
interaction_patterns.md - - WCAG合规模式与测试
accessibility_guide.md - - 优化策略与指标
performance_checklist.md
Scripts
脚本
The directory includes tools for implementing design patterns:
scripts/- - Generate design pattern boilerplate
pattern_generator.py - - Audit existing designs for compliance
design_audit.py
scripts/- - 生成设计模式样板代码
pattern_generator.py - - 审核现有设计的合规性
design_audit.py
Assets
资源
The directory contains design system templates and starter files. See for details.
assets/assets/README.mdassets/assets/README.md