redesign homepage: 测测-style layout, icon grid for personality/zodiac tests, remove clinical terminology from headers

This commit is contained in:
jackyu66git
2026-08-02 14:25:37 +08:00
parent e6ad46fe87
commit 2686866376
14 changed files with 25369 additions and 168 deletions
+253 -117
View File
@@ -12,10 +12,11 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=no">
<title>愈心谷 · 心理健康服务</title>
<title>愈心谷</title>
<style>
:root{
--pri:#E54D42; --blue:#4A90E2; --green:#5CB85C;
--purple:#8B5CF6; --orange:#E8985A; --pink:#E0508C;
--text:#333; --sub:#999;
--hero-start:#FF9F80; --hero-end:#FFB8A6;
--bg-start:#FFD1C7; --bg-end:#FFC8B5;
@@ -23,14 +24,14 @@
*{box-sizing:border-box;margin:0;padding:0}
body{
font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei","Helvetica Neue",sans-serif;
background:linear-gradient(180deg,var(--bg-start) 0%,var(--bg-end) 40%,#fff5f0 100%);
background:linear-gradient(180deg,var(--bg-start) 0%,var(--bg-end) 30%,#fff5f0 100%);
color:var(--text);max-width:430px;margin:0 auto;min-height:100vh;
-webkit-font-smoothing:antialiased;
}
/* ── Top Bar ── */
.topbar{
text-align:center;padding:16px 0 10px;
text-align:center;padding:14px 0 8px;
position:sticky;top:0;z-index:10;
background:linear-gradient(180deg,var(--bg-start) 0%,rgba(255,209,199,0.6) 100%);
-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);
@@ -39,84 +40,141 @@ body{
/* ── Hero ── */
.hero{
background:linear-gradient(135deg,var(--hero-start),var(--hero-end));
border-radius:20px;margin:8px 16px 0;padding:28px 20px 36px;
position:relative;overflow:hidden;min-height:160px;
border-radius:20px;margin:6px 16px 0;padding:22px 20px 28px;
position:relative;overflow:hidden;
}
/* white translucent circles instead of emoji hearts */
.hero .dc{position:absolute;border-radius:50%;background:rgba(255,255,255,0.25);z-index:0}
.hero .dc1{width:50px;height:50px;top:10px;right:30px}
.hero .dc2{width:30px;height:30px;top:45px;right:70px}
.hero .dc3{width:20px;height:20px;top:20px;right:95px}
.hero .logo-wrap{position:relative;z-index:2;margin-bottom:10px}
.hero .sub{font-size:14px;color:rgba(255,255,255,0.92);position:relative;z-index:2}
/* hand-heart: CSS hearts instead of emoji */
.hero .logo-wrap{position:relative;z-index:2;margin-bottom:6px}
.hero .sub{font-size:13px;color:rgba(255,255,255,0.92);position:relative;z-index:2}
.hero .hearts-css{position:absolute;right:14px;bottom:16px;z-index:0;opacity:0.45}
.hero .hearts-css .hh{
display:inline-block;width:50px;height:50px;position:relative;
margin:0 4px;
display:inline-block;width:50px;height:50px;position:relative;margin:0 4px;
}
.hero .hearts-css .hh::before,.hero .hearts-css .hh::after{
content:"";position:absolute;width:26px;height:40px;border-radius:26px 26px 0 0;
background:#fff;
content:"";position:absolute;width:26px;height:40px;border-radius:26px 26px 0 0;background:#fff;
}
.hero .hearts-css .hh::before{left:15px;top:0;transform:rotate(-45deg);transform-origin:0 100%}
.hero .hearts-css .hh::after{left:0;top:0;transform:rotate(45deg);transform-origin:100% 100%}
.hero::after{
content:"";position:absolute;bottom:0;left:0;right:0;height:30px;
background:linear-gradient(transparent,rgba(255,209,199,0.3));
/* ── Birthday hint bar ── */
.bday-hint{
margin:12px 16px 0;padding:12px 16px;
background:rgba(255,255,255,0.7);border-radius:12px;
font-size:13px;color:var(--pri);text-align:center;
cursor:pointer;backdrop-filter:blur(4px);
}
/* ── Section ── */
.section{padding:0 16px;margin-top:24px}
.sec-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}
.sec-head .title{font-size:17px;font-weight:600;color:var(--text)}
.sec-head .more{font-size:13px;color:var(--sub);cursor:pointer}
.section{padding:0 16px;margin-top:18px}
.sec-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}
.sec-head .title{font-size:16px;font-weight:600;color:var(--text)}
.sec-head .more{font-size:12px;color:var(--sub);cursor:pointer;text-decoration:none}
/* ── Service Cards ── */
.services{display:grid;grid-template-columns:1fr 1fr;gap:12px}
/* ── Test Icon Grid ── */
.test-grid{
display:grid;grid-template-columns:repeat(4,1fr);gap:10px;
background:#fff;border-radius:16px;padding:18px 14px;
box-shadow:0 2px 10px rgba(0,0,0,0.04);
}
.test-item{
display:flex;flex-direction:column;align-items:center;gap:8px;
cursor:pointer;text-decoration:none;color:var(--text);
transition:transform 0.15s;padding:4px 0;position:relative;
}
.test-item:active{transform:scale(0.93)}
.test-item .icon{
width:52px;height:52px;border-radius:14px;
display:flex;align-items:center;justify-content:center;
font-size:24px;flex-shrink:0;
}
.test-item .label{
font-size:11px;color:#555;text-align:center;line-height:1.3;
max-width:64px;word-break:keep-all;
}
.test-item .badge{
position:absolute;top:-2px;right:8px;
font-size:9px;background:var(--pri);color:#fff;
padding:1px 5px;border-radius:6px;line-height:1.4;
}
/* icon colors */
.icon-pink{background:#FFECEC;color:var(--pri)}
.icon-blue{background:#E6F0FF;color:var(--blue)}
.icon-purple{background:#F0E6FF;color:var(--purple)}
.icon-orange{background:#FFF0E6;color:var(--orange)}
.icon-green{background:#E6FFE8;color:var(--green)}
.icon-rose{background:#FFE6F0;color:var(--pink)}
.icon-teal{background:#E6FFF5;color:#2EA88A}
.icon-gold{background:#FFF8E6;color:#C8923A}
.icon-night{background:#E8E0F0;color:#6B5B95}
/* ── Quick Cards ── */
.quick-cards{display:flex;flex-direction:column;gap:10px}
.quick-card{
display:flex;align-items:center;gap:12px;padding:14px 16px;
background:#fff;border-radius:12px;text-decoration:none;color:var(--text);
box-shadow:0 1px 6px rgba(0,0,0,0.04);transition:transform 0.12s;
position:relative;overflow:hidden;
}
.quick-card:active{transform:scale(0.98)}
.quick-card .qc-icon{
width:44px;height:44px;border-radius:12px;
display:flex;align-items:center;justify-content:center;
font-size:20px;flex-shrink:0;
}
.quick-card .qc-info{flex:1;min-width:0}
.quick-card .qc-info .qc-name{font-size:15px;font-weight:600;color:var(--text)}
.quick-card .qc-info .qc-meta{font-size:11px;color:var(--sub);margin-top:2px}
.quick-card .qc-arrow{font-size:16px;color:#ccc}
.quick-card .qc-tag{
position:absolute;top:0;right:0;
font-size:10px;background:var(--pri);color:#fff;
padding:2px 8px;border-radius:0 10px 0 10px;
}
/* ── Decode Card ── */
.decode-card{
background:#fff;border-radius:16px;padding:20px 16px;
box-shadow:0 2px 10px rgba(0,0,0,0.04);text-align:center;
}
.decode-card .dc-title{font-size:17px;font-weight:700;color:#C8923A;margin-bottom:2px}
.decode-card .dc-sub{font-size:12px;color:var(--sub);margin-bottom:14px}
.decode-card .dc-inputs{display:flex;gap:6px;align-items:center;justify-content:center;flex-wrap:wrap}
.decode-card input{
padding:10px 6px;border:1.5px solid #e8e0d8;border-radius:10px;
font-size:15px;text-align:center;outline:none;background:#fdfaf7;
}
.decode-card input.dc-y{width:62px}.decode-card input.dc-md{width:48px}
.decode-card .dc-sep{font-size:13px;color:var(--sub)}
.decode-card button{
padding:10px 18px;background:var(--pri);color:#fff;border:none;
border-radius:22px;font-size:14px;font-weight:600;cursor:pointer;
box-shadow:0 3px 10px rgba(229,77,66,.3);
}
/* ── Services Grid ── */
.services{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.svc-card{
border-radius:12px;padding:14px 12px;
display:flex;align-items:center;gap:10px;box-shadow:0 2px 6px rgba(0,0,0,0.04);
cursor:pointer;transition:transform 0.15s;
word-break:keep-all;overflow:hidden;
border-radius:12px;padding:14px 12px;display:flex;align-items:center;gap:10px;
box-shadow:0 2px 6px rgba(0,0,0,0.04);cursor:pointer;transition:transform 0.15s;
text-decoration:none;color:var(--text);word-break:keep-all;overflow:hidden;
}
.svc-card:active{transform:scale(0.97)}
/* CSS icons replacing emojis */
.svc-card .sicon{width:40px;height:40px;border-radius:10px;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-weight:700;font-size:16px}
.svc-card .sicon{width:40px;height:40px;border-radius:10px;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:18px;font-weight:700}
.svc-card .sinfo{flex:1;min-width:0}
.svc-card .sinfo .sl{font-size:14px;font-weight:600;color:var(--text);margin-bottom:2px;white-space:nowrap}
.svc-card .sinfo .sd{font-size:11px;color:var(--sub);white-space:nowrap}
.svc-psy{background:#FFECEC}.svc-psy .sicon{background:#FFD4D4;color:var(--pri)}
.svc-edu{background:#FFF8E6}.svc-edu .sicon{background:#FFE8C0;color:#E8985A}
.svc-ai{background:#E6F0FF}.svc-ai .sicon{background:#CDE3FF;color:var(--blue)}
.svc-heal{background:#E6FFE8}.svc-heal .sicon{background:#CDF0D0;color:var(--green)}
.svc-star{background:#F0E6FF}.svc-star .sicon{background:#D8C6F0;color:var(--purple)}
/* ── Cube ── */
.cube-wrap{position:relative;border-radius:16px;overflow:hidden;box-shadow:0 6px 20px rgba(0,0,0,0.1)}
.cube-wrap img{display:block;width:100%}
/* ── Activity Card ── */
.act-card{
background:#fff;border-radius:16px;padding:28px 20px;
position:relative;overflow:hidden;
box-shadow:0 4px 12px rgba(0,0,0,0.06);
}
/* fixed: strokes behind all text, lower opacity */
.act-card .strokes{position:absolute;inset:0;pointer-events:none;opacity:0.08;z-index:0}
.act-card .strokes span{position:absolute;border-radius:3px;transform:rotate(-30deg)}
.act-card .strokes .s1{top:15px;left:-5px;width:160px;height:10px;background:var(--hero-end)}
.act-card .strokes .s2{top:70px;right:-10px;width:120px;height:8px;background:var(--blue)}
.act-card .strokes .s3{bottom:45px;left:20px;width:100px;height:7px;background:#E0D5F5}
.act-card .strokes .s4{bottom:15px;right:0px;width:140px;height:6px;background:var(--green)}
.act-card .main-text{font-size:28px;font-weight:800;color:#222;letter-spacing:4px;margin-bottom:10px;position:relative;z-index:1;line-height:1}
.act-card .side{display:flex;gap:20px;margin-bottom:14px;position:relative;z-index:1}
.act-card .side .st{font-size:12px;color:var(--sub);line-height:1.7;white-space:nowrap}
.act-card .footer{font-size:11px;color:#aaa;border-top:1px solid #f0f0f0;padding-top:12px;position:relative;z-index:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* ── Bottom Card ── */
/* ── Bottom ── */
.bot-card{
background:#fff;border-radius:16px;padding:30px 20px;
background:#fff;border-radius:16px;padding:24px 20px;
margin:16px 16px 80px;position:relative;overflow:hidden;
box-shadow:0 2px 10px rgba(0,0,0,0.05);
}
@@ -124,7 +182,7 @@ body{
.bot-card .blobs span{display:inline-block;border-radius:50%}
.bot-card .blobs .b1{width:100px;height:100px;background:var(--hero-end);opacity:0.15;margin-right:-30px}
.bot-card .blobs .b2{width:60px;height:60px;background:#E0D5F5;opacity:0.2;margin-bottom:-20px}
.bot-card .btext{font-size:20px;color:#666;font-weight:300;position:relative;z-index:1;line-height:1.6}
.bot-card .btext{font-size:18px;color:#666;font-weight:300;position:relative;z-index:1;line-height:1.6}
.bot-card .btext .em{color:var(--pri);font-weight:500}
/* ── Nav ── */
@@ -137,15 +195,18 @@ body{
}
.nav-item{display:flex;flex-direction:column;align-items:center;gap:2px;font-size:10px;color:var(--sub);cursor:pointer;line-height:1}
.nav-item.active{color:var(--pri)}
/* CSS nav icons replacing emojis */
.nav-item .ni{width:20px;height:20px;display:flex;align-items:center;justify-content:center;font-size:16px;line-height:1}
.nav-item.active .ni{color:var(--pri)}
/* ── Divider ── */
.divider{display:flex;align-items:center;gap:12px;padding:0 16px;margin-top:24px}
.divider .line{flex:1;height:1px;background:rgba(0,0,0,0.08)}
.divider .txt{font-size:12px;color:var(--sub);white-space:nowrap}
@media(max-width:380px){
.hero .logo-wrap img{height:28px!important}
.svc-card{padding:10px 8px}
.svc-card .sinfo .sl{font-size:13px}
.act-card .main-text{font-size:22px}
.test-item .icon{width:44px;height:44px;font-size:20px}
.test-item .label{font-size:10px}
.svc-card{padding:10px 8px}.svc-card .sinfo .sl{font-size:13px}
}
</style>
</head>
@@ -156,24 +217,119 @@ body{
<!-- Hero -->
<div class="hero">
<div class="dc dc1"></div><div class="dc dc2"></div><div class="dc dc3"></div>
<div class="logo-wrap"><img src="logo.png" alt="愈心脊" style="height:36px"></div>
<p class="sub">专业的心理健康服务平台</p>
<div class="logo-wrap"><img src="logo.png" alt="愈心脊" style="height:32px"></div>
<p class="sub">愈心谷数字解构</p>
<div class="hearts-css"><span class="hh"></span><span class="hh"></span></div>
</div>
<!-- 愈心解码入口 -->
<!-- Birthday hint — like 测测's "输入生日,更加了解TA" -->
<div class="bday-hint" onclick="location.href='jiema.html'">
输入生日,更加了解自己 →
</div>
<!-- ═══ 认识自己 — 星座 & 人格 ═══ -->
<div class="section">
<div style="background:#fff;border-radius:18px;padding:22px 18px;box-shadow:0 4px 16px rgba(0,0,0,0.06);text-align:center;">
<div style="font-size:18px;font-weight:700;color:#C8923A;margin-bottom:4px;">🔮 愈心解码</div>
<div style="font-size:12px;color:var(--sub);margin-bottom:16px;">输入生日,解锁你的身心密码</div>
<div style="display:flex;gap:6px;align-items:center;justify-content:center;flex-wrap:wrap;">
<input type="number" id="dy" placeholder="1990" maxlength="4" style="width:62px;padding:10px 6px;border:1.5px solid #e8e0d8;border-radius:10px;font-size:15px;text-align:center;outline:none;background:#fdfaf7;">
<span style="font-size:13px;color:var(--sub);"></span>
<input type="number" id="dm" placeholder="1" maxlength="2" style="width:48px;padding:10px 6px;border:1.5px solid #e8e0d8;border-radius:10px;font-size:15px;text-align:center;outline:none;background:#fdfaf7;">
<span style="font-size:13px;color:var(--sub);"></span>
<input type="number" id="dd" placeholder="1" maxlength="2" style="width:48px;padding:10px 6px;border:1.5px solid #e8e0d8;border-radius:10px;font-size:15px;text-align:center;outline:none;background:#fdfaf7;">
<span style="font-size:13px;color:var(--sub);"></span>
<button onclick="goDecode()" style="padding:10px 18px;background:var(--pri);color:#fff;border:none;border-radius:22px;font-size:14px;font-weight:600;cursor:pointer;box-shadow:0 3px 10px rgba(229,77,66,.3);">生成 →</button>
<div class="sec-head">
<span class="title">认识自己</span>
</div>
<div class="test-grid">
<a href="xingjing_app.html" class="test-item">
<div class="icon icon-night"></div>
<div class="label">星座星盘</div>
<span class="badge">AI</span>
</a>
<a href="scale_test.html?slug=mbti" class="test-item">
<div class="icon icon-blue">🧩</div>
<div class="label">MBTI人格</div>
</a>
<a href="scale_test.html?slug=jxrg" class="test-item">
<div class="icon icon-purple"></div>
<div class="label">九型人格</div>
</a>
<a href="scale_test.html?slug=xl16" class="test-item">
<div class="icon icon-teal"></div>
<div class="label">大五人格</div>
</a>
<a href="scale_test.html?slug=gd2" class="test-item">
<div class="icon icon-rose">💕</div>
<div class="label">恋爱能力</div>
</a>
<a href="scale_test.html?slug=eq1" class="test-item">
<div class="icon icon-pink"></div>
<div class="label">情商测试</div>
</a>
<a href="scale_test.html?slug=duoyuan80" class="test-item">
<div class="icon icon-orange">💡</div>
<div class="label">多元智能</div>
</a>
<a href="scale_test.html?slug=gd7" class="test-item">
<div class="icon icon-gold">🧭</div>
<div class="label">职业兴趣</div>
</a>
<a href="scale_test.html?slug=xl6" class="test-item">
<div class="icon icon-blue">16</div>
<div class="label">16PF</div>
</a>
<a href="scale_test.html?slug=xl3" class="test-item">
<div class="icon icon-purple">EP</div>
<div class="label">艾森克</div>
</a>
<a href="scale_test.html?slug=gd3" class="test-item">
<div class="icon icon-green"></div>
<div class="label">压力指数</div>
</a>
<a href="scales.html" class="test-item">
<div class="icon icon-purple" style="background:#f5f5f5;color:#aaa;"></div>
<div class="label">更多</div>
</a>
</div>
</div>
<!-- ═══ 热门推荐 ═══ -->
<div class="section">
<div class="sec-head"><span class="title">热门推荐</span></div>
<div class="quick-cards">
<a href="scale_test.html?slug=mbti" class="quick-card">
<div class="qc-icon icon-blue">🧩</div>
<div class="qc-info">
<div class="qc-name">MBTI 人格测试</div>
<div class="qc-meta">4个维度 · 16种类型 · 看看你是哪一型</div>
</div>
<span class="qc-arrow"></span>
</a>
<a href="xingjing_app.html" class="quick-card">
<div class="qc-icon icon-night"></div>
<div class="qc-info">
<div class="qc-name">星镜 · 动态星盘</div>
<div class="qc-meta">AI视频报告 · 深度星座解读</div>
</div>
<span class="qc-tag"></span>
<span class="qc-arrow"></span>
</a>
<a href="scale_test.html?slug=jxrg" class="quick-card">
<div class="qc-icon icon-purple"></div>
<div class="qc-info">
<div class="qc-name">九型人格测试</div>
<div class="qc-meta">180题完整版 · 深度探索你的内在动机</div>
</div>
<span class="qc-arrow"></span>
</a>
</div>
</div>
<!-- ═══ 愈心解码 ═══ -->
<div class="section">
<div class="decode-card">
<div class="dc-title">🔮 愈心解码</div>
<div class="dc-sub">一个生日,读懂你的身与心</div>
<div class="dc-inputs">
<input type="number" id="dy" placeholder="1990" maxlength="4" class="dc-y">
<span class="dc-sep"></span>
<input type="number" id="dm" placeholder="1" maxlength="2" class="dc-md">
<span class="dc-sep"></span>
<input type="number" id="dd" placeholder="1" maxlength="2" class="dc-md">
<span class="dc-sep"></span>
<button onclick="goDecode()">生成 →</button>
</div>
</div>
</div>
@@ -193,52 +349,32 @@ function goDecode(){
});
</script>
<!-- 疗愈魔方 -->
<div class="section">
<div class="sec-head" style="justify-content:center;flex-direction:column;align-items:center;gap:4px">
<span class="title">愈心魔方</span>
<span style="font-size:12px;color:var(--sub);font-weight:400">愈见魔方,遇见自己</span>
</div>
<div class="cube-wrap">
<img src="cube.jpg" alt="愈心脊疗愈魔方">
</div>
<!-- ═══ 分隔 ═══ -->
<div class="divider">
<span class="line"></span>
<span class="txt">更多服务</span>
<span class="line"></span>
</div>
<!-- 服务卡片(无标题) -->
<div class="section">
<!-- ═══ 专业量表 ═══ -->
<div class="section" style="margin-top:0;">
<div class="services">
<div class="svc-card svc-psy">
<div class="sicon">💬</div>
<div class="sinfo"><div class="sl">心理咨询</div><div class="sd">你的心灵港湾</div></div>
</div>
<div class="svc-card svc-edu">
<a href="scales.html" class="svc-card svc-psy">
<div class="sicon">📋</div>
<div class="sinfo"><div class="sl">心理评估</div><div class="sd">科学评估,即刻开始</div></div>
</div>
<div class="svc-card svc-ai">
<div class="sicon"></div>
<div class="sinfo"><div class="sl">私域活动</div><div class="sd">从第一个好友开始</div></div>
</div>
<div class="svc-card svc-heal">
<div class="sicon"></div>
<div class="sinfo"><div class="sl">健康管理</div><div class="sd">关注今天,即关注未来</div></div>
</div>
</div>
</div>
<!-- 活动中心 -->
<div class="section">
<div class="sec-head"><span class="title">活动中心</span><span class="more">更多 →</span></div>
<div class="act-card">
<div class="strokes">
<span class="s1"></span><span class="s2"></span><span class="s3"></span><span class="s4"></span>
</div>
<div class="main-text">I SEE YOU</div>
<div class="side">
<div class="st">艺术<br>无边界</div>
<div class="st">表达有<br>力量</div>
</div>
<div class="footer">NDI叙事绘画治疗法®九周年大会</div>
<div class="sinfo"><div class="sl">专业量表</div><div class="sd">56个临床量表</div></div>
</a>
<a href="yangsheng.html" class="svc-card svc-heal">
<div class="sicon">☯️</div>
<div class="sinfo"><div class="sl">AI东方养生</div><div class="sd">易经 × 内经</div></div>
</a>
<a href="shuzi.html" class="svc-card svc-ai">
<div class="sicon"></div>
<div class="sinfo"><div class="sl">数字心理学</div><div class="sd">生命数字解构</div></div>
</a>
<a href="mindmap.html" class="svc-card svc-star">
<div class="sicon">🧠</div>
<div class="sinfo"><div class="sl">愈心脑图</div><div class="sd">可视化架构</div></div>
</a>
</div>
</div>
@@ -251,8 +387,8 @@ function goDecode(){
<!-- Nav -->
<div class="nav">
<div class="nav-item active"><span class="ni"></span>首页</div>
<div class="nav-item"><span class="ni"></span>心理咨询</div>
<div class="nav-item"><span class="ni"></span>心理测评</div>
<div class="nav-item"><span class="ni"></span>认识自己</div>
<div class="nav-item"><span class="ni"></span>专业测评</div>
<div class="nav-item"><span class="ni"></span>私域活动</div>
<div class="nav-item"><span class="ni"></span>健康管理</div>
<div class="nav-item"><span class="ni"></span>我的</div>