feat: 首页响应式视觉升级与全局UI细节打磨
本次提交包含以下改进: ## 1. 首页轮播卡片响应式重构 (HomePage.tsx + home.css) - 将旋转木马卡片偏移量从固定px值改为clamp()流式单位,随视口宽度自适应缩放 - 使用calc(0px - ...)替代乘法计算方向偏移,兼容CSS变量传递 - 轮播舞台新增mask-image渐变遮罩,边缘卡片自然淡出 - 非激活卡片增加saturate/brightness滤镜,强化主次视觉层级 - 激活卡与非激活卡分别设置图片filter效果 - 移除旧carousel-card-label样式 - 多断点适配:1200px/980px/720px/480px逐级调整卡片尺寸和舞台高度 ## 2. 首页入口按钮重设计 (HomePage.tsx + home.css) - 按钮文案从'新手/老手/电商'改为'快速生成/专业创作/电商出图' - 每个按钮新增small副标题('新手友好'/'画布工作流'/'商品视觉') - 主按钮(专业创作)使用渐变绿色背景+发光阴影,新建--primary small样式 - 普通按钮玻璃态背景+内阴影,hover绿色边框高亮 - 720px以下单列全宽布局,按钮居中 ## 3. 首页全页视觉强化 (home.css) - Scrim层三重渐变叠加+radial光晕 - Hero区域文字text-shadow + text-wrap: balance排版 - Feature页面::before叠加渐变遮罩 - Feature Visual卡片增加边框/阴影/背景三层嵌套 - Experience区域斜向分割线装饰背景 - Cookie Consent弹窗玻璃态重设计,移动端自适应 ## 4. 首页工具盒区域打磨 (toolbox.css) - 全新CSS变量(--toolbox-radius-card/inner) - 工具盒整体深色渐变背景+radial光晕 - Shell容器max-width + clamp流式padding - 左侧品牌区域标题/brand-icon/subtitle重设计 - 工具列表项、工作流卡片统一玻璃态风格 - 工具卡片hover上浮4px+绿色边框+阴影增强 - @media: 1160px/980px/680px/420px四断点响应式 ## 5. 工具盒卡片布局简化 (MorePage.tsx + more.css) - 核心工具卡片移除独立icon区域,改为单列网格布局 - 普通工具卡片隐藏.more-card__icon(近期记录除外) - 预览图aspect-ratio从16/9改为4/3,内边距优化 - 移动端移除featured-icon相关样式 ## 6. 脚本评审Showcase响应式改造 (script-review-showcase.css) - 主容器从@media切换为@container查询,跟随父容器自适应 - 新增880px/720px/560px三档container断点 - 图表列在720px以下改为水平进度条布局(bar从垂直改水平) - 图表列增加卡片边框/圆角/背景 - 品牌区域、评分标签、流程卡片逐级压缩 - @media保留外层padding控制 ## 7. 通知中心UI修复 (dark-green.css) - notification-center改为inline-flex定位锚点 - 面板改为absolute+flex列布局,修复定位偏移 - 列表flex自适应高度+overscroll-behavior: contain - 移动端面板右偏移clamp适配,箭头位置同步 - 高度单位从vh改为dvh,避免移动浏览器地址栏干扰
This commit is contained in:
@@ -194,10 +194,18 @@ function getHomeCarouselCardStyle(offset: number): CSSProperties {
|
||||
const depth = Math.abs(offset);
|
||||
const direction = Math.sign(offset);
|
||||
const isActive = depth === 0;
|
||||
const xByDepth = [0, 190, 320, 430, 520, 590];
|
||||
const xByDepth = [
|
||||
"0px",
|
||||
"clamp(52px, 13.5vw, 198px)",
|
||||
"clamp(90px, 22.5vw, 334px)",
|
||||
"clamp(122px, 30.5vw, 448px)",
|
||||
"clamp(148px, 37vw, 542px)",
|
||||
"clamp(170px, 42vw, 614px)",
|
||||
];
|
||||
const yByDepth = [8, -2, -8, -13, -18, -24];
|
||||
const scaleByDepth = [1, 1, 1, 1, 1, 1];
|
||||
const x = direction * (xByDepth[depth] ?? xByDepth[xByDepth.length - 1]!);
|
||||
const xDistance = xByDepth[depth] ?? xByDepth[xByDepth.length - 1]!;
|
||||
const x = direction < 0 ? `calc(0px - ${xDistance})` : xDistance;
|
||||
const y = yByDepth[depth] ?? yByDepth[yByDepth.length - 1]!;
|
||||
const z = isActive ? 90 : 28 - depth;
|
||||
const scale = scaleByDepth[depth] ?? scaleByDepth[scaleByDepth.length - 1]!;
|
||||
@@ -206,7 +214,7 @@ function getHomeCarouselCardStyle(offset: number): CSSProperties {
|
||||
"--apple-card-offset": offset,
|
||||
"--apple-card-depth": depth,
|
||||
"--apple-card-z": 80 - depth,
|
||||
"--apple-card-x": `${x}px`,
|
||||
"--apple-card-x": x,
|
||||
"--apple-card-y": `${y}px`,
|
||||
"--apple-card-z-offset": `${z}px`,
|
||||
"--apple-card-rotate-y": "0deg",
|
||||
@@ -622,15 +630,24 @@ function HomePage({ onOpenGenerate, onOpenCanvas, onOpenEcommerce, onOpenScriptR
|
||||
<div className="omni-home__actions" aria-label="首页入口">
|
||||
<button type="button" className="omni-home__entry" onClick={onOpenGenerate}>
|
||||
<PlusOutlined />
|
||||
<span>新手</span>
|
||||
<span>
|
||||
快速生成
|
||||
<small>新手友好</small>
|
||||
</span>
|
||||
</button>
|
||||
<button type="button" className="omni-home__entry omni-home__entry--primary" onClick={onOpenCanvas || onOpenGenerate}>
|
||||
<PlayCircleOutlined />
|
||||
<span>老手</span>
|
||||
<span>
|
||||
专业创作
|
||||
<small>画布工作流</small>
|
||||
</span>
|
||||
</button>
|
||||
<button type="button" className="omni-home__entry" onClick={onOpenEcommerce}>
|
||||
<ShoppingOutlined />
|
||||
<span>电商</span>
|
||||
<span>
|
||||
电商出图
|
||||
<small>商品视觉</small>
|
||||
</span>
|
||||
</button>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
Reference in New Issue
Block a user