调整首页品牌文案层级
更新首页唯一 H1、小眉题、产品说明与权益文案 统一游戏美术 AI 创作工具 H2 和功能弹窗 H2 语义 补充首页标题层级测试与 SEO、创作主页文档约束
This commit is contained in:
@@ -156,16 +156,34 @@ describe('CreationLandingView', () => {
|
||||
renderCreationLanding();
|
||||
|
||||
expect(screen.getByRole('main', { name: '陶泥儿创作主页' })).toBeTruthy();
|
||||
expect(screen.getAllByRole('heading', { level: 1 })).toHaveLength(1);
|
||||
expect(
|
||||
screen.getByRole('heading', {
|
||||
name: '游戏美术AI工作台,让个人创作者更快做出角色、场景与宣发素材',
|
||||
level: 1,
|
||||
name: '陶泥儿 · 开启全民精品游戏创作',
|
||||
}),
|
||||
).toBeTruthy();
|
||||
expect(
|
||||
screen.getByText(/陶泥儿 Genarrative 以美术 Agent 与无限画布/u),
|
||||
screen.getByText('陶泥儿 Genarrative|游戏美术 AI 创作工具'),
|
||||
).toBeTruthy();
|
||||
const subtitle = screen.getByText(
|
||||
/面向个人创作者的游戏美术 AI 工作台/u,
|
||||
);
|
||||
expect(subtitle.textContent).toContain('美术 Agent');
|
||||
expect(subtitle.textContent).toContain('无限画布');
|
||||
expect(subtitle.textContent).toContain('角色、场景、UI 与宣发素材');
|
||||
expect(
|
||||
screen.getByText('登录即送 100 泥点,可以免费制作 50 个素材'),
|
||||
).toBeTruthy();
|
||||
expect(
|
||||
screen.getByRole('heading', {
|
||||
level: 2,
|
||||
name: '游戏美术 AI 创作工具',
|
||||
}),
|
||||
).toBeTruthy();
|
||||
expect(
|
||||
screen.getByRole('heading', { level: 3, name: '游戏视觉规范' }),
|
||||
).toBeTruthy();
|
||||
expect(screen.getByRole('heading', { name: '创作工具' })).toBeTruthy();
|
||||
expect(screen.getByText('游戏视觉规范')).toBeTruthy();
|
||||
expect(screen.getByRole('heading', { name: '陶泥儿精选' })).toBeTruthy();
|
||||
expect(screen.getByRole('tab', { name: '全部' })).toBeTruthy();
|
||||
expect(screen.queryByRole('tab', { name: '素材包' })).toBeNull();
|
||||
@@ -310,6 +328,10 @@ describe('CreationLandingView', () => {
|
||||
await user.click(screen.getByRole('button', { name: /游戏特效/u }));
|
||||
|
||||
const dialog = screen.getByRole('dialog', { name: '抱歉' });
|
||||
expect(screen.getAllByRole('heading', { level: 1 })).toHaveLength(1);
|
||||
expect(
|
||||
within(dialog).getByRole('heading', { level: 2, name: '抱歉' }),
|
||||
).toBeTruthy();
|
||||
expect(dialog.textContent).toContain('功能还在调试中');
|
||||
expect(dialog.textContent).toContain('暂未开放');
|
||||
expect(dialog.closest('.platform-theme--light')).toBeTruthy();
|
||||
|
||||
@@ -858,14 +858,20 @@ export function CreationLandingView({
|
||||
<main className="creation-landing" aria-label="陶泥儿创作主页">
|
||||
<section className="creation-landing__hero">
|
||||
<div className="creation-landing__hero-copy">
|
||||
<span className="creation-landing__eyebrow">陶泥儿创作工具</span>
|
||||
<h1>
|
||||
游戏美术AI工作台,让个人创作者更快做出角色、场景与宣发素材
|
||||
</h1>
|
||||
<p>
|
||||
陶泥儿 Genarrative 以美术 Agent
|
||||
与无限画布帮助个人创作者准备角色、场景与宣发素材;登录即送100泥点,可以免费制作50个素材。
|
||||
</p>
|
||||
<span className="creation-landing__eyebrow">
|
||||
陶泥儿 Genarrative|游戏美术 AI 创作工具
|
||||
</span>
|
||||
<h1>陶泥儿 · 开启全民精品游戏创作</h1>
|
||||
<div className="creation-landing__hero-detail">
|
||||
<p className="creation-landing__hero-subtitle">
|
||||
面向个人创作者的游戏美术 AI 工作台。
|
||||
<br />
|
||||
用美术 Agent 与无限画布,快速制作角色、场景、UI 与宣发素材。
|
||||
</p>
|
||||
<p className="creation-landing__hero-benefit">
|
||||
登录即送 100 泥点,可以免费制作 50 个素材
|
||||
</p>
|
||||
</div>
|
||||
<div className="creation-landing__hero-actions">
|
||||
<PlatformActionButton
|
||||
size="md"
|
||||
@@ -913,7 +919,7 @@ export function CreationLandingView({
|
||||
<section className="creation-landing__section">
|
||||
<div className="creation-landing__section-header">
|
||||
<div>
|
||||
<h2>创作工具</h2>
|
||||
<h2>游戏美术 AI 创作工具</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div className="creation-landing__feature-grid">
|
||||
@@ -1089,7 +1095,7 @@ export function CreationLandingView({
|
||||
alt=""
|
||||
className="platform-mobile-home-welcome-dialog__icon"
|
||||
/>
|
||||
<h1 className="platform-mobile-home-welcome-dialog__title">抱歉</h1>
|
||||
<h2 className="platform-mobile-home-welcome-dialog__title">抱歉</h2>
|
||||
<p className="platform-mobile-home-welcome-dialog__copy">
|
||||
功能还在调试中
|
||||
<br />
|
||||
|
||||
+41
-11
@@ -3428,8 +3428,8 @@ html[data-mobile-keyboard-open='true'] .platform-mobile-bottom-dock {
|
||||
color: #8c796c;
|
||||
font-size: clamp(0.86rem, 1.2vw, 1.02rem);
|
||||
font-weight: 860;
|
||||
letter-spacing: 0.56em;
|
||||
text-indent: 0.56em;
|
||||
letter-spacing: 0.18em;
|
||||
text-indent: 0.18em;
|
||||
}
|
||||
|
||||
.creation-landing__hero h1 {
|
||||
@@ -3443,13 +3443,33 @@ html[data-mobile-keyboard-open='true'] .platform-mobile-bottom-dock {
|
||||
line-height: 1.04;
|
||||
}
|
||||
|
||||
.creation-landing__hero p {
|
||||
.creation-landing__hero-detail {
|
||||
display: grid;
|
||||
max-width: 54rem;
|
||||
justify-items: center;
|
||||
gap: 0.42rem;
|
||||
}
|
||||
|
||||
.creation-landing__hero-subtitle,
|
||||
.creation-landing__hero-benefit {
|
||||
margin: 0;
|
||||
color: #8a7466;
|
||||
font-size: clamp(1rem, 1.45vw, 1.28rem);
|
||||
font-weight: 820;
|
||||
letter-spacing: 0.38em;
|
||||
text-indent: 0.38em;
|
||||
text-indent: 0;
|
||||
}
|
||||
|
||||
.creation-landing__hero-subtitle {
|
||||
font-size: clamp(1rem, 1.55vw, 1.35rem);
|
||||
font-weight: 620;
|
||||
letter-spacing: 0.04em;
|
||||
line-height: 1.7;
|
||||
}
|
||||
|
||||
.creation-landing__hero-benefit {
|
||||
color: #9a6f56;
|
||||
font-size: clamp(0.8rem, 0.92vw, 0.94rem);
|
||||
font-weight: 680;
|
||||
letter-spacing: 0.08em;
|
||||
line-height: 1.55;
|
||||
}
|
||||
|
||||
.creation-landing__hero-actions {
|
||||
@@ -4339,10 +4359,20 @@ html[data-mobile-keyboard-open='true'] .platform-mobile-bottom-dock {
|
||||
padding-top: 1.6rem;
|
||||
}
|
||||
|
||||
.creation-landing__eyebrow,
|
||||
.creation-landing__hero p {
|
||||
letter-spacing: 0.18em;
|
||||
text-indent: 0.18em;
|
||||
.creation-landing__eyebrow {
|
||||
letter-spacing: 0.1em;
|
||||
text-indent: 0.1em;
|
||||
}
|
||||
|
||||
.creation-landing__hero-subtitle {
|
||||
font-size: 0.95rem;
|
||||
letter-spacing: 0.02em;
|
||||
line-height: 1.62;
|
||||
}
|
||||
|
||||
.creation-landing__hero-benefit {
|
||||
font-size: 0.8rem;
|
||||
letter-spacing: 0.04em;
|
||||
}
|
||||
|
||||
.creation-landing__hero-actions {
|
||||
|
||||
Reference in New Issue
Block a user