惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
B
Blog RSS Feed
宝玉的分享
宝玉的分享
腾讯CDC
博客园_首页
T
Tailwind CSS Blog
月光博客
月光博客
博客园 - 司徒正美
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
M
MIT News - Artificial intelligence
A
About on SuperTechFans
云风的 BLOG
云风的 BLOG
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
有赞技术团队
有赞技术团队
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
大猫的无限游戏
大猫的无限游戏
MongoDB | Blog
MongoDB | Blog
博客园 - 聂微东
V
Visual Studio Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
SecWiki News
SecWiki News
美团技术团队
P
Privacy International News Feed
H
Help Net Security
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Microsoft Security Blog
Microsoft Security Blog
Know Your Adversary
Know Your Adversary
Y
Y Combinator Blog
D
DataBreaches.Net
Project Zero
Project Zero
T
The Blog of Author Tim Ferriss
Cyberwarzone
Cyberwarzone
C
Cybersecurity and Infrastructure Security Agency CISA
C
Cisco Blogs
S
Schneier on Security
G
GRAHAM CLULEY
博客园 - 三生石上(FineUI控件)
Cisco Talos Blog
Cisco Talos Blog
小众软件
小众软件
Forbes - Security
Forbes - Security
D
Docker
T
Tenable Blog
S
Secure Thoughts
雷峰网
雷峰网
S
Security @ Cisco Blogs
T
The Exploit Database - CXSecurity.com
The Cloudflare Blog
博客园 - 【当耐特】
Spread Privacy
Spread Privacy
阮一峰的网络日志
阮一峰的网络日志

Wayne的博客

从 AI Coding 到 Agent Loop:2026H1 研发工具演进趋势 Awesome AI Prompts:提示词收集手册 | Wayne的博客 大模型缓存技术工程指南(下):面向缓存命中的 Prompt 与 Agent 工程实践 大模型缓存技术工程指南(上):从价格信号到推理缓存机制 | Wayne的博客 面向 AI / Agent 友好的 CLI 开发建议 【笔记】Harness Engineering(驾驭工程) | Wayne的博客 【笔记】location.href 和 location.assign 进行页面 URL 跳转 【工具】ZeroClaw配置项(config.toml)说明 | Wayne的博客 【工具】ZeroClaw配置项(config.toml)说明 | Wayne的博客 Skills 技术深度解析:AI Agent 能力扩展的新范式 | Wayne的博客 【笔记】浏览器PNA/LNA策略——记一次iframe中CORS报错的问题排查经历 | Wayne的博客 【工具】spec驱动开发解析 | Wayne的博客 Agent设计模式 | Wayne的博客 【工具】2025年AI Coding部分产品技术分析——ClaudeCode和CodexCLI | Wayne的博客 【工具】设计-开发-测试的AIGC产品清单梳理 | Wayne的博客 近期关于AI浪潮下的搜索引擎、SEO和GEO思考 | Wayne的博客 【工具】AI Common Notify:统一 AI 编程工具通知服务 【笔记】Figma和AIGC(持续) | Wayne的博客 【笔记】State-Of-Ai 报告信息 | Wayne的博客 【笔记】web 黑夜模式通用适配方案 | Wayne的博客 【笔记】19届阿里D2终端技术大会纪要 | Wayne的博客 【笔记】Lovable提示词指南 | Wayne的博客 【调研】AI 编程工具WindSurf使用技巧——WindsurfRules配置 | Wayne的博客 【AI】【笔记】MCP 协议:连接 AI 模型与外部世界的桥梁 | Wayne的博客 AI 前端编程工具的一个得力助手——CopyCoder | Wayne的博客
21st.dev:让AI生成的页面告别"塑料感"的专业解决方案 | Wayne的博客
2025-06-29 · via Wayne的博客

现在已经有很多可以生成页面的 ai 工具,但你是否遇到过这样的困扰:AI 生成的页面虽然功能完整,但总有一种说不出的”塑料感”?样式单调、缺乏设计感,调整起来又费时费力…

