pet/html/layout2-dashboard-tabs.html

799 lines
27 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!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>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
min-height: 100vh;
max-width: 375px;
margin: 0 auto;
}
.header {
background: rgba(255,255,255,0.1);
backdrop-filter: blur(20px);
padding: 20px;
display: flex;
justify-content: space-between;
align-items: center;
color: white;
}
.header-info h1 {
font-size: 20px;
margin-bottom: 4px;
}
.header-info p {
font-size: 14px;
opacity: 0.8;
}
.header-actions {
display: flex;
gap: 10px;
}
.header-btn {
width: 36px;
height: 36px;
border-radius: 18px;
border: none;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
font-size: 16px;
background: rgba(255,255,255,0.2);
color: white;
}
.tabs-container {
background: rgba(255,255,255,0.95);
margin: 15px;
border-radius: 20px;
backdrop-filter: blur(20px);
overflow: hidden;
}
.tabs-header {
display: flex;
background: #F8F9FA;
padding: 5px;
border-radius: 20px 20px 0 0;
position: relative;
}
.tab-btn {
flex: 1;
background: none;
border: none;
padding: 12px 8px;
text-align: center;
cursor: pointer;
border-radius: 15px;
transition: all 0.3s ease;
position: relative;
z-index: 2;
}
.tab-btn.active {
background: white;
box-shadow: 0 2px 8px rgba(0,0,0,0.1);
}
.tab-avatar {
width: 24px;
height: 24px;
border-radius: 12px;
background: linear-gradient(135deg, #FFE0B2, #FFCC80);
display: flex;
align-items: center;
justify-content: center;
font-size: 14px;
margin: 0 auto 4px;
}
.tab-name {
font-size: 12px;
font-weight: bold;
color: #333;
}
.add-tab {
width: 60px;
background: none;
border: none;
padding: 12px 8px;
text-align: center;
cursor: pointer;
border-radius: 15px;
transition: all 0.3s ease;
color: #667eea;
}
.add-tab:hover {
background: rgba(102,126,234,0.1);
}
.tab-content {
padding: 25px;
}
.pet-detail-card {
text-align: center;
margin-bottom: 25px;
}
.pet-main-avatar {
width: 80px;
height: 80px;
border-radius: 40px;
background: linear-gradient(135deg, #FFE0B2, #FFCC80);
display: flex;
align-items: center;
justify-content: center;
font-size: 40px;
margin: 0 auto 15px;
position: relative;
box-shadow: 0 8px 25px rgba(0,0,0,0.15);
}
.pet-status-ring {
position: absolute;
top: -4px;
left: -4px;
right: -4px;
bottom: -4px;
border: 3px solid #4CAF50;
border-radius: 50%;
border-top-color: transparent;
animation: spin 3s linear infinite;
}
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
.pet-main-name {
font-size: 22px;
font-weight: bold;
color: #333;
margin-bottom: 8px;
}
.pet-main-details {
font-size: 14px;
color: #666;
margin-bottom: 15px;
}
.pet-main-tags {
display: flex;
justify-content: center;
gap: 8px;
margin-bottom: 20px;
}
.main-tag {
background: #E8F5E8;
color: #4CAF50;
padding: 6px 12px;
border-radius: 12px;
font-size: 12px;
font-weight: bold;
}
.dashboard-metrics {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 15px;
margin-bottom: 25px;
}
.metric-card {
background: #F8F9FA;
padding: 15px 10px;
border-radius: 15px;
text-align: center;
}
.metric-icon {
font-size: 20px;
margin-bottom: 8px;
display: block;
}
.metric-value {
font-size: 18px;
font-weight: bold;
color: #333;
margin-bottom: 4px;
}
.metric-label {
font-size: 11px;
color: #999;
}
.metric-trend {
font-size: 10px;
color: #4CAF50;
margin-top: 2px;
}
.progress-section {
background: #F8F9FA;
border-radius: 15px;
padding: 20px;
margin-bottom: 25px;
}
.progress-title {
font-size: 16px;
font-weight: bold;
color: #333;
margin-bottom: 15px;
display: flex;
align-items: center;
gap: 8px;
}
.progress-item {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 12px;
padding: 8px 0;
}
.progress-item:last-child {
margin-bottom: 0;
}
.progress-info {
display: flex;
align-items: center;
gap: 10px;
}
.progress-icon {
font-size: 16px;
}
.progress-text {
font-size: 13px;
color: #333;
}
.progress-bar {
width: 80px;
height: 6px;
background: #E9ECEF;
border-radius: 3px;
overflow: hidden;
}
.progress-fill {
height: 100%;
background: linear-gradient(90deg, #667eea, #764ba2);
border-radius: 3px;
}
.alerts-section {
background: #FFF3E0;
border-radius: 15px;
padding: 20px;
margin-bottom: 25px;
border-left: 4px solid #FF9800;
}
.alerts-title {
font-size: 16px;
font-weight: bold;
color: #333;
margin-bottom: 15px;
display: flex;
align-items: center;
gap: 8px;
}
.alert-item {
display: flex;
align-items: center;
gap: 12px;
padding: 8px 0;
border-bottom: 1px solid #FFE0B2;
}
.alert-item:last-child {
border-bottom: none;
}
.alert-icon {
font-size: 16px;
color: #FF9800;
}
.alert-text {
flex: 1;
font-size: 13px;
color: #333;
}
.alert-time {
font-size: 11px;
color: #999;
}
.tab-content-panel {
display: none;
}
.tab-content-panel.active {
display: block;
}
.summary-section {
background: rgba(255,255,255,0.95);
margin: 15px;
border-radius: 20px;
padding: 20px;
backdrop-filter: blur(20px);
}
.summary-title {
font-size: 18px;
font-weight: bold;
color: #333;
margin-bottom: 15px;
text-align: center;
}
.summary-stats {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 15px;
margin-bottom: 20px;
}
.summary-card {
background: linear-gradient(135deg, #667eea, #764ba2);
color: white;
padding: 15px;
border-radius: 15px;
text-align: center;
}
.summary-number {
font-size: 20px;
font-weight: bold;
margin-bottom: 4px;
}
.summary-label {
font-size: 12px;
opacity: 0.9;
}
.quick-actions {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 10px;
}
.quick-btn {
background: #F8F9FA;
border: none;
border-radius: 12px;
padding: 12px 8px;
text-align: center;
cursor: pointer;
transition: transform 0.2s;
}
.quick-btn:hover {
transform: translateY(-2px);
}
.quick-icon {
font-size: 16px;
margin-bottom: 4px;
display: block;
}
.quick-text {
font-size: 10px;
color: #666;
font-weight: bold;
}
.floating-add {
position: fixed;
bottom: 30px;
right: 20px;
width: 56px;
height: 56px;
border-radius: 28px;
background: linear-gradient(135deg, #667eea, #764ba2);
color: white;
border: none;
font-size: 24px;
cursor: pointer;
box-shadow: 0 4px 20px rgba(102,126,234,0.4);
transition: transform 0.3s;
}
.floating-add:hover {
transform: scale(1.1);
}
</style>
</head>
<body>
<div class="header">
<div class="header-info">
<h1>🏷️ 宠物仪表盘</h1>
<p>标签切换式数据管理</p>
</div>
<div class="header-actions">
<button class="header-btn">👨‍👩‍👧‍👦</button>
<button class="header-btn">⚙️</button>
</div>
</div>
<div class="tabs-container">
<div class="tabs-header">
<button class="tab-btn active" onclick="switchTab(0)">
<div class="tab-avatar">🐱</div>
<div class="tab-name">小橘</div>
</button>
<button class="tab-btn" onclick="switchTab(1)">
<div class="tab-avatar">🐶</div>
<div class="tab-name">小白</div>
</button>
<button class="tab-btn" onclick="switchTab(2)">
<div class="tab-avatar">🐰</div>
<div class="tab-name">小灰</div>
</button>
<button class="add-tab">
<div style="font-size: 20px; margin-bottom: 4px;"></div>
<div style="font-size: 10px;">添加</div>
</button>
</div>
<div class="tab-content">
<!-- 小橘的仪表盘 -->
<div class="tab-content-panel active" id="tab-0">
<div class="pet-detail-card">
<div class="pet-main-avatar">
🐱
<div class="pet-status-ring"></div>
</div>
<div class="pet-main-name">小橘</div>
<div class="pet-main-details">橘猫 · 2岁 · 陪伴365天</div>
<div class="pet-main-tags">
<span class="main-tag">活泼</span>
<span class="main-tag">粘人</span>
<span class="main-tag">健康</span>
</div>
</div>
<div class="dashboard-metrics">
<div class="metric-card">
<span class="metric-icon">⚖️</span>
<div class="metric-value">4.5kg</div>
<div class="metric-label">当前体重</div>
<div class="metric-trend">↗ +0.2kg</div>
</div>
<div class="metric-card">
<span class="metric-icon">📝</span>
<div class="metric-value">89</div>
<div class="metric-label">记录数量</div>
<div class="metric-trend">↗ +12</div>
</div>
<div class="metric-card">
<span class="metric-icon">💰</span>
<div class="metric-value">¥580</div>
<div class="metric-label">本月消费</div>
<div class="metric-trend">↘ -¥50</div>
</div>
</div>
<div class="progress-section">
<div class="progress-title">📊 健康指标</div>
<div class="progress-item">
<div class="progress-info">
<span class="progress-icon">❤️</span>
<span class="progress-text">整体健康</span>
</div>
<div class="progress-bar">
<div class="progress-fill" style="width: 95%;"></div>
</div>
</div>
<div class="progress-item">
<div class="progress-info">
<span class="progress-icon">🏃</span>
<span class="progress-text">活动水平</span>
</div>
<div class="progress-bar">
<div class="progress-fill" style="width: 75%;"></div>
</div>
</div>
<div class="progress-item">
<div class="progress-info">
<span class="progress-icon">🍽️</span>
<span class="progress-text">食欲状态</span>
</div>
<div class="progress-bar">
<div class="progress-fill" style="width: 90%;"></div>
</div>
</div>
<div class="progress-item">
<div class="progress-info">
<span class="progress-icon">😊</span>
<span class="progress-text">快乐指数</span>
</div>
<div class="progress-bar">
<div class="progress-fill" style="width: 88%;"></div>
</div>
</div>
</div>
<div class="alerts-section">
<div class="alerts-title">🔔 重要提醒</div>
<div class="alert-item">
<span class="alert-icon">💉</span>
<span class="alert-text">疫苗接种提醒</span>
<span class="alert-time">3天后</span>
</div>
<div class="alert-item">
<span class="alert-icon">🏥</span>
<span class="alert-text">定期体检</span>
<span class="alert-time">1周后</span>
</div>
</div>
</div>
<!-- 小白的仪表盘 -->
<div class="tab-content-panel" id="tab-1">
<div class="pet-detail-card">
<div class="pet-main-avatar">
🐶
<div class="pet-status-ring"></div>
</div>
<div class="pet-main-name">小白</div>
<div class="pet-main-details">金毛 · 3岁 · 陪伴1095天</div>
<div class="pet-main-tags">
<span class="main-tag">温顺</span>
<span class="main-tag">忠诚</span>
<span class="main-tag">健康</span>
</div>
</div>
<div class="dashboard-metrics">
<div class="metric-card">
<span class="metric-icon">⚖️</span>
<div class="metric-value">25kg</div>
<div class="metric-label">当前体重</div>
<div class="metric-trend">→ 稳定</div>
</div>
<div class="metric-card">
<span class="metric-icon">📝</span>
<div class="metric-value">67</div>
<div class="metric-label">记录数量</div>
<div class="metric-trend">↗ +8</div>
</div>
<div class="metric-card">
<span class="metric-icon">💰</span>
<div class="metric-value">¥890</div>
<div class="metric-label">本月消费</div>
<div class="metric-trend">↗ +¥120</div>
</div>
</div>
<div class="progress-section">
<div class="progress-title">📊 健康指标</div>
<div class="progress-item">
<div class="progress-info">
<span class="progress-icon">❤️</span>
<span class="progress-text">整体健康</span>
</div>
<div class="progress-bar">
<div class="progress-fill" style="width: 92%;"></div>
</div>
</div>
<div class="progress-item">
<div class="progress-info">
<span class="progress-icon">🏃</span>
<span class="progress-text">活动水平</span>
</div>
<div class="progress-bar">
<div class="progress-fill" style="width: 95%;"></div>
</div>
</div>
<div class="progress-item">
<div class="progress-info">
<span class="progress-icon">🍽️</span>
<span class="progress-text">食欲状态</span>
</div>
<div class="progress-bar">
<div class="progress-fill" style="width: 85%;"></div>
</div>
</div>
<div class="progress-item">
<div class="progress-info">
<span class="progress-icon">😊</span>
<span class="progress-text">快乐指数</span>
</div>
<div class="progress-bar">
<div class="progress-fill" style="width: 96%;"></div>
</div>
</div>
</div>
<div class="alerts-section">
<div class="alerts-title">🔔 重要提醒</div>
<div class="alert-item">
<span class="alert-icon">🦷</span>
<span class="alert-text">牙齿清洁</span>
<span class="alert-time">明天</span>
</div>
</div>
</div>
<!-- 小灰的仪表盘 -->
<div class="tab-content-panel" id="tab-2">
<div class="pet-detail-card">
<div class="pet-main-avatar">
🐰
<div class="pet-status-ring"></div>
</div>
<div class="pet-main-name">小灰</div>
<div class="pet-main-details">垂耳兔 · 1岁 · 陪伴180天</div>
<div class="pet-main-tags">
<span class="main-tag">安静</span>
<span class="main-tag">可爱</span>
<span class="main-tag">健康</span>
</div>
</div>
<div class="dashboard-metrics">
<div class="metric-card">
<span class="metric-icon">⚖️</span>
<div class="metric-value">1.2kg</div>
<div class="metric-label">当前体重</div>
<div class="metric-trend">↗ +0.1kg</div>
</div>
<div class="metric-card">
<span class="metric-icon">📝</span>
<div class="metric-value">34</div>
<div class="metric-label">记录数量</div>
<div class="metric-trend">↗ +5</div>
</div>
<div class="metric-card">
<span class="metric-icon">💰</span>
<div class="metric-value">¥120</div>
<div class="metric-label">本月消费</div>
<div class="metric-trend">→ 稳定</div>
</div>
</div>
<div class="progress-section">
<div class="progress-title">📊 健康指标</div>
<div class="progress-item">
<div class="progress-info">
<span class="progress-icon">❤️</span>
<span class="progress-text">整体健康</span>
</div>
<div class="progress-bar">
<div class="progress-fill" style="width: 90%;"></div>
</div>
</div>
<div class="progress-item">
<div class="progress-info">
<span class="progress-icon">🏃</span>
<span class="progress-text">活动水平</span>
</div>
<div class="progress-bar">
<div class="progress-fill" style="width: 70%;"></div>
</div>
</div>
<div class="progress-item">
<div class="progress-info">
<span class="progress-icon">🍽️</span>
<span class="progress-text">食欲状态</span>
</div>
<div class="progress-bar">
<div class="progress-fill" style="width: 88%;"></div>
</div>
</div>
<div class="progress-item">
<div class="progress-info">
<span class="progress-icon">😊</span>
<span class="progress-text">快乐指数</span>
</div>
<div class="progress-bar">
<div class="progress-fill" style="width: 85%;"></div>
</div>
</div>
</div>
<div class="alerts-section">
<div class="alerts-title">🔔 重要提醒</div>
<div class="alert-item">
<span class="alert-icon">🥕</span>
<span class="alert-text">补充新鲜蔬菜</span>
<span class="alert-time">今天</span>
</div>
</div>
</div>
</div>
</div>
<div class="summary-section">
<div class="summary-title">📊 家庭概览</div>
<div class="summary-stats">
<div class="summary-card">
<div class="summary-number">190</div>
<div class="summary-label">总记录数</div>
</div>
<div class="summary-card">
<div class="summary-number">¥1,590</div>
<div class="summary-label">本月消费</div>
</div>
<div class="summary-card">
<div class="summary-number">3</div>
<div class="summary-label">家庭成员</div>
</div>
<div class="summary-card">
<div class="summary-number">5</div>
<div class="summary-label">待办提醒</div>
</div>
</div>
<div class="quick-actions">
<button class="quick-btn">
<span class="quick-icon">📝</span>
<span class="quick-text">快速记录</span>
</button>
<button class="quick-btn">
<span class="quick-icon">💰</span>
<span class="quick-text">记账</span>
</button>
<button class="quick-btn">
<span class="quick-icon">📸</span>
<span class="quick-text">拍照</span>
</button>
<button class="quick-btn">
<span class="quick-icon">🏥</span>
<span class="quick-text">领养</span>
</button>
</div>
</div>
<button class="floating-add">📝</button>
<script>
function switchTab(index) {
// 移除所有活动状态
document.querySelectorAll('.tab-btn').forEach(btn => btn.classList.remove('active'));
document.querySelectorAll('.tab-content-panel').forEach(panel => panel.classList.remove('active'));
// 激活选中的标签和内容
document.querySelectorAll('.tab-btn')[index].classList.add('active');
document.getElementById(`tab-${index}`).classList.add('active');
}
</script>
</body>
</html>