网站深色浅色切换案例-单页面,非全局。


bash 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Dark/Light Mode Example with Div Boxes</title>
    <style>
        /* 默认的浅色模式 */
        body {
            background-color: rgb(235, 240, 246); /* 浅色背景 */
            color: rgb(31, 41, 55); /* 浅色模式下的字体颜色 */
            transition: background-color 0.3s, color 0.3s;
            font-family: Arial, sans-serif;
        }

        /* 深色模式样式 */
        body.dark-mode {
            background-color: rgb(31, 41, 55); /* 深色背景 */
            color: rgb(235, 240, 246); /* 深色模式下的字体颜色 */
        }

        /* 按钮样式 */
        .theme-toggle-btn {
            position: fixed;
            top: 20px;
            right: 20px;
            padding: 10px 20px;
            background-color: #008CBA;
            color: white;
            border: none;
            cursor: pointer;
            border-radius: 5px;
            transition: background-color 0.3s;
        }

        .theme-toggle-btn:hover {
            background-color: #005f73;
        }

        /* 盒子容器 */
        .container {
            display: flex;
            flex-wrap: wrap;
            justify-content: space-around;
            padding: 20px;
        }

        /* 单个盒子样式 */
        .box {
            width: 150px;
            height: 150px;
            margin: 10px;
            display: flex;
            justify-content: center;
            align-items: center;
            border-radius: 10px;
            font-size: 18px;
            color: white;
            transition: background-color 0.3s;
        }

        /* 浅色模式下的盒子颜色 */
        .box.box1 {
            background-color: #ff6f61; /* 浅色的红 */
        }
        .box.box2 {
            background-color: #6ec1e4; /* 浅色的蓝 */
        }
        .box.box3 {
            background-color: #ffd966; /* 浅色的黄 */
        }
        .box.box4 {
            background-color: #93c47d; /* 浅色的绿 */
        }

        /* 深色模式下的盒子颜色 */
        body.dark-mode .box.box1 {
            background-color: #b34747; /* 深色的红 */
        }
        body.dark-mode .box.box2 {
            background-color: #3b82f6; /* 深色的蓝 */
        }
        body.dark-mode .box.box3 {
            background-color: #f59e0b; /* 深色的黄 */
        }
        body.dark-mode .box.box4 {
            background-color: #10b981; /* 深色的绿 */
        }

    </style>
</head>
<body>
<button class="theme-toggle-btn" id="theme-toggle">当前是浅色模式</button>

<h1 style="text-align: center;">深色/浅色模式切换示例</h1>
<p style="text-align: center;">背景色和盒子颜色根据模式变化。</p>

<!-- 盒子模块 -->
<div class="container">
    <div class="box box1">盒子 1</div>
    <div class="box box2">盒子 2</div>
    <div class="box box3">盒子 3</div>
    <div class="box box4">盒子 4</div>
</div>

<script>
    const toggleButton = document.getElementById('theme-toggle');
    const bodyElement = document.body;

    // 检查用户上次选择的主题
    const savedTheme = localStorage.getItem('theme');
    if (savedTheme) {
        bodyElement.classList.toggle('dark-mode', savedTheme === 'dark');
        updateButtonText();
    } else {
        // 如果没有保存的主题,则根据用户系统的主题偏好设置
        if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {
            bodyElement.classList.add('dark-mode');
        }
        updateButtonText();
    }

    // 切换主题模式的函数
    toggleButton.addEventListener('click', () => {
        bodyElement.classList.toggle('dark-mode');
        const isDarkMode = bodyElement.classList.contains('dark-mode');
        localStorage.setItem('theme', isDarkMode ? 'dark' : 'light');
        updateButtonText();
    });

    // 更新按钮的文字
    function updateButtonText() {
        const isDarkMode = bodyElement.classList.contains('dark-mode');
        toggleButton.textContent = isDarkMode ? '深色模式' : '浅色模式';
    }
</script>
</body>
</html>
相关推荐
2分钟速写快排2 小时前
孔乙己的茴字有多少种写法?|AI 对话实时通信的三种实现
前端·javascript·github
ZhengEnCi9 小时前
登录页电脑端怎么设计才不空:5 种布局方案与可粘贴 AI 提示词
前端·css·设计
用户0044729538259 小时前
练歌镜:让眼镜听懂“循环这一句”
javascript
yuyuxun112 小时前
协同过滤的校园二手物品智能推荐系统的设计与实现 毕业设计-附源码40082
javascript·vue.js·spring boot·python·数据分析·django·课程设计
总要学点什么15 小时前
第105篇:三维特效-流动图片墙体效果——让箭头沿墙长滚,它俩竟是同一份代码
开发语言·javascript·ecmascript·gis·webgl·材质·cesium
Agent世界16 小时前
用 CDP 做发布自动化:四道机器闸门与产物验收
前端·javascript
总要学点什么16 小时前
第104篇:三维特效-流动墙体效果——让贴图沿墙流动,它却只肯走一条对角线
开发语言·javascript·ecmascript·gis·webgl·材质·cesium
程序员大阳17 小时前
副队长ES6+教程(3)--解构赋值
前端·javascript·es6·赋值·解构
神膘护体小月半17 小时前
css - 元素背景图由 hover 触发,初次加载时闪动的解决办法
前端·javascript·css
程序员大阳17 小时前
副队长ES6+教程(2)--let 与 const
前端·javascript·es6·const·let·var