diff --git a/app/page.tsx b/app/page.tsx index cb8782e..f6017b6 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -10,6 +10,7 @@ import Header from '@/components/Header' import RankingPanel from '@/components/RankingPanel' import AIChatWidget from '@/components/AIChatWidget' import ChangePasswordModal from '@/components/ChangePasswordModal' +import { useThemeStyles } from '@/lib/ui-styles' interface Material { id: string @@ -42,6 +43,7 @@ interface Material { export default function Home() { const { data: session, status } = useSession() const router = useRouter() + const styles = useThemeStyles() const [materials, setMaterials] = useState([]) const [loading, setLoading] = useState(true) const [showUploadModal, setShowUploadModal] = useState(false) @@ -983,43 +985,44 @@ export default function Home() { ) : ( <> -
- {materials.map((material) => ( -
- {/* Preview Image */} -
{ - // PSD、模特和视频类型直接跳转到详情页,其他类型打开预览弹窗 - if (material.materialType === 'PSD' || material.materialType === '模特' || material.materialType === '视频') { - router.push(`/share/${material.id}`) - } else { - setPreviewImage({ url: material.previewUrl, title: material.productModel }) - } - }} - > - {material.sceneName} - {/* SPU标签 */} -
- {material.productModel} -
- {/* 放大提示 */} -
- - - -
-
+
+
+ {materials.map((material) => ( +
+ {/* Preview Image */} +
{ + // PSD、模特和视频类型直接跳转到详情页,其他类型打开预览弹窗 + if (material.materialType === 'PSD' || material.materialType === '模特' || material.materialType === '视频') { + router.push(`/share/${material.id}`) + } else { + setPreviewImage({ url: material.previewUrl, title: material.productModel }) + } + }} + > + {material.sceneName} + {/* SPU标签 */} +
+ {material.productModel} +
+ {/* 放大提示 */} +
+ + + +
+
- {/* Info */} -
+ {/* Info */} +
{/* 店铺、场景、素材类型和渲染器 */}
@@ -1129,10 +1132,11 @@ export default function Home() { )} +
-
- ))} + ))} +
{/* 分页组件 */} diff --git a/优化计划与优先级.md b/优化计划与优先级.md index d9d8d35..0777114 100644 --- a/优化计划与优先级.md +++ b/优化计划与优先级.md @@ -63,17 +63,18 @@ #### 1.3 首页素材展示响应式优化 ⭐⭐⭐⭐ **需求编号**:8 **优先级**:高 +**状态**:✅ 已完成 **原因**: - 修复已知UI问题(卡片比例、边界间距) - 必须遵循统一UI原则 - 影响用户体验 **实施要点**: -- 修复卡片比例固定问题(使用 `aspect-ratio`) -- 添加合适的边距和间距(使用 `spacingStyles`) -- 使用三层架构样式系统 -- 响应式断点优化 -- 确保深浅色模式适配 +- ✅ 修复卡片比例固定问题(使用 `aspect-[3/4]` 替代固定高度) +- ✅ 添加容器边距(`px-4 sm:px-6 lg:px-8`)避免卡片贴边界 +- ✅ 使用三层架构样式系统(`useThemeStyles()` 和 `cardStyles.base`) +- ✅ 优化响应式断点和图片 sizes 属性 +- ✅ 确保深浅色模式适配(使用 `slate` 系列颜色) **依赖关系**:无 **影响范围**:首页素材展示 @@ -449,7 +450,7 @@ ### 第一阶段:基础组件与UI统一(2-3周) 1. ✅ 创建统一弹窗组件(1.1)- 已完成基础组件,待替换原生弹窗 2. ⏳ 素材预览面板统一(1.2) -3. ⏳ 首页素材展示响应式优化(1.3) +3. ✅ 首页素材展示响应式优化(1.3)- 已完成 4. ⏳ 首页UI统一到三层架构(1.4) 5. ⏳ 统一UI三层架构通用组件库(1.5) 6. ⏳ 深浅色主题适配优化(1.6) diff --git a/优化记录.md b/优化记录.md index e14d53a..d6af241 100644 --- a/优化记录.md +++ b/优化记录.md @@ -299,9 +299,12 @@ export default function MyComponent() { 2. ⏳ 素材预览面板统一 - 使用统一弹窗组件 - 统一退出逻辑 -3. ⏳ 首页素材展示响应式优化 - - 修复卡片比例问题 - - 优化边界间距 +3. ✅ 首页素材展示响应式优化 + - ✅ 修复卡片比例固定问题(使用 `aspect-[3/4]` 替代固定高度 `h-[400px]`) + - ✅ 添加容器边距(`px-4 sm:px-6 lg:px-8`)避免卡片贴到浏览器边界 + - ✅ 使用三层架构样式系统(`useThemeStyles()` 和 `cardStyles.base`) + - ✅ 优化图片 sizes 属性,提升响应式性能 + - ✅ 统一使用 `slate` 系列颜色,确保深浅色模式适配 **优先级 2:数据一致性与核心功能** 4. ⏳ 用户信息修改后同步素材信息 diff --git a/后续修改.txt b/后续修改.txt index 08c9f8c..4c4784b 100644 --- a/后续修改.txt +++ b/后续修改.txt @@ -7,6 +7,7 @@ 6.用户管理增加用户头像的设置,用户可以自己设置自己的头像。对于钉钉登陆的用户,可以直接用钉钉头像,抓不到钉钉头像的话,就不抓取。对于没有头像的用户,策略和LOGO的策略一样 7.首页上的排行榜关掉后的那个缩略按钮,也设置为可以拖动,且出现的位置是根据排行榜悬浮窗关闭前的位置 8.首页的素材展示要改一下,现在是有个问题,就是当我拖动浏览器侧边调整浏览器大小的时候,调整浏览器界面大小,小到一个阈值时,展示素材的卡片会从4个变成3个,这个时候素材卡片的比例就会变宽,这是不对的。要保持素材卡片比例是固定的。还有就是当浏览器变窄之后素材卡片会贴到浏览器的边界,很不美观,根据统一UI原则视觉改一下 + ✅ 已完成:使用 aspect-[3/4] 固定卡片比例,添加容器边距,使用三层架构样式系统 9.首页的素材展示可以设置素材展示卡片的大小,可以设置一个横向的滑块。素材卡片的展示形式可以设置为瀑布流,为低性能nas机器考虑,可以动态加载卡片数量,具体加载多少可以根据你的经验判断。或者你有更好的方式也可以提出建议 10.首页素材卡片中预览图下方的素材资料有点多,占用空间太大。可以优化一下,其中作者中的“作者:”可以不显示,直接显示作者的名字。可以在前面显示头像。文件名和文件大小也可以不显示。上传时间可以叠在预览图的右上角,默认隐藏,鼠标移动到卡片上亮起,要确保亮起状态的上传时间可以看清 11.素材卡片可以在左上角的素材名称前面加几个标签,如点赞榜,精品榜,下载榜,收藏榜等,你可以自由发挥,样式可以参考最高权限的显示ui,更主要的是视觉要好看,偏向苹果UI设计风格,但是要注意大方向一定是统一视觉的方案。