谢知言

💡 本资源需花费 10 积分 下载 | 新用户注册即送 100 积分,可免费下载!

谢知言

🎭 角色简介

<character_information character="谢知言">
核心身份:
名称: 谢知言
性别: 男
年龄: 17
生日: 3.18
类别或标签: 清枫校园F3成员, 沉默的观测者, 技术天才

背景:
出身: 母亲在谢知言11岁时因重病过…

💬 开场白

“`html
<!DOCTYPE html>
<html>
<head>
<title>萬事開心</title>
<style>
.cassette-wrapper {
position: relative;
width: 95%;
max-width: 400px;
margin: 10px auto;
box-sizing: border-box;
}
.cassette-container {
background: linear-gradient(to right, #f0f0f0, #f5f5f5); /* 浅灰渐变背景 */
padding: 15px;
border-radius: 25px;
box-shadow:
0 4px 16px rgba(0,0,0,0.10),
0 0 0 4px #ffffff,
0 0 0 8px #d0d0d0; /* 浅灰色边框 */
box-sizing: border-box;
padding-top: 60px;
padding-bottom: 15px;
position: relative;
}
.avatar {
position: absolute;
width: 40px;
height: 40px;
border-radius: 50%;
border: 2px solid #ffffff;
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2);
z-index: 1;
background-color: #e0e0e0; /* 浅灰色背景 */
object-fit: cover;
top: 10px;
}
.avatar.user {
right: 40px;
}
.avatar.char {
left: 40px;
}

.distance-text {
position: absolute;
top: 25px;
left: 90px;
right: 90px;
font-size: 12px;
color: #666666; /* 深一点的灰色 */
font-family: 'Microsoft YaHei', sans-serif;
z-index: 1;
display: flex;
align-items: center;
}

.distance-text span {
padding: 0 10px;
flex-shrink: 0;
white-space: nowrap;
}

.distance-text::before,
.distance-text::after {
content: '';
flex-grow: 1;
height: 1px;
background-color: #999999; /* 浅灰色线条 */
}

h1 {
color: #444444; /* 深灰色 */
font-size: 16px;
margin: 0;
text-align: center;
font-family: 'Microsoft YaHei', sans-serif;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
margin-bottom: 10px;
}
.music-info {
font-size: 13px;
color: #666666; /* 深一点的灰色 */
margin: 8px 0;
text-align: center;
font-family: 'Microsoft YaHei', sans-serif;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
audio {
width: 100%;
margin-top: 5px;
border-radius: 20px;
box-sizing: border-box;
height: 45px;
}
audio::-webkit-media-controls-panel {
background: #f5f5f5; /* 浅灰色背景 */
}
.playing-animation {
height: 2px;
background: linear-gradient(90deg,
#999999 25%, transparent 25%,
transparent 50%, #999999 50%,
#aaaaaa 75%, transparent 75%,
transparent 100%); /* 浅灰色渐变动画 */
background-size: 20px 100%;
animation: move 1s linear infinite;
margin: 8px 0;
}
@keyframes move {
from { background-position: 0 0; }
to { background-position: 20px 0; }
}
</style>
</head>
<body>
<div class="cassette-wrapper">
<img class="avatar user" src="https://image.uglycat.cc/dajxd3.jpg" alt="User Avatar">
<img class="avatar char" src="https://image.uglycat.cc/20weai.jpg" alt="Char Avatar">

<div class="distance-text">
<span>相距5.20km</span>
</div>

<div class="cassette-container">
<h1>ねえ!○○ちゃんまだぁ~</h1>
<div class="music-info">
♡·你阳光明媚 像一缕小太阳>O<⁺♡
</div>
<div class="playing-animation"></div>
<audio controls autoplay loop>
<source src="https://image.uglycat.cc/v6y2jh.mp3" type="audio/mpeg">
你的浏览器不支持音频播放。
</audio>
</div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
const audio = document.querySelector('audio');
audio.play().catch(function(error) {
console.log('自动播放失败,这通常是浏览器策略导致的:', error);
});
});
</script>
</body>
</html>
“`

