HTML&CSS:超好看的数据卡片

这个页面实现了一个温度监测仪表盘,包含两个卡片分别显示室温和环境温度。每个卡片都有独特的颜色主题和动画效果,页面使用了 CSS 渐变和阴影来增强视觉效果。


大家复制代码时,可能会因格式转换出现错乱,导致样式失效。建议先少量复制代码进行测试,若未能解决问题,私信回复源码两字,我会发送完整的压缩包给你。

演示效果

HTML&CSS

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="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
        }

        body {
            background: linear-gradient(135deg, #1a2a6c, #b21f1f, #1a2a6c);
            min-height: 100vh;
            display: flex;
            justify-content: center;
            align-items: center;
            padding: 20px;
        }

        .container {
            width: 100%;
            max-width: 1200px;
            text-align: center;
        }

        header {
            margin-bottom: 40px;
            color: white;
        }

        h1 {
            font-size: 2.5rem;
            margin-bottom: 10px;
            text-shadow: 0 2px 4px rgba(0,0,0,0.3);
        }

        .subtitle {
            font-size: 1.1rem;
            opacity: 0.9;
        }

        .cards-container {
            display: flex;
            flex-wrap: wrap;
            justify-content: center;
            gap: 30px;
        }

        .card {
            background: rgba(255, 255, 255, 0.95);
            border-radius: 20px;
            box-shadow: 0 15px 30px rgba(0, 0, 0, 0.25);
            width: 350px;
            padding: 30px;
            transition: transform 0.3s ease, box-shadow 0.3s ease;
            position: relative;
            overflow: hidden;
        }

        .card:hover {
            transform: translateY(-10px);
            box-shadow: 0 20px 40px rgba(0, 0, 0, 0.35);
        }

        .card::before {
            content: '';
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 8px;
        }

        .room-temp::before {
            background: linear-gradient(90deg, #3498db, #2ecc71);
        }

        .amb-temp::before {
            background: linear-gradient(90deg, #e74c3c, #f39c12);
        }

        .card-header {
            display: flex;
            justify-content: space-between;
            align-items: center;
            margin-bottom: 25px;
        }

        .card-title {
            font-size: 1.5rem;
            font-weight: 600;
            color: #2c3e50;
        }

        .icon {
            width: 60px;
            height: 60px;
            border-radius: 50%;
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: 24px;
        }

        .room-temp .icon {
            background: linear-gradient(135deg, #3498db, #2ecc71);
            color: white;
        }

        .amb-temp .icon {
            background: linear-gradient(135deg, #e74c3c, #f39c12);
            color: white;
        }

        .temperature {
            font-size: 4.5rem;
            font-weight: 700;
            margin: 20px 0;
            position: relative;
            display: inline-block;
        }

        .room-temp .temperature {
            color: #3498db;
        }

        .amb-temp .temperature {
            color: #e74c3c;
        }

        .temperature::after {
            content: '℃';
            font-size: 2rem;
            position: absolute;
            top: 10px;
            right: -30px;
        }

        .timestamp {
            color: #7f8c8d;
            font-size: 1.1rem;
            margin: 15px 0 25px;
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 8px;
        }

        .thermometer {
            height: 180px;
            width: 40px;
            background: #ecf0f1;
            border-radius: 20px;
            margin: 0 auto 25px;
            position: relative;
            overflow: hidden;
            box-shadow: inset 0 0 10px rgba(0,0,0,0.1);
        }

        .thermometer::before {
            content: '';
            position: absolute;
            bottom: 0;
            left: 0;
            width: 100%;
            height: 0;
            border-radius: 20px;
            transition: height 1s ease;
        }

        .room-temp .thermometer::before {
            background: linear-gradient(to top, #3498db, #2ecc71);
            height: 45%;
        }

        .amb-temp .thermometer::before {
            background: linear-gradient(to top, #e74c3c, #f39c12);
            height: 65%;
        }

        .thermometer::after {
            content: '';
            position: absolute;
            bottom: -10px;
            left: 50%;
            transform: translateX(-50%);
            width: 30px;
            height: 30px;
            border-radius: 50%;
        }

        .room-temp .thermometer::after {
            background: linear-gradient(135deg, #3498db, #2ecc71);
        }

        .amb-temp .thermometer::after {
            background: linear-gradient(135deg, #e74c3c, #f39c12);
        }

        .stats {
            display: flex;
            justify-content: space-between;
            margin-top: 20px;
            padding-top: 20px;
            border-top: 1px solid #ecf0f1;
        }

        .stat {
            text-align: center;
        }

        .stat-value {
            font-size: 1.2rem;
            font-weight: 600;
            margin-bottom: 5px;
        }

        .stat-label {
            font-size: 0.9rem;
            color: #7f8c8d;
        }

        .trend {
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 8px;
            font-size: 1.1rem;
            margin-top: 15px;
        }

        .trend-up {
            color: #e74c3c;
        }

        .trend-down {
            color: #2ecc71;
        }

        footer {
            margin-top: 50px;
            color: rgba(255,255,255,0.7);
            font-size: 0.9rem;
        }

        @media (max-width: 768px) {
            .cards-container {
                flex-direction: column;
                align-items: center;
            }

            h1 {
                font-size: 2rem;
            }
        }
    </style>
</head>
<body>
    <div class="container">
        <header>
            <h1>温度监测仪表盘</h1>
            <p class="subtitle">实时环境数据监测与可视化</p>
        </header>

        <div class="cards-container">
            <!-- 室温卡片 -->
            <div class="card room-temp">
                <div class="card-header">
                    <h2 class="card-title">Room Temp</h2>
                    <div class="icon">
                        <i class="fas fa-home"></i>
                    </div>
                </div>

                <div class="thermometer"></div>

                <div class="temperature">22.1</div>

                <div class="timestamp">
                    <i class="far fa-clock"></i>
                    <span>2025-06-06 10:05:53</span>
                </div>

                <div class="trend trend-down">
                    <i class="fas fa-arrow-down"></i>
                    <span>较昨日下降 1.2℃</span>
                </div>

                <div class="stats">
                    <div class="stat">
                        <div class="stat-value">20.5℃</div>
                        <div class="stat-label">最低温度</div>
                    </div>
                    <div class="stat">
                        <div class="stat-value">23.8℃</div>
                        <div class="stat-label">最高温度</div>
                    </div>
                    <div class="stat">
                        <div class="stat-value">22.3℃</div>
                        <div class="stat-label">平均温度</div>
                    </div>
                </div>
            </div>

            <!-- 环境温度卡片 -->
            <div class="card amb-temp">
                <div class="card-header">
                    <h2 class="card-title">Amb Temp</h2>
                    <div class="icon">
                        <i class="fas fa-sun"></i>
                    </div>
                </div>

                <div class="thermometer"></div>

                <div class="temperature">35.5</div>

                <div class="timestamp">
                    <i class="far fa-clock"></i>
                    <span>2025-06-06 10:05:53</span>
                </div>

                <div class="trend trend-up">
                    <i class="fas fa-arrow-up"></i>
                    <span>较昨日上升 2.8℃</span>
                </div>

                <div class="stats">
                    <div class="stat">
                        <div class="stat-value">28.2℃</div>
                        <div class="stat-label">最低温度</div>
                    </div>
                    <div class="stat">
                        <div class="stat-value">36.7℃</div>
                        <div class="stat-label">最高温度</div>
                    </div>
                    <div class="stat">
                        <div class="stat-value">33.4℃</div>
                        <div class="stat-label">平均温度</div>
                    </div>
                </div>
            </div>
        </div>

        <footer>
            <p>数据更新时间: 2025-06-06 10:05:53 | 温度监测系统 v2.1</p>
        </footer>
    </div>
</body>
</html>

HTML 结构

  • body:定义了页面的主体内容。
  • container:包含整个页面的内容。
  • header:定义页面的页眉,包含标题和副标题。
  • cards-container:包含两个卡片,分别用于显示室温和环境温度。
  • 每个卡片使用 card 定义,包含温度数据和相关统计信息。
  • footer:定义页面的页脚,包含数据更新时间和系统版本信息。

CSS 关键部分

  • *:设置全局盒模型为 border-box,并重置外边距、内边距和字体。
  • body:设置背景为线性渐变,最小高度为视口高度,使用 Flexbox 布局居中显示内容。
  • .container:定义页面的容器样式,包括宽度、最大宽度和文本对齐方式。
  • header:定义页眉的样式,包括内边距和颜色。
  • h1:定义标题的样式,包括字体大小、外边距和文本阴影。
  • .subtitle:定义副标题的样式,包括字体大小和透明度。
  • .card:定义卡片的样式,包括背景颜色、圆角、阴影、宽度、内边距和过渡效果。
  • .card:hover:定义卡片悬停时的样式,包括变换和阴影效果。
  • .card::before:定义卡片顶部的渐变条样式。
  • .room-temp 和 .amb-temp:分别为室温和环境温度卡片定义不同的颜色主题。
  • .card-header:定义卡片头部的样式,包括布局、对齐方式和外边距。
  • .card-title:定义卡片标题的样式,包括字体大小和颜色。
  • .icon:定义图标的样式,包括大小、圆角、对齐方式和颜色。
  • .temperature:定义温度显示的样式,包括字体大小、字体重量、外边距和位置。
  • .temperature::after:定义温度单位的样式,包括字体大小和位置。
  • .timestamp:定义时间戳的样式,包括颜色、字体大小、外边距和布局。
  • .thermometer:定义温度计的样式,包括高度、宽度、背景颜色、圆角和阴影。
  • .thermometer::before:定义温度计内部的渐变条样式,包括高度和过渡效果。
  • .thermometer::after:定义温度计底部的圆形样式,包括背景颜色和位置。
  • .stats:定义统计信息的样式,包括布局、对齐方式和外边距。
  • .stat:定义单个统计项的样式,包括文本对齐方式。
  • .stat-value 和 .stat-label:分别定义统计值和标签的样式,包括字体大小和颜色。
  • .trend:定义趋势指示器的样式,包括布局、对齐方式、间隙和字体大小。
  • .trend-up 和 .trend-down:分别为上升和下降趋势定义不同的颜色。
  • footer:定义页脚的样式,包括内边距、颜色和字体大小。

各位互联网搭子,要是这篇文章成功引起了你的注意,别犹豫,关注、点赞、评论、分享走一波,让我们把这份默契延续下去,一起在知识的海洋里乘风破浪!

相关推荐
passerby606133 分钟前
完成前端时间处理的另一块版图
前端·github·web components
掘了40 分钟前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅43 分钟前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅1 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
崔庆才丨静觅2 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment2 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
崔庆才丨静觅2 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端
剪刀石头布啊2 小时前
jwt介绍
前端
爱敲代码的小鱼2 小时前
AJAX(异步交互的技术来实现从服务端中获取数据):
前端·javascript·ajax
Cobyte2 小时前
AI全栈实战:使用 Python+LangChain+Vue3 构建一个 LLM 聊天应用
前端·后端·aigc