pet/prototypes/pet-detail/pet-detail-prototype-07.html

507 lines
17 KiB
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>
<link rel="stylesheet" href="assets/css/common.css">
<style>
/* 游戏化式特有样式 */
.game-container {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
min-height: 100vh;
position: relative;
overflow: hidden;
}
.game-background {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><circle cx="20" cy="20" r="1" fill="rgba(255,255,255,0.1)"/><circle cx="80" cy="40" r="1.5" fill="rgba(255,255,255,0.1)"/><circle cx="40" cy="80" r="1" fill="rgba(255,255,255,0.1)"/><circle cx="60" cy="60" r="0.5" fill="rgba(255,255,255,0.1)"/></svg>') repeat;
animation: twinkle 3s infinite;
}
@keyframes twinkle {
0%, 100% { opacity: 0.3; }
50% { opacity: 0.8; }
}
.game-header {
position: relative;
z-index: 2;
padding: var(--spacing-lg);
text-align: center;
color: white;
}
.level-badge {
display: inline-block;
background: linear-gradient(45deg, #FFD700, #FFA500);
color: #333;
padding: var(--spacing-xs) var(--spacing-md);
border-radius: 20px;
font-size: 12px;
font-weight: bold;
margin-bottom: var(--spacing-md);
box-shadow: 0 4px 15px rgba(255, 215, 0, 0.3);
}
.pet-avatar-game {
width: 100px;
height: 100px;
border-radius: var(--radius-round);
border: 4px solid #FFD700;
margin: 0 auto var(--spacing-md);
box-shadow: 0 0 20px rgba(255, 215, 0, 0.5);
animation: glow 2s ease-in-out infinite alternate;
}
@keyframes glow {
from { box-shadow: 0 0 20px rgba(255, 215, 0, 0.5); }
to { box-shadow: 0 0 30px rgba(255, 215, 0, 0.8); }
}
.pet-name-game {
font-size: 24px;
font-weight: bold;
margin-bottom: var(--spacing-sm);
text-shadow: 2px 2px 4px rgba(0,0,0,0.3);
}
.pet-title {
font-size: 14px;
opacity: 0.9;
margin-bottom: var(--spacing-lg);
}
.exp-bar-container {
background: rgba(255,255,255,0.2);
border-radius: 20px;
padding: 4px;
margin: var(--spacing-md) 0;
}
.exp-bar {
background: linear-gradient(90deg, #4CAF50, #8BC34A);
height: 20px;
border-radius: 16px;
width: 75%;
position: relative;
transition: width 1s ease;
}
.exp-text {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
font-size: 12px;
font-weight: bold;
color: white;
text-shadow: 1px 1px 2px rgba(0,0,0,0.5);
}
.stats-grid {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: var(--spacing-md);
padding: var(--spacing-md);
}
.stat-card {
background: rgba(255,255,255,0.95);
border-radius: var(--radius-lg);
padding: var(--spacing-md);
text-align: center;
box-shadow: 0 8px 32px rgba(0,0,0,0.1);
transition: transform 0.3s ease;
}
.stat-card:hover {
transform: translateY(-5px);
}
.stat-icon {
font-size: 32px;
margin-bottom: var(--spacing-sm);
}
.stat-value {
font-size: 20px;
font-weight: bold;
color: var(--text-primary);
margin-bottom: var(--spacing-xs);
}
.stat-label {
font-size: 12px;
color: var(--text-secondary);
}
.achievements-section {
background: rgba(255,255,255,0.95);
margin: var(--spacing-md);
border-radius: var(--radius-lg);
padding: var(--spacing-lg);
box-shadow: 0 8px 32px rgba(0,0,0,0.1);
}
.achievements-title {
font-size: 18px;
font-weight: bold;
color: var(--text-primary);
margin-bottom: var(--spacing-md);
text-align: center;
}
.achievements-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: var(--spacing-md);
}
.achievement-item {
text-align: center;
padding: var(--spacing-sm);
border-radius: var(--radius-md);
transition: all 0.3s ease;
}
.achievement-item.unlocked {
background: linear-gradient(135deg, #FFD700, #FFA500);
color: white;
box-shadow: 0 4px 15px rgba(255, 215, 0, 0.3);
}
.achievement-item.locked {
background: #F0F0F0;
color: #999;
}
.achievement-icon {
font-size: 24px;
margin-bottom: var(--spacing-xs);
}
.achievement-name {
font-size: 10px;
font-weight: bold;
}
.daily-tasks {
background: rgba(255,255,255,0.95);
margin: var(--spacing-md);
border-radius: var(--radius-lg);
padding: var(--spacing-lg);
box-shadow: 0 8px 32px rgba(0,0,0,0.1);
}
.tasks-title {
font-size: 18px;
font-weight: bold;
color: var(--text-primary);
margin-bottom: var(--spacing-md);
text-align: center;
}
.task-item {
display: flex;
align-items: center;
padding: var(--spacing-md);
background: #F8F9FA;
border-radius: var(--radius-md);
margin-bottom: var(--spacing-sm);
transition: all 0.3s ease;
}
.task-item.completed {
background: linear-gradient(135deg, #4CAF50, #8BC34A);
color: white;
}
.task-checkbox {
width: 20px;
height: 20px;
border-radius: var(--radius-round);
border: 2px solid #ddd;
margin-right: var(--spacing-md);
display: flex;
align-items: center;
justify-content: center;
font-size: 12px;
}
.task-item.completed .task-checkbox {
background: white;
color: #4CAF50;
border-color: white;
}
.task-content {
flex: 1;
}
.task-name {
font-weight: bold;
margin-bottom: var(--spacing-xs);
}
.task-reward {
font-size: 12px;
opacity: 0.8;
}
.task-points {
background: #FFD700;
color: #333;
padding: 2px 8px;
border-radius: 12px;
font-size: 12px;
font-weight: bold;
}
.game-actions {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: var(--spacing-md);
padding: var(--spacing-md);
}
.game-btn {
background: linear-gradient(135deg, var(--pet-primary), #FF6B6B);
color: white;
border: none;
padding: var(--spacing-md);
border-radius: var(--radius-lg);
font-weight: bold;
font-size: 14px;
box-shadow: 0 4px 15px rgba(255, 138, 128, 0.3);
transition: all 0.3s ease;
}
.game-btn:hover {
transform: translateY(-2px);
box-shadow: 0 6px 20px rgba(255, 138, 128, 0.4);
}
.game-btn.secondary {
background: linear-gradient(135deg, var(--pet-accent), #4FC3F7);
box-shadow: 0 4px 15px rgba(100, 181, 246, 0.3);
}
.floating-coins {
position: fixed;
top: 20px;
right: 20px;
background: linear-gradient(135deg, #FFD700, #FFA500);
color: #333;
padding: var(--spacing-sm) var(--spacing-md);
border-radius: 20px;
font-weight: bold;
box-shadow: 0 4px 15px rgba(255, 215, 0, 0.3);
z-index: 100;
}
</style>
</head>
<body>
<div class="container game-container">
<div class="game-background"></div>
<!-- 游戏头部 -->
<div class="game-header">
<div class="level-badge">🏆 Lv.15 宠物大师</div>
<img src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgdmlld0JveD0iMCAwIDEwMCAxMDAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSIxMDAiIGhlaWdodD0iMTAwIiByeD0iNTAiIGZpbGw9IiNGRjhBODAiLz4KPHRleHQgeD0iNTAiIHk9IjU1IiBmb250LWZhbWlseT0iQXJpYWwiIGZvbnQtc2l6ZT0iMzAiIGZpbGw9IndoaXRlIiB0ZXh0LWFuY2hvcj0ibWlkZGxlIj7wn5GBPC90ZXh0Pgo8L3N2Zz4K"
alt="小橘" class="pet-avatar-game">
<h1 class="pet-name-game">小橘</h1>
<p class="pet-title">传奇橘猫战士</p>
<div class="exp-bar-container">
<div class="exp-bar">
<div class="exp-text">EXP: 1250/1500</div>
</div>
</div>
</div>
<!-- 属性面板 -->
<div class="stats-grid">
<div class="stat-card">
<div class="stat-icon">❤️</div>
<div class="stat-value">85</div>
<div class="stat-label">健康值</div>
</div>
<div class="stat-card">
<div class="stat-icon">😊</div>
<div class="stat-value">92</div>
<div class="stat-label">快乐值</div>
</div>
<div class="stat-card">
<div class="stat-icon">🍽️</div>
<div class="stat-value">78</div>
<div class="stat-label">饱食度</div>
</div>
<div class="stat-card">
<div class="stat-icon">🏃</div>
<div class="stat-value">65</div>
<div class="stat-label">活力值</div>
</div>
</div>
<!-- 成就系统 -->
<div class="achievements-section">
<h2 class="achievements-title">🏆 成就收集</h2>
<div class="achievements-grid">
<div class="achievement-item unlocked">
<div class="achievement-icon">🥇</div>
<div class="achievement-name">初次见面</div>
</div>
<div class="achievement-item unlocked">
<div class="achievement-icon">💉</div>
<div class="achievement-name">疫苗勇士</div>
</div>
<div class="achievement-item unlocked">
<div class="achievement-icon">🛁</div>
<div class="achievement-name">洗澡达人</div>
</div>
<div class="achievement-item locked">
<div class="achievement-icon">🎂</div>
<div class="achievement-name">生日快乐</div>
</div>
<div class="achievement-item unlocked">
<div class="achievement-icon">⚖️</div>
<div class="achievement-name">体重管家</div>
</div>
<div class="achievement-item locked">
<div class="achievement-icon">🏠</div>
<div class="achievement-name">一周年</div>
</div>
<div class="achievement-item unlocked">
<div class="achievement-icon">😸</div>
<div class="achievement-name">搞怪专家</div>
</div>
<div class="achievement-item locked">
<div class="achievement-icon">👑</div>
<div class="achievement-name">宠物之王</div>
</div>
</div>
</div>
<!-- 每日任务 -->
<div class="daily-tasks">
<h2 class="tasks-title">📋 每日任务</h2>
<div class="task-item completed">
<div class="task-checkbox"></div>
<div class="task-content">
<div class="task-name">记录体重</div>
<div class="task-reward">奖励: 经验值 +50</div>
</div>
<div class="task-points">+50 EXP</div>
</div>
<div class="task-item">
<div class="task-checkbox"></div>
<div class="task-content">
<div class="task-name">添加一条记录</div>
<div class="task-reward">奖励: 金币 +100</div>
</div>
<div class="task-points">+100 💰</div>
</div>
<div class="task-item">
<div class="task-checkbox"></div>
<div class="task-content">
<div class="task-name">与AI助手聊天</div>
<div class="task-reward">奖励: 经验值 +30</div>
</div>
<div class="task-points">+30 EXP</div>
</div>
<div class="task-item">
<div class="task-checkbox"></div>
<div class="task-content">
<div class="task-name">查看健康报告</div>
<div class="task-reward">奖励: 金币 +50</div>
</div>
<div class="task-points">+50 💰</div>
</div>
</div>
<!-- 游戏操作 -->
<div class="game-actions">
<button class="game-btn" onclick="interactions.handleButtonClick('addRecord')">
📝 记录冒险
</button>
<button class="game-btn secondary" onclick="interactions.handleButtonClick('aiChat')">
💬 召唤助手
</button>
<button class="game-btn" onclick="interactions.handleButtonClick('healthChart')">
📊 查看属性
</button>
<button class="game-btn secondary" onclick="interactions.handleButtonClick('timeline')">
⏰ 冒险日志
</button>
</div>
<!-- 悬浮金币显示 -->
<div class="floating-coins">
💰 2,450
</div>
</div>
<script src="assets/js/common.js"></script>
<script>
// 游戏化式特有交互
document.addEventListener('DOMContentLoaded', function() {
// 经验条动画
setTimeout(() => {
const expBar = document.querySelector('.exp-bar');
expBar.style.width = '83%'; // 1250/1500
}, 1000);
// 任务点击交互
const taskItems = document.querySelectorAll('.task-item:not(.completed)');
taskItems.forEach(task => {
task.addEventListener('click', function() {
this.classList.add('completed');
const checkbox = this.querySelector('.task-checkbox');
checkbox.textContent = '✓';
// 金币动画
const coins = document.querySelector('.floating-coins');
const currentCoins = parseInt(coins.textContent.replace(/[^\d]/g, ''));
const newCoins = currentCoins + 50;
coins.textContent = `💰 ${newCoins.toLocaleString()}`;
// 简单的奖励动画
coins.style.transform = 'scale(1.2)';
setTimeout(() => {
coins.style.transform = 'scale(1)';
}, 300);
interactions.showToast('任务完成!获得奖励!', 'success');
});
});
// 成就悬停效果
const achievements = document.querySelectorAll('.achievement-item');
achievements.forEach(achievement => {
achievement.addEventListener('mouseenter', function() {
if (this.classList.contains('unlocked')) {
this.style.transform = 'scale(1.1)';
}
});
achievement.addEventListener('mouseleave', function() {
this.style.transform = 'scale(1)';
});
});
console.log('游戏化式原型已加载');
});
</script>
</body>
</html>