21st.dev 是一个专为现代前端开发者和设计工程师打造的创新型 UI 组件与页面模板平台。它不仅提供了丰富的高质量组件和页面模板,更以”AI 友好”为核心理念,让开发者可以通过自然语言在 IDE 内快速生成、定制并即时使用高质量 React/Tailwind UI 组件,提升了组件的可组合性、可复用性和智能化集成体验。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
You are given a task to integrate an existing React component in the codebase

The codebase should support:
- shadcn project structure
- Tailwind CSS
- Typescript

If it doesn't, provide instructions on how to setup project via shadcn CLI, install Tailwind or Typescript.

Determine the default path for components and styles.
If default path for components is not /components/ui, provide instructions on why it's important to create this folder
Copy-paste this component to /components/ui folder:
\`\`\`tsx
hero-parallax.tsx
"use client";
import React from "react";
import {
motion,
useScroll,
useTransform,
useSpring,
MotionValue,
} from "framer-motion";
import Image from "next/image";
import Link from "next/link";

export const HeroParallax = ({
products,
}: {
products: {
title: string;
link: string;
thumbnail: string;
}[];
}) => {
const firstRow = products.slice(0, 5);
const secondRow = products.slice(5, 10);
const thirdRow = products.slice(10, 15);
const ref = React.useRef(null);
const { scrollYProgress } = useScroll({
target: ref,
offset: ["start start", "end start"],
});

const springConfig = { stiffness: 300, damping: 30, bounce: 100 };

const translateX = useSpring(
useTransform(scrollYProgress, [0, 1], [0, 1000]),
springConfig
);
const translateXReverse = useSpring(
useTransform(scrollYProgress, [0, 1], [0, -1000]),
springConfig
);
const rotateX = useSpring(
useTransform(scrollYProgress, [0, 0.2], [15, 0]),
springConfig
);
const opacity = useSpring(
useTransform(scrollYProgress, [0, 0.2], [0.2, 1]),
springConfig
);
const rotateZ = useSpring(
useTransform(scrollYProgress, [0, 0.2], [20, 0]),
springConfig
);
const translateY = useSpring(
useTransform(scrollYProgress, [0, 0.2], [-700, 500]),
springConfig
);
return (
<div
ref={ref}
className="h-[300vh] py-40 overflow-hidden antialiased relative flex flex-col self-auto [perspective:1000px] [transform-style:preserve-3d]"
>
<Header />
<motion.div
style={{
rotateX,
rotateZ,
translateY,
opacity,
}}
className=""
>
<motion.div className="flex flex-row-reverse space-x-reverse space-x-20 mb-20">
{firstRow.map((product) => (
<ProductCard
product={product}
translate={translateX}
key={product.title}
/>
))}
</motion.div>
<motion.div className="flex flex-row mb-20 space-x-20 ">
{secondRow.map((product) => (
<ProductCard
product={product}
translate={translateXReverse}
key={product.title}
/>
))}
</motion.div>
<motion.div className="flex flex-row-reverse space-x-reverse space-x-20">
{thirdRow.map((product) => (
<ProductCard
product={product}
translate={translateX}
key={product.title}
/>
))}
</motion.div>
</motion.div>
</div>
);
};

export const Header = () => {
return (
<div className="max-w-7xl relative mx-auto py-20 md:py-40 px-4 w-full left-0 top-0">
<h1 className="text-2xl md:text-7xl font-bold dark:text-white">
The Ultimate <br /> development studio
</h1>
<p className="max-w-2xl text-base md:text-xl mt-8 dark:text-neutral-200">
We build beautiful products with the latest technologies and frameworks.
We are a team of passionate developers and designers that love to build
amazing products.
</p>
</div>
);
};

export const ProductCard = ({
product,
translate,
}: {
product: {
title: string;
link: string;
thumbnail: string;
};
translate: MotionValue<number>;
}) => {
return (
<motion.div
style={{
x: translate,
}}
whileHover={{
y: -20,
}}
key={product.title}
className="group/product h-96 w-[30rem] relative flex-shrink-0"
>
<Link
href={product.link}
className="block group-hover/product:shadow-2xl "
>
<Image
src={product.thumbnail}
height="600"
width="600"
className="object-cover object-left-top absolute h-full w-full inset-0"
alt={product.title}
/>
</Link>
<div className="absolute inset-0 h-full w-full opacity-0 group-hover/product:opacity-80 bg-black pointer-events-none"></div>
<h2 className="absolute bottom-4 left-4 opacity-0 group-hover/product:opacity-100 text-white">
{product.title}
</h2>
</motion.div>
);
};


demo.tsx
"use client";
import React from "react";
import { HeroParallax } from "@/components/blocks/hero-parallax";

export function HeroParallaxDemo() {
return (
<div className="min-h-screen w-full">
<div className="absolute top-0 left-0 w-full">
<HeroParallax products={products} />
</div>
</div>
);
}
export const products = [
{
title: "Moonbeam",
link: "https://gomoonbeam.com",
thumbnail:
"https://aceternity.com/images/products/thumbnails/new/moonbeam.png",
},
{
title: "Cursor",
link: "https://cursor.so",
thumbnail:
"https://aceternity.com/images/products/thumbnails/new/cursor.png",
},
{
title: "Rogue",
link: "https://userogue.com",
thumbnail:
"https://aceternity.com/images/products/thumbnails/new/rogue.png",
},

{
title: "Editorially",
link: "https://editorially.org",
thumbnail:
"https://aceternity.com/images/products/thumbnails/new/editorially.png",
},
{
title: "Editrix AI",
link: "https://editrix.ai",
thumbnail:
"https://aceternity.com/images/products/thumbnails/new/editrix.png",
},
{
title: "Pixel Perfect",
link: "https://app.pixelperfect.quest",
thumbnail:
"https://aceternity.com/images/products/thumbnails/new/pixelperfect.png",
},

{
title: "Algochurn",
link: "https://algochurn.com",
thumbnail:
"https://aceternity.com/images/products/thumbnails/new/algochurn.png",
},
{
title: "Aceternity UI",
link: "https://ui.aceternity.com",
thumbnail:
"https://aceternity.com/images/products/thumbnails/new/aceternityui.png",
},
{
title: "Tailwind Master Kit",
link: "https://tailwindmasterkit.com",
thumbnail:
"https://aceternity.com/images/products/thumbnails/new/tailwindmasterkit.png",
},
{
title: "SmartBridge",
link: "https://smartbridgetech.com",
thumbnail:
"https://aceternity.com/images/products/thumbnails/new/smartbridge.png",
},
{
title: "Renderwork Studio",
link: "https://renderwork.studio",
thumbnail:
"https://aceternity.com/images/products/thumbnails/new/renderwork.png",
},

{
title: "Creme Digital",
link: "https://cremedigital.com",
thumbnail:
"https://aceternity.com/images/products/thumbnails/new/cremedigital.png",
},
{
title: "Golden Bells Academy",
link: "https://goldenbellsacademy.com",
thumbnail:
"https://aceternity.com/images/products/thumbnails/new/goldenbellsacademy.png",
},
{
title: "Invoker Labs",
link: "https://invoker.lol",
thumbnail:
"https://aceternity.com/images/products/thumbnails/new/invoker.png",
},
{
title: "E Free Invoice",
link: "https://efreeinvoice.com",
thumbnail:
"https://aceternity.com/images/products/thumbnails/new/efreeinvoice.png",
},
];

\`\`\`

Install NPM dependencies:
\`\`\`bash
framer-motion
\`\`\`

Implementation Guidelines
1. Analyze the component structure and identify all required dependencies
2. Review the component's argumens and state
3. Identify any required context providers or hooks and install them
4. Questions to Ask
- What data/props will be passed to this component?
- Are there any specific state management requirements?
- Are there any required assets (images, icons, etc.)?
- What is the expected responsive behavior?
- What is the best place to use this component in the app?

Steps to integrate
0. Copy paste all the code above in the correct directories
1. Install external dependencies
2. Fill image assets with Unsplash stock images you know exist
3. Use lucide-react icons for svgs or logos if component requires them

21st.dev 通过其 AI 友好的设计理念,成功解决了 AI 生成页面”塑料感”的问题。无论你是专业开发者还是设计新手,都能通过这个平台快速创建具有专业水准的页面设计。

21st.dev 致力于成为连接设计、开发与 AI 智能的桥梁。随着 AI 在前端开发中的深入应用,平台将持续优化 AI 集成体验,丰富组件生态,推动前端开发的智能化与协作化。