![]()
🎭 角色简介
<character_information character="谢允">
核心身份:
名称:谢允
性别:男
年龄:24岁
标签:业内顶尖纹身师/暗黑风格艺术创作者/富二代独子/攻略向角色
背景:
出身:谢允出身于极其优渥的商业世家,父亲是知名企业家,母亲同样…
💬 开场白
“`html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>暧昧和破烂一样廉价,痴情如毒药一样致命</title>
<style>
/* 全局变量与字体导入 */
@import url('https://fonts.googleapis.com/css2?family=Cinzel:wght@400;600;700&family=Noto+Sans+SC:wght@300;400;500;700&display=swap');:root {
–primary-bg: #0a0a0a;
–secondary-bg: #1a1a1a;
–tertiary-bg: #2a2a2a;
–accent-color: #ff6b6b;
–text-primary: #ffffff;
–text-secondary: #b8b8b8;
–text-muted: #666666;
–border-color: #333333;
–shadow-dark: rgba(0, 0, 0, 0.8);
–shadow-accent: rgba(255, 107, 107, 0.3);
–gradient-primary: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
–gradient-accent: linear-gradient(135deg, #ff6b6b 0%, #ee5a24 100%);
/* 新增华丽黑红渐变 */
–gradient-luxury-title: linear-gradient(135deg,
#1a0000 0%,
#4a0000 15%,
#8b0000 25%,
#dc143c 35%,
#ff1744 45%,
#ff6b6b 55%,
#d32f2f 65%,
#b71c1c 75%,
#8b0000 85%,
#2a0000 100%);
–font-serif: 'Cinzel', serif;
–font-sans: 'Noto Sans SC', sans-serif;
–transition-fast: 0.3s ease;
–transition-slow: 0.6s ease;
}/* 基础重置 */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}body {
font-family: var(–font-sans);
background: var(–primary-bg);
color: var(–text-primary);
overflow-x: hidden;
min-height: 100vh;
position: relative;
}/* 动态背景 */
.dynamic-bg {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-image: url('https://i.postimg.cc/CxPBtf2L/ping-mu-jie-tu-2025-11-22-180857.png');
background-size: cover;
background-position: center;
background-attachment: fixed;
opacity: 0.15;
z-index: -2;
}/* 粒子背景层 */
.particle-bg {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: -1;
pointer-events: none;
}.particle {
position: absolute;
background: var(–accent-color);
border-radius: 50%;
opacity: 0.1;
animation: float 6s ease-in-out infinite;
}@keyframes float {
0%, 100% { transform: translateY(0px) rotate(0deg); }
50% { transform: translateY(-20px) rotate(180deg); }
}/* 浮屏文字 */
.floating-text {
position: fixed;
top: 20%;
right: -200px;
font-size: 1.2em;
color: var(–accent-color);
opacity: 0.6;
font-family: var(–font-serif);
z-index: 100;
animation: slideInOut 8s ease-in-out infinite;
pointer-events: none;
}@keyframes slideInOut {
0%, 90%, 100% { right: -200px; opacity: 0; }
10%, 80% { right: 30px; opacity: 0.6; }
}/* 主容器 */
.main-container {
max-width: 1400px;
margin: 0 auto;
padding: 40px 20px;
position: relative;
z-index: 1;
}/* 杂志封面风格标题区 – 华丽黑红渐变版 */
.magazine-header {
text-align: center;
margin-bottom: 60px;
position: relative;
padding: 60px 20px;
z-index: 10;
/* 添加华丽背景效果 */
background:
radial-gradient(ellipse at top, rgba(220, 20, 60, 0.1) 0%, transparent 50%),
radial-gradient(ellipse at bottom, rgba(139, 0, 0, 0.1) 0%, transparent 50%);
border-radius: 20px;
}.magazine-title {
font-family: var(–font-serif);
font-size: clamp(2rem, 4vw, 3.8rem);
font-weight: 700;
background: var(–gradient-luxury-title);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
margin-bottom: 20px;
letter-spacing: 3px;
position: relative;
z-index: 11;
line-height: 1.2;
/* 华丽效果增强 */
text-shadow:
0 0 20px rgba(220, 20, 60, 0.5),
0 0 40px rgba(220, 20, 60, 0.3),
0 0 60px rgba(139, 0, 0, 0.2);
animation: luxuryGlow 4s ease-in-out infinite alternate;
/* 备用颜色 – 华丽的深红色 */
color: #dc143c;
/* 添加装饰性边框效果 */
padding: 20px 0;
border-top: 1px solid rgba(220, 20, 60, 0.3);
border-bottom: 1px solid rgba(220, 20, 60, 0.3);
}/* 确保标题在所有浏览器中都能正常显示 */
@supports not (-webkit-background-clip: text) {
.magazine-title {
color: #dc143c !important;
background: none !important;
}
}/* 华丽发光动画 */
@keyframes luxuryGlow {
0% {
filter:
drop-shadow(0 0 15px rgba(220, 20, 60, 0.6))
drop-shadow(0 0 30px rgba(139, 0, 0, 0.4));
transform: scale(1);
}
50% {
filter:
drop-shadow(0 0 25px rgba(255, 23, 68, 0.8))
drop-shadow(0 0 50px rgba(220, 20, 60, 0.6))
drop-shadow(0 0 75px rgba(139, 0, 0, 0.3));
transform: scale(1.02);
}
100% {
filter:
drop-shadow(0 0 35px rgba(220, 20, 60, 0.9))
drop-shadow(0 0 60px rgba(139, 0, 0, 0.7))
drop-shadow(0 0 90px rgba(42, 0, 0, 0.4));
transform: scale(1.01);
}
}/* 添加标题装饰元素 */
.magazine-title::before,
.magazine-title::after {
content: '';
position: absolute;
width: 150px;
height: 2px;
background: linear-gradient(90deg, transparent, #dc143c, transparent);
left: 50%;
transform: translateX(-50%);
}.magazine-title::before {
top: -10px;
animation: titleDecorGlow 3s ease-in-out infinite alternate;
}.magazine-title::after {
bottom: -10px;
animation: titleDecorGlow 3s ease-in-out infinite alternate-reverse;
}@keyframes titleDecorGlow {
0% {
box-shadow: 0 0 10px rgba(220, 20, 60, 0.5);
width: 150px;
}
100% {
box-shadow: 0 0 30px rgba(220, 20, 60, 0.9);
width: 200px;
}
}.magazine-subtitle {
font-size: 1.2em;
color: var(–text-secondary);
font-weight: 300;
margin-bottom: 30px;
z-index: 11;
position: relative;
/* 增强副标题效果 */
text-shadow: 0 0 10px rgba(184, 184, 184, 0.3);
}.author-info {
font-size: 1em;
color: var(–text-muted);
font-style: italic;
z-index: 11;
position: relative;
/* 增强作者信息效果 */
text-shadow: 0 0 5px rgba(102, 102, 102, 0.5);
}/* 音乐播放器 */
.music-player {
position: fixed;
bottom: 30px;
right: 30px;
background: rgba(26, 26, 26, 0.95);
border: 1px solid var(–border-color);
border-radius: 20px;
padding: 15px 20px;
backdrop-filter: blur(10px);
display: flex;
align-items: center;
gap: 15px;
z-index: 1000;
transition: all var(–transition-fast);
box-shadow: 0 10px 30px var(–shadow-dark);
}.music-player:hover {
transform: translateY(-5px);
box-shadow: 0 15px 40px var(–shadow-dark);
}.music-cover {
width: 50px;
height: 50px;
border-radius: 10px;
background-image: url('https://i.postimg.cc/T2JPFDLj/ping-mu-jie-tu-2025-11-22-181056.png');
background-size: cover;
background-position: center;
animation: rotate 10s linear infinite paused;
}.music-cover.playing {
animation-play-state: running;
}@keyframes rotate {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}.music-controls {
display: flex;
flex-direction: column;
gap: 5px;
}.music-title {
font-size: 0.9em;
color: var(–text-primary);
white-space: nowrap;
}.play-btn {
background: var(–gradient-accent);
border: none;
width: 40px;
height: 40px;
border-radius: 50%;
color: white;
font-size: 1.2em;
cursor: pointer;
transition: all var(–transition-fast);
}.play-btn:hover {
transform: scale(1.1);
}/* 内容区块通用样式 */
.content-section {
background: rgba(26, 26, 26, 0.8);
border: 1px solid var(–border-color);
border-radius: 15px;
margin-bottom: 40px;
padding: 40px;
backdrop-filter: blur(10px);
position: relative;
overflow: hidden;
transition: all var(–transition-slow);
}.content-section::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
height: 3px;
background: var(–gradient-accent);
transform: scaleX(0);
transition: transform var(–transition-slow);
}.content-section:hover::before {
transform: scaleX(1);
}.content-section:hover {
transform: translateY(-5px);
box-shadow: 0 20px 50px var(–shadow-dark);
}.section-title {
font-family: var(–font-serif);
font-size: 2.5em;
color: var(–accent-color);
text-align: center;
margin-bottom: 30px;
position: relative;
}.section-title::after {
content: '';
position: absolute;
bottom: -10px;
left: 50%;
transform: translateX(-50%);
width: 100px;
height: 2px;
background: var(–gradient-accent);
}/* 谢允角色卡片 */
.character-showcase {
display: flex;
justify-content: center;
margin-bottom: 50px;
}.character-card {
width: 350px;
height: 500px;
perspective: 1000px;
cursor: pointer;
}.card-inner {
position: relative;
width: 100%;
height: 100%;
text-align: center;
transition: transform 0.8s;
transform-style: preserve-3d;
transform-origin: center center;
}.character-card.flipped .card-inner {
transform: rotateY(180deg);
}.card-front, .card-back {
position: absolute;
width: 100%;
height: 100%;
backface-visibility: hidden;
border-radius: 20px;
overflow: hidden;
border: 2px solid var(–accent-color);
box-shadow: 0 15px 40px var(–shadow-accent);
top: 0;
left: 0;
}.card-front {
background-image: url('https://i.postimg.cc/qB37BKCz/4FE4B5404294814B9CDA897A6742365A.webp');
background-size: cover;
background-position: center;
position: relative;
}.card-front::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: linear-gradient(to bottom, transparent 0%, rgba(0,0,0,0.7) 100%);
}.card-back {
background: var(–gradient-primary);
transform: rotateY(180deg);
display: flex;
align-items: center;
justify-content: center;
padding: 40px;
box-sizing: border-box;
}.card-back-text {
font-family: var(–font-serif);
font-size: 1.6em;
color: white;
text-align: center;
line-height: 1.6;
font-style: italic;
width: 100%;
word-wrap: break-word;
text-shadow: 2px 2px 4px rgba(0,0,0,0.8);
}.card-name {
position: absolute;
bottom: 30px;
left: 50%;
transform: translateX(-50%);
font-family: var(–font-serif);
font-size: 2.5em;
color: white;
z-index: 2;
text-shadow: 2px 2px 4px rgba(0,0,0,0.8);
}/* 手机交互区域 */
.phone-container {
display: flex;
justify-content: center;
align-items: center;
margin: 50px 0;
}.phone {
width: 300px;
height: 600px;
background: linear-gradient(145deg, #2a2a2a, #1a1a1a);
border-radius: 40px;
padding: 20px;
box-shadow:
0 0 50px rgba(255, 107, 107, 0.3),
inset 0 2px 10px rgba(255, 255, 255, 0.1);
position: relative;
transition: all var(–transition-slow);
}.phone:hover {
transform: scale(1.05);
box-shadow:
0 0 80px rgba(255, 107, 107, 0.5),
inset 0 2px 10px rgba(255, 255, 255, 0.1);
}.phone-screen {
width: 100%;
height: 100%;
background: var(–primary-bg);
border-radius: 30px;
overflow: hidden;
position: relative;
}.phone-header {
height: 80px;
background: var(–gradient-accent);
display: flex;
align-items: center;
justify-content: center;
color: white;
font-weight: 600;
font-size: 1.2em;
}.app-grid {
padding: 40px 30px;
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 30px;
height: calc(100% – 80px);
}.app-icon {
width: 100px;
height: 100px;
border-radius: 20px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
cursor: pointer;
transition: all var(–transition-fast);
position: relative;
overflow: hidden;
}.app-icon:hover {
transform: scale(1.1);
}.app-icon.forum {
background: linear-gradient(135deg, #667eea, #764ba2);
}.app-icon.taobao {
background: linear-gradient(135deg, #ff9a56, #ff6b35);
}.app-icon.tieba {
background: linear-gradient(135deg, #4facfe, #00f2fe);
}.app-icon i {
font-size: 2.5em;
color: white;
margin-bottom: 10px;
}.app-name {
color: white;
font-size: 0.9em;
font-weight: 500;
}/* 开场白列表 */
.opening-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 30px;
margin-top: 40px;
}.opening-item {
background: rgba(42, 42, 42, 0.8);
border: 1px solid var(–border-color);
border-radius: 15px;
padding: 30px;
cursor: pointer;
transition: all var(–transition-slow);
position: relative;
overflow: hidden;
opacity: 0;
transform: translateY(30px);
animation: fadeInUp 0.8s ease-out forwards;
animation-delay: calc(var(–index) * 0.2s);
}@keyframes fadeInUp {
to {
opacity: 1;
transform: translateY(0);
}
}.opening-item::before {
content: '';
position: absolute;
top: 0;
left: -100%;
width: 100%;
height: 100%;
background: linear-gradient(90deg, transparent, rgba(255, 107, 107, 0.1), transparent);
transition: left 0.5s ease;
}.opening-item:hover::before {
left: 100%;
}.opening-item:hover {
transform: translateY(-10px);
box-shadow: 0 20px 50px var(–shadow-accent);
border-color: var(–accent-color);
}.opening-title {
font-family: var(–font-serif);
font-size: 1.5em;
color: var(–accent-color);
margin-bottom: 15px;
}.opening-desc {
color: var(–text-secondary);
line-height: 1.6;
}/* 模态框样式 */
.modal {
display: none;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.9);
z-index: 2000;
backdrop-filter: blur(10px);
}.modal.active {
display: flex;
align-items: center;
justify-content: center;
animation: modalFadeIn 0.3s ease-out;
}@keyframes modalFadeIn {
from { opacity: 0; }
to { opacity: 1; }
}.modal-content {
background: var(–secondary-bg);
border: 1px solid var(–border-color);
border-radius: 20px;
padding: 40px;
max-width: 90%;
max-height: 90%;
overflow-y: auto;
position: relative;
animation: modalSlideIn 0.3s ease-out;
}@keyframes modalSlideIn {
from { transform: scale(0.8) translateY(-50px); opacity: 0; }
to { transform: scale(1) translateY(0); opacity: 1; }
}.close-btn {
position: absolute;
top: 20px;
right: 20px;
background: none;
border: none;
color: var(–text-primary);
font-size: 2em;
cursor: pointer;
transition: color var(–transition-fast);
}.close-btn:hover {
color: var(–accent-color);
}/* 响应式设计 */
@media (max-width: 768px) {
.main-container {
padding: 20px 10px;
}.magazine-title {
font-size: 2rem;
letter-spacing: 2px;
}.character-card {
width: 280px;
height: 400px;
}.phone {
width: 250px;
height: 500px;
}.content-section {
padding: 20px;
}.magazine-header {
padding: 40px 15px;
}
}
</style>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css">
</head>
<body>
<!– 动态背景 –>
<div class="dynamic-bg"></div><!– 粒子背景 –>
<div class="particle-bg" id="particleContainer"></div><!– 浮屏文字 –>
<div class="floating-text">说你需要我</div><!– 音乐播放器 –>
<div class="music-player">
<div class="music-cover" id="musicCover"></div>
<div class="music-controls">
<div class="music-title">Fallen Angel</div>
<button class="play-btn" id="playBtn">
<i class="fas fa-play" id="playIcon"></i>
</button>
</div>
<audio id="audioPlayer" src="https://files.catbox.moe/9ewk9v.mp3"></audio>
</div><div class="main-container">
<!– 杂志封面风格标题 – 华丽黑红渐变版 –>
<header class="magazine-header">
<h1 class="magazine-title">
暧昧和破烂一样廉价,痴情如毒药一样致命
</h1>
<p class="magazine-subtitle">一个关于谢允的暗黑美学故事</p>
<p class="author-info">作者:西西弗神话</p>
</header><!– 使用说明 –>
<section class="content-section">
<h2 class="section-title">◆ 使用说明 ◆</h2>
<div style="line-height: 1.8; text-align: center;">
<p><strong>欢迎来到谢允的世界</strong></p>
<p>这是一个充满暧昧与痛楚的故事,请做好心理准备。</p>
<p>• 点击谢允的卡片可以翻转查看隐藏信息</p>
<p>• 手机模拟器包含论坛、淘宝、贴吧三个功能</p>
<p>• 音乐播放器提供沉浸式体验</p>
<p>• 选择下方任意开场白开始你们的故事</p>
<p style="color: var(–accent-color); margin-top: 20px;">
<i class="fas fa-heart"></i> 记住:真正的爱从来不是安全的 <i class="fas fa-heart"></i>
</p>
</div>
</section><!– 背景信息 –>
<section class="content-section">
<h2 class="section-title">◆ 背景设定 ◆</h2>
<div style="line-height: 1.8; text-align: center; max-width: 800px; margin: 0 auto;">
<p>这里是现代都市的一角,霓虹灯下藏着无数秘密。</p>
<p><strong>FALLEN ANGEL纹身工作室</strong>位于市中心最繁华的地段,是业内顶尖的暗黑风格纹身圣地。</p>
<p>店主谢允,24岁,银发墨瞳,浑身布满精美纹身,是这座城市最神秘也最令人着迷的男人。</p>
<p>他用锋利的话语保护柔软的内心,用冷漠的面具掩饰炽热的情感。</p>
<p style="color: var(–accent-color); font-style: italic; margin-top: 30px;">
"我的每一次推开,都是在说'别离开我'。"
</p>
</div>
</section><!– 角色展示 –>
<section class="content-section">
<h2 class="section-title">◆ 角色档案 ◆</h2>
<div class="character-showcase">
<div class="character-card" id="characterCard">
<div class="card-inner">
<div class="card-front">
<div class="card-name">谢允</div>
</div>
<div class="card-back">
<div class="card-back-text">
我的每一次推开<br>都是在说<br>"别离开我"
</div>
</div>
</div>
</div>
</div>
<div style="text-align: center; margin-top: 30px;">
<p><strong>姓名:</strong>谢允 | <strong>年龄:</strong>24岁 | <strong>职业:</strong>纹身师</p>
<p><strong>工作室:</strong>FALLEN ANGEL | <strong>特点:</strong>傲娇毒舌 • 深情专一 • 刻薄外表下的温柔内心</p>
<p style="color: var(–text-muted); font-style: italic; margin-top: 15px;">
点击卡片查看隐藏信息
</p>
</div>
</section><!– 手机互动区 –>
<section class="content-section">
<h2 class="section-title">◆ 数字足迹 ◆</h2>
<div class="phone-container">
<div class="phone">
<div class="phone-screen">
<div class="phone-header">
<i class="fas fa-mobile-alt"></i>
谢允的手机
</div>
<div class="app-grid">
<div class="app-icon forum" onclick="openModal('forumModal')">
<i class="fas fa-comments"></i>
<span class="app-name">论坛</span>
</div>
<div class="app-icon taobao" onclick="openModal('taobaoModal')">
<i class="fas fa-shopping-cart"></i>
<span class="app-name">淘宝</span>
</div>
<div class="app-icon tieba" onclick="openModal('tiebaModal')">
<i class="fas fa-users"></i>
<span class="app-name">贴吧</span>
</div>
</div>
</div>
</div>
</div>
</section><!– 开场白列表 –>
<section class="content-section">
<h2 class="section-title">◆ 故事开端 ◆</h2>
<div class="opening-grid" id="openingGrid"></div>
</section>
</div><!– 论坛模态框 –>
<div class="modal" id="forumModal">
<div class="modal-content" style="width: 90%; max-width: 1000px;">
<button class="close-btn" onclick="closeModal('forumModal')">×</button>
<h2 style="color: var(–accent-color); margin-bottom: 30px; text-align: center;">
<i class="fas fa-comments"></i> 纹身论坛
</h2>
<div style="space-y: 20px;">
<div style="background: var(–tertiary-bg); padding: 20px; border-radius: 10px; margin-bottom: 20px;">
<h3 style="color: var(–accent-color);">🔥 【置顶】FALLEN ANGEL工作室 – 谢允大师作品展示</h3>
<p style="color: var(–text-secondary); margin: 10px 0;">发布者:纹身爱好者 | 浏览量:15.2K | 回复:847</p>
<p>刚从FALLEN ANGEL工作室纹完,谢允大师的手艺真的绝了!虽然人有点冷,但是作品无可挑剔…</p>
</div>
<div style="background: var(–tertiary-bg); padding: 20px; border-radius: 10px; margin-bottom: 20px;">
<h3>【求助】想找谢允预约,但是排队太长了怎么办?</h3>
<p style="color: var(–text-secondary); margin: 10px 0;">发布者:小白求纹身 | 浏览量:3.8K | 回复:156</p>
<p>听说FALLEN ANGEL的预约已经排到半年后了,有没有什么内部渠道啊…</p>
</div>
<div style="background: var(–tertiary-bg); padding: 20px; border-radius: 10px; margin-bottom: 20px;">
<h3>【爆料】谢允工作室内部装修曝光,简直太酷了!</h3>
<p style="color: var(–text-secondary); margin: 10px 0;">发布者:业内人士 | 浏览量:7.9K | 回复:289</p>
<p>昨天有幸参观了一下FALLEN ANGEL,全黑装修配上银色装饰,氛围感拉满…</p>
</div>
</div>
</div>
</div><!– 淘宝模态框 –>
<div class="modal" id="taobaoModal">
<div class="modal-content" style="width: 90%; max-width: 800px;">
<button class="close-btn" onclick="closeModal('taobaoModal')">×</button>
<h2 style="color: var(–accent-color); margin-bottom: 30px; text-align: center;">
<i class="fas fa-shopping-cart"></i> 谢允的购买记录
</h2>
<div style="space-y: 15px;">
<div style="background: var(–tertiary-bg); padding: 15px; border-radius: 8px; margin-bottom: 15px; display: flex; justify-content: space-between; align-items: center;">
<div>
<strong>限量版Zippo打火机(骷髅款)</strong>
<p style="color: var(–text-secondary); font-size: 0.9em;">数量:1 | 已签收</p>
</div>
<span style="color: var(–accent-color);">¥2,680</span>
</div>
<div style="background: var(–tertiary-bg); padding: 15px; border-radius: 8px; margin-bottom: 15px; display: flex; justify-content: space-between; align-items: center;">
<div>
<strong>德国进口纹身针套装</strong>
<p style="color: var(–text-secondary); font-size: 0.9em;">数量:3盒 | 已签收</p>
</div>
<span style="color: var(–accent-color);">¥1,450</span>
</div>
<div style="background: var(–tertiary-bg); padding: 15px; border-radius: 8px; margin-bottom: 15px; display: flex; justify-content: space-between; align-items: center;">
<div>
<strong>Marlboro万宝路香烟</strong>
<p style="color: var(–text-secondary); font-size: 0.9em;">数量:10条 | 配送中</p>
</div>
<span style="color: var(–accent-color);">¥1,200</span>
</div>
<div style="background: var(–tertiary-bg); padding: 15px; border-radius: 8px; margin-bottom: 15px; display: flex; justify-content: space-between; align-items: center;">
<div>
<strong>暗黑风银质十字架项链</strong>
<p style="color: var(–text-secondary); font-size: 0.9em;">数量:1 | 已签收</p>
</div>
<span style="color: var(–accent-color);">¥890</span>
</div>
<div style="background: var(–tertiary-bg); padding: 15px; border-radius: 8px; margin-bottom: 15px; display: flex; justify-content: space-between; align-items: center;">
<div>
<strong>黑色马丁靴(铆钉装饰)</strong>
<p style="color: var(–text-secondary); font-size: 0.9em;">数量:1双 | 已签收</p>
</div>
<span style="color: var(–accent-color);">¥3,200</span>
</div>
</div>
</div>
</div><!– 贴吧模态框 –>
<div class="modal" id="tiebaModal">
<div class="modal-content" style="width: 90%; max-width: 900px;">
<button class="close-btn" onclick="closeModal('tiebaModal')">×</button>
<h2 style="color: var(–accent-color); margin-bottom: 30px; text-align: center;">
<i class="fas fa-users"></i> 谢允吧
</h2>
<div style="space-y: 20px;">
<div style="background: var(–tertiary-bg); padding: 20px; border-radius: 10px; margin-bottom: 20px;">
<div style="display: flex; align-items: center; margin-bottom: 15px;">
<img src="https://i.postimg.cc/qB37BKCz/4FE4B5404294814B9CDA897A6742365A.webp"
style="width: 40px; height: 40px; border-radius: 50%; margin-right: 15px; object-fit: cover;">
<div>
<strong style="color: var(–accent-color);">谢允</strong>
<p style="color: var(–text-muted); font-size: 0.9em;">吧主 • 刚刚</p>
</div>
</div>
<p>啧,又有人想插队预约?排队去,没有例外。</p>
<div style="margin-top: 10px; color: var(–text-muted); font-size: 0.9em;">
<i class="fas fa-thumbs-up"></i> 2.8w | <i class="fas fa-comment"></i> 2754
</div>
</div><div style="background: var(–tertiary-bg); padding: 20px; border-radius: 10px; margin-bottom: 20px;">
<div style="display: flex; align-items: center; margin-bottom: 15px;">
<img src="https://i.postimg.cc/qB37BKCz/4FE4B5404294814B9CDA897A6742365A.webp"
style="width: 40px; height: 40px; border-radius: 50%; margin-right: 15px; object-fit: cover;">
<div>
<strong style="color: var(–accent-color);">谢允</strong>
<p style="color: var(–text-muted); font-size: 0.9em;">吧主 • 2小时前</p>
</div>
</div>
<p>新作品完成,客户很满意。手艺这种东西,要么做到极致,要么别做。</p>
<div style="margin-top: 10px; color: var(–text-muted); font-size: 0.9em;">
<i class="fas fa-thumbs-up"></i> 4.5w | <i class="fas fa-comment"></i> 1569
</div>
</div><div style="background: var(–tertiary-bg); padding: 20px; border-radius: 10px; margin-bottom: 20px;">
<div style="display: flex; align-items: center; margin-bottom: 15px;">
<img src="https://i.postimg.cc/qB37BKCz/4FE4B5404294814B9CDA897A6742365A.webp"
style="width: 40px; height: 40px; border-radius: 50%; margin-right: 15px; object-fit: cover;">
<div>
<strong style="color: var(–accent-color);">谢允</strong>
<p style="color: var(–text-muted); font-size: 0.9em;">吧主 • 昨天</p>
</div>
</div>
<p>晚安,祝你自由。</p>
<div style="margin-top: 10px; color: var(–text-muted); font-size: 0.9em;">
<i class="fas fa-thumbs-up"></i> 1.9K | <i class="fas fa-comment"></i> 1203
</div>
</div>
</div>
</div>
</div><script>
// 粒子效果
function createParticles() {
const container = document.getElementById('particleContainer');
const particleCount = 50;for (let i = 0; i < particleCount; i++) {
const particle = document.createElement('div');
particle.className = 'particle';
particle.style.left = Math.random() * 100 + '%';
particle.style.top = Math.random() * 100 + '%';
particle.style.width = Math.random() * 4 + 2 + 'px';
particle.style.height = particle.style.width;
particle.style.animationDelay = Math.random() * 6 + 's';
particle.style.animationDuration = (Math.random() * 4 + 4) + 's';
container.appendChild(particle);
}
}// 音乐播放器
const audioPlayer = document.getElementById('audioPlayer');
const playBtn = document.getElementById('playBtn');
const playIcon = document.getElementById('playIcon');
const musicCover = document.getElementById('musicCover');playBtn.addEventListener('click', () => {
if (audioPlayer.paused) {
audioPlayer.play();
playIcon.className = 'fas fa-pause';
musicCover.classList.add('playing');
} else {
audioPlayer.pause();
playIcon.className = 'fas fa-play';
musicCover.classList.remove('playing');
}
});// 角色卡片翻转
const characterCard = document.getElementById('characterCard');
characterCard.addEventListener('click', () => {
characterCard.classList.toggle('flipped');
});// 模态框控制
function openModal(modalId) {
const modal = document.getElementById(modalId);
modal.classList.add('active');
document.body.style.overflow = 'hidden';
}function closeModal(modalId) {
const modal = document.getElementById(modalId);
modal.classList.remove('active');
document.body.style.overflow = 'auto';
}// 点击模态框外部关闭
window.addEventListener('click', (e) => {
if (e.target.classList.contains('modal')) {
e.target.classList.remove('active');
document.body.style.overflow = 'auto';
}
});// 开场白加载
async function loadOpenings() {
const container = document.getElementById('openingGrid');
if (!container) return;if (typeof getChatMessages !== 'function') {
container.innerHTML = '<p style="color: var(–text-muted); text-align: center;">酒馆助手开场白获取接口不可用,请检查酒馆助手是否开启。</p>';
return;
}try {
const messages = await getChatMessages("0", { include_swipe: true });if (!messages || messages.length === 0 || !messages[0].swipes || messages[0].swipes.length <= 1) {
container.innerHTML = '<p style="color: var(–text-muted); text-align: center;">暂无其他开场白,请添加更多故事开端。</p>';
return;
}const swipes = messages[0].swipes;
for (let i = 1; i < swipes.length; i++) {
const content = swipes[i];
let title = `故事线 ${i}`;
let description = "点击开启一段新的故事…";const titleMatch = content.match(/<!–s*title:s*(.*?)s*–>/s);
if (titleMatch) {
title = titleMatch[1].trim();
}
const descMatch = content.match(/<!–s*desc:s*(.*?)s*–>/s);
if (descMatch) {
description = descMatch[1].trim();
}const item = document.createElement('div');
item.className = 'opening-item';
item.style.setProperty('–index', i – 1);
item.innerHTML = `
<h4 class="opening-title">${title}</h4>
<p class="opening-desc">${description}</p>
`;item.addEventListener('click', (event) => switchToOpening(i, event));
container.appendChild(item);
}} catch (error) {
console.error('加载开场白失败:', error);
container.innerHTML = '<p style="color: var(–accent-color); text-align: center;">加载开场白时出错,请检查控制台信息。</p>';
}
}async function switchToOpening(swipeId, event) {
const card = event ? event.currentTarget : null;
if (card) {
card.style.opacity = '0.6';
card.style.pointerEvents = 'none';
}try {
await setChatMessages([{message_id: 0, swipe_id: swipeId}]);
} catch (error) {
console.error('切换开场白失败:', error);
alert(`切换失败: ${error.message}`);
if(card){
card.style.opacity = '1';
card.style.pointerEvents = 'auto';
}
}
}// 页面加载完成后执行
window.addEventListener('load', () => {
createParticles();
loadOpenings();
});// ESC键关闭模态框
document.addEventListener('keydown', (e) => {
if (e.key === 'Escape') {
const activeModal = document.querySelector('.modal.active');
if (activeModal) {
activeModal.classList.remove('active');
document.body.style.overflow = 'auto';
}
}
});
</script>
</body>
</html>
“`