diff --git a/src/pages/LandingPage.tsx b/src/pages/LandingPage.tsx
index bca98c9..a6a1101 100644
--- a/src/pages/LandingPage.tsx
+++ b/src/pages/LandingPage.tsx
@@ -1,5 +1,5 @@
import { useEffect, useRef } from 'react';
-import { Button, Container, Title, Text, Group, Stack } from '@mantine/core';
+import { Button, Container, Title, Text, Group, Stack, Paper, ThemeIcon, SimpleGrid, Box } from '@mantine/core';
import { useNavigate } from 'react-router-dom';
import iconUrl from '../assets/icon.png';
@@ -48,7 +48,7 @@ function ZenBackground() {
let strokes: InkStroke[] = [];
let time = 0;
let lastStrokeTime = 0;
- const strokeInterval = 30; // 每隔一段时间生成新笔触
+ const strokeInterval = 30;
// 生成随机笔触
const createStroke = (): InkStroke | null => {
@@ -65,7 +65,7 @@ function ZenBackground() {
speed: random(0.4, 1.0),
inkAlpha: random(10, 30),
baseWeight: random(0.3, 1.5),
- maxLength: random(30, 90), // 缩短笔触长度,加快消失
+ maxLength: random(30, 90),
currentLength: 0,
complete: false,
};
@@ -77,7 +77,6 @@ function ZenBackground() {
for (let i = 0; i < 8; i++) {
const stroke = createStroke();
if (stroke) {
- // 随机偏移起始位置
stroke.currentLength = random(0, stroke.maxLength * 0.5);
strokes.push(stroke);
}
@@ -93,7 +92,7 @@ function ZenBackground() {
const animate = () => {
time += 0.008;
- // 快速淡出背景 - 让水墨痕迹更快消失
+ // 快速淡出背景
if (Math.floor(time * 125) % 3 === 0) {
ctx.fillStyle = 'rgba(250, 249, 247, 0.12)';
ctx.fillRect(0, 0, canvas.width, canvas.height);
@@ -102,9 +101,7 @@ function ZenBackground() {
// 定期生成新笔触
if (time - lastStrokeTime > strokeInterval * 0.01) {
lastStrokeTime = time;
- // 移除已完成太久的笔触
strokes = strokes.filter(s => !s.complete || s.currentLength < s.maxLength);
- // 添加新笔触(随机数量)
const newCount = Math.floor(random(0, 2));
for (let i = 0; i < newCount; i++) {
const stroke = createStroke();
@@ -116,18 +113,15 @@ function ZenBackground() {
for (const stroke of strokes) {
if (stroke.complete) continue;
- // 噪声驱动
const n = noise(stroke.x, stroke.y, time);
stroke.angle += (n - 0.5) * 0.12;
- // 呼吸感 - 更柔和
const breath = Math.sin(time * 1.5 + stroke.x * 0.01) * 0.25;
const currentSpeed = stroke.speed * (1 + breath * 0.2);
stroke.x += Math.cos(stroke.angle) * currentSpeed;
stroke.y += Math.sin(stroke.angle) * currentSpeed;
- // 笔触粗细 - 模拟提按
const progress = stroke.currentLength / stroke.maxLength;
const weightVar = Math.sin(progress * Math.PI) * 1.0;
const weight = Math.max(0.2, stroke.baseWeight + weightVar);
@@ -143,16 +137,13 @@ function ZenBackground() {
stroke.complete = true;
}
- // 绘制 - 水墨晕染效果
if (stroke.points.length > 1) {
for (let i = 1; i < stroke.points.length; i++) {
const p1 = stroke.points[i - 1];
const p2 = stroke.points[i];
- // 渐变透明度
const alpha = stroke.inkAlpha * (1 - i / stroke.points.length * 0.4) / 100;
const size = p2.weight * random(0.8, 1.2);
- // 绘制柔和的笔触
ctx.beginPath();
ctx.moveTo(p1.x, p1.y);
ctx.lineTo(p2.x, p2.y);
@@ -161,7 +152,6 @@ function ZenBackground() {
ctx.lineCap = 'round';
ctx.stroke();
- // 添加淡淡的墨点晕染
if (random(0, 1) < 0.3) {
ctx.beginPath();
ctx.arc(p2.x, p2.y, size * random(0.5, 1.5), 0, Math.PI * 2);
@@ -172,12 +162,12 @@ function ZenBackground() {
}
}
- // 绘制圆相(Ensō)- 缓慢呼吸
+ // 绘制圆相(Ensō)
const centerX = canvas.width / 2;
const centerY = canvas.height / 2;
const breathScale = 1 + Math.sin(time * 0.3) * 0.015;
const radius = Math.min(canvas.width, canvas.height) * 0.18 * breathScale;
- const gap = Math.PI * 0.18; // 开口
+ const gap = Math.PI * 0.18;
const startAngle = -Math.PI / 2 + time * 0.05;
ctx.beginPath();
@@ -224,6 +214,40 @@ function ZenBackground() {
);
}
+// 功能特性卡片
+function FeatureCard({
+ icon,
+ title,
+ description,
+}: {
+ icon: string;
+ title: string;
+ description: string;
+}) {
+ return (
+
+
+ {icon}
+
+ {title}
+
+
+ {description}
+
+
+
+ );
+}
+
export function LandingPage() {
const navigate = useNavigate();
@@ -285,75 +309,95 @@ export function LandingPage() {
-
+ {/* Hero 区域 */}
+
{/* 产品图标 */}
+ {/* 主标题 */}
掐日子
+ {/* 副标题 - 增强可读性 */}
AI 纪念日 · 提醒
+ {/* 描述文案 */}
轻便、灵活的倒数日和提醒应用
@@ -361,57 +405,70 @@ export function LandingPage() {
让每一个重要的日子都被铭记
-
+
+
-
-
- ◯
- 纪念日
-
-
- ◎
- 提醒
-
-
- ◇
- AI
-
-
- ▫
- 便签
-
-
-
+ {/* 功能介绍区域 */}
+
+
+
+
+
+
+
+
);