“`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>

<!– 引入Google Fonts –>
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link
href="https://fonts.googleapis.com/css2?family=Playfair+Display:wght@700&family=Noto+Serif+SC:wght@400;700&display=swap"
rel="stylesheet"
/>

<style>
:root {
–bg-color: #f5f5f5;
–card-bg: #ffffff;
–text-primary: #444444;
–text-secondary: #666666;
–border-color: #e0e0e0;
–accent-color: #999999;
–green-glow: rgba(153, 153, 153, 0.15);
–green-glow-strong: rgba(153, 153, 153, 0.25);
}

body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
"Helvetica Neue", Arial, "Noto Sans", sans-serif;
background-color: var(–bg-color);
margin: 0;
overflow-x: hidden;
display: flex;
justify-content: center;
align-items: flex-start;
padding: 20px 0;
min-height: 100vh;
position: relative;
}

.character-card {
background-color: transparent;
border-radius: 20px;
padding: 30px;
max-width: 340px;
width: 100%;
box-shadow: 0 8px 30px rgba(0, 0, 0, 0.08);
border: 1px solid var(–border-color);
display: flex;
flex-direction: column;
align-items: center;
margin: 0 auto;
box-sizing: border-box;
transition: all 0.3s ease;
position: relative;
z-index: 10;
}

.flip-card-container {
width: 280px;
height: 420px;
perspective: 1200px;
cursor: pointer;
margin-bottom: 30px;
}

.flip-card-inner {
position: relative;
width: 100%;
height: 100%;
transition: transform 0.8s;
transform-style: preserve-3d;
box-shadow: 0 8px 25px rgba(0, 0, 0, 0.1);
border-radius: 16px;
}

.flip-card-container.is-flipped .flip-card-inner {
transform: rotateY(180deg);
}

.flip-card-front,
.flip-card-back {
position: absolute;
width: 100%;
height: 100%;
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
border-radius: 16px;
overflow: hidden;
border: 1px solid var(–border-color);
}

.flip-card-front {
background-color: #f0f0f0;
}

.flip-card-front img {
width: 100%;
height: 100%;
object-fit: cover;
}

@keyframes animatedGradient {
0% {
background-position: 0% 50%;
}
50% {
background-position: 100% 50%;
}
100% {
background-position: 0% 50%;
}
}

.flip-card-back {
background: linear-gradient(
135deg,
#f5f5f5,
#eeeeee,
#f5f5f5
);
background-size: 200% 200%;
animation: animatedGradient 15s ease infinite;
color: var(–text-primary);
transform: rotateY(180deg);
display: flex;
justify-content: center;
align-items: center;
padding: 30px;
box-sizing: border-box;
}

.quote {
font-size: 1.15rem;
line-height: 1.8;
text-align: center;
font-style: italic;
text-shadow: 0 0 5px var(–green-glow);
font-family: 'Noto Serif SC', serif;
}

.character-info {
width: 100%;
display: flex;
flex-direction: column;
align-items: center;
}

.character-info h1 {
margin: 0 0 10px 0;
font-size: 2.5rem;
font-weight: 700;
color: var(–text-primary);
font-family: 'Noto Serif SC', serif;
animation: pulseGlow 4s infinite ease-in-out;
text-align: center;
width: 100%;
}

@keyframes pulseGlow {
0%,
100% {
text-shadow: 0 0 8px var(–green-glow);
}
50% {
text-shadow: 0 0 16px var(–green-glow-strong);
}
}

.tags-container {
display: flex;
flex-wrap: wrap;
justify-content: center;
gap: 8px;
margin-bottom: 25px;
}

.tag {
background-color: rgba(153, 153, 153, 0.1);
color: var(–text-primary);
padding: 4px 12px;
border-radius: 16px;
font-size: 12px;
font-weight: 500;
border: 1px solid rgba(153, 153, 153, 0.2);
}

.content-section {
width: 100%;
margin-top: 20px;
padding-top: 20px;
border-top: 1px solid var(–border-color);
text-align: left;
font-size: 14px;
line-height: 1.8;
}

.content-section h3 {
text-align: center;
font-size: 1.1rem;
margin: 0 0 15px 0;
color: var(–text-primary);
font-family: 'Noto Serif SC', serif;
letter-spacing: 1px;
}

.content-section .label {
color: var(–text-primary);
font-weight: 600;
}

.content-section p {
margin: 6px 0;
color: var(–text-secondary);
}

.opening-list-container {
display: flex;
flex-direction: column;
gap: 10px;
margin-top: 10px;
backdrop-filter: blur(10px);
-webkit-backdrop-filter: blur(10px);
background-color: rgba(245, 245, 245, 0.5);
border-radius: 12px;
padding: 15px;
}

.opening-btn {
position: relative;
overflow: hidden;
background-color: rgba(245, 245, 245, 0.7);
border: 1px solid rgba(200, 200, 200, 0.3);
color: var(–text-primary);
padding: 12px 15px;
border-radius: 8px;
width: 100%;
box-sizing: border-box;
text-align: left;
cursor: pointer;
font-family: 'Noto Serif SC', serif;
font-size: 14px;
line-height: 1.5;
transition: all 0.3s ease;
backdrop-filter: blur(5px);
-webkit-backdrop-filter: blur(5px);
}

.opening-btn::before {
content: '';
position: absolute;
top: 0;
left: -100%;
width: 100%;
height: 100%;
background: linear-gradient(120deg, transparent, rgba(153, 153, 153, 0.3), transparent);
transition: left 0.7s cubic-bezier(0.23, 1, 0.32, 1);
}

.opening-btn:hover {
background-color: rgba(245, 245, 245, 0.9);
border-color: var(–accent-color);
transform: translateY(-3px) scale(1.02);
box-shadow: 0 6px 12px var(–green-glow-strong);
}

.opening-btn:hover::before {
left: 100%;
}

/* 代码字符动画样式 */
.code-char {
position: absolute;
font-family: 'Courier New', monospace;
font-size: 16px;
font-weight: bold;
color: #666;
user-select: none;
z-index: 1;
bottom: -50px;
will-change: transform;
opacity: 0.8;
}

@keyframes float-up {
0% {
transform: translateY(0) rotate(0deg);
opacity: 0;
}
5% {
opacity: 0.8;
}
95% {
opacity: 0.8;
}
100% {
opacity: 0;
}
}

.code-char.small {
font-size: 12px;
opacity: 0.6;
}

.code-char.medium {
font-size: 16px;
}

.code-char.large {
font-size: 20px;
opacity: 1;
}
</style>
</head>

<body>
<!– 角色卡片部分 –>
<div class="character-card">
<div class="flip-card-container" onclick="this.classList.toggle('is-flipped')">
<div class="flip-card-inner">
<div class="flip-card-front">
<img src="https://image.uglycat.cc/923mup.jpg" alt="谢知言角色图片" />
</div>
<div class="flip-card-back">
<p class="quote">
“能不能……不离开”
</p>
</div>
</div>
</div>

<div class="character-info">
<h1>谢知言</h1>

<!– 标签 –>
<div class="tags-container">
<span class="tag">校园</span>
<span class="tag">呆萌</span>
<span class="tag">黑客</span>
</div>

<div class="content-section">
<h3><span class="label">作者与声明</span></h3>
<p>✨<span class="label">作者</span>: 简听</p>
<p>✨<span class="label">性向</span>: BG</p>
<p>✨<span class="label">二传</span>:私底下传给朋友我还是可以接受的 不接受传给大群!!!</p>
<p>✨<span class="label">商用</span>: 我打死你!</p>
</div>

<div class="content-section">
<h3><span class="label">感谢榜</span></h3>
<p>💖 感谢<span class="label">司马咩咩</span>的写卡助手</p>
<p>💖 感谢<span class="label">海风</span>的开场白模板</p>
<p>💖 感谢<span class="label">岁岁枝</span>给我跑的哥哥</p>
<p>💖 感谢<span class="label">🍠宙珀</span>的音乐播放器</p>
</div>

<div class="content-section">
<h3><span class="label">开场白选择</span></h3>
<div class="opening-list-container">
<button class="opening-btn" onclick="switchToOpening(2)">
“我们一起逃吧”
</button>
<button class="opening-btn" onclick="switchToOpening(3)">
<p>谢知言找你要微信被拒</p>
<p>谢:(ó﹏ò。)</p>
</button>
<button class="opening-btn" onclick="switchToOpening(4)">
<p>你被开户了</p>
<p>谢:要不要让他户籍满天飞</p>
</button>
<button class="opening-btn" onclick="switchToOpening(5)">
谢宝登上你微信把你给他的备注改了
</button>
<button class="opening-btn" onclick="switchToOpening(6)">
<p>你:衣服怎么破了</p>
<p>谢:嗯帮你缝</p>
</button>
<button class="opening-btn" onclick="switchToOpening(7)">
<p>林:你要帮{{user}}学习</p>
<p>谢:嗯嗯</p>
<p>遂把{{user}}作业做了</p>
</button>
<button class="opening-btn" onclick="switchToOpening(8)">
<p>看见谢在帮小猫</p>
<p>“我不想让他像之前的我一样”</p>
</button>
<button class="opening-btn" onclick="switchToOpening(9)">
<p>谢带你去看他母亲的坟墓</p>
<p>“我只有你了……”</p>
</button>
</div>
</div>
</div>
</div>

<script>
// 开场白跳转功能
async function switchToOpening(openingId) {
try {
if (typeof getChatMessages !== 'function' || typeof setChatMessage !== 'function') {
console.log(`模拟切换到开场白 ID: ${openingId}`);
showTip(`模拟切换成功:开场白 ${openingId}`);
return;
}
const messages = await getChatMessages(0, { include_swipe: true });
if (
messages &&
messages.length > 0 &&
messages[0].swipes &&
messages[0].swipes.length >= openingId
) {
const content = messages[0].swipes[openingId – 1];
await setChatMessage(content, 0, {
swipe_id: openingId – 1,
refresh: 'display_and_render_current',
});
showTip(`切换成功:开场白 ${openingId}`);
} else {
showTip(`错误:找不到开场白 ${openingId}`);
}
} catch (error) {
showTip(`切换失败: ${error.message}`);
}
}

// 提示框功能
function showTip(message) {
const tip = document.createElement('div');
tip.style.cssText = `
position: fixed;
top: 20px;
left: 50%;
transform: translateX(-50%);
background: var(–card-bg);
color: var(–text-primary);
padding: 12px 24px;
border-radius: 8px;
font-size: 1em;
font-weight: 500;
z-index: 9999;
border: 1px solid var(–border-color);
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
font-family: inherit;
backdrop-filter: blur(5px);
opacity: 0;
transition: all 0.4s ease;
`;
tip.textContent = message;
document.body.appendChild(tip);
setTimeout(() => {
tip.style.opacity = '1';
tip.style.top = '30px';
}, 10);
setTimeout(() => {
tip.style.opacity = '0';
tip.style.top = '20px';
setTimeout(() => tip.remove(), 400);
}, 2500);
}
</script>
</body>
</html>
“`

角色卡

江潮

2025-12-31 16:44:19

角色卡

祁安安

2025-12-31 16:44:23

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索