当前位置:首页 > JavaScript

js实现开灯

2026-03-14 14:48:52JavaScript

使用HTML和JavaScript实现开关灯效果

通过修改网页背景色和文字颜色模拟开灯/关灯效果。以下是一个简单实现方案:

<!DOCTYPE html>
<html>
<head>
    <title>灯光控制</title>
    <style>
        body {
            transition: background-color 0.5s ease;
        }
        .dark {
            background-color: #333;
            color: white;
        }
        .light {
            background-color: white;
            color: black;
        }
    </style>
</head>
<body class="light">
    <button onclick="toggleLight()">开关灯</button>

    <script>
        function toggleLight() {
            const body = document.body;
            if (body.classList.contains('light')) {
                body.classList.remove('light');
                body.classList.add('dark');
            } else {
                body.classList.remove('dark');
                body.classList.add('light');
            }
        }
    </script>
</body>
</html>

使用CSS变量实现主题切换

更灵活的实现方式,通过CSS变量控制颜色主题:

document.addEventListener('DOMContentLoaded', () => {
    const toggleBtn = document.getElementById('theme-toggle');
    const root = document.documentElement;

    toggleBtn.addEventListener('click', () => {
        const currentTheme = root.getAttribute('data-theme');
        if (currentTheme === 'dark') {
            root.setAttribute('data-theme', 'light');
        } else {
            root.setAttribute('data-theme', 'dark');
        }
    });
});

对应的CSS部分:

:root {
    --bg-color: #ffffff;
    --text-color: #000000;
}

[data-theme="dark"] {
    --bg-color: #222222;
    --text-color: #ffffff;
}

body {
    background-color: var(--bg-color);
    color: var(--text-color);
    transition: all 0.3s ease;
}

使用localStorage保存用户偏好

增强用户体验,记住用户选择的主题:

function toggleTheme() {
    const root = document.documentElement;
    const currentTheme = localStorage.getItem('theme') || 'light';
    const newTheme = currentTheme === 'light' ? 'dark' : 'light';

    root.setAttribute('data-theme', newTheme);
    localStorage.setItem('theme', newTheme);
}

// 初始化时读取保存的主题
function initTheme() {
    const savedTheme = localStorage.getItem('theme') || 'light';
    document.documentElement.setAttribute('data-theme', savedTheme);
}

window.addEventListener('DOMContentLoaded', initTheme);

使用classList.toggle简化代码

更简洁的切换实现方式:

const themeBtn = document.querySelector('.theme-toggle');
themeBtn.addEventListener('click', () => {
    document.body.classList.toggle('dark-mode');
});

对应的CSS:

js实现开灯

body.dark-mode {
    background-color: #1a1a1a;
    color: #f0f0f0;
}

这些方法都可以实现基本的"开灯/关灯"效果,区别在于实现细节和扩展性。第一种方法最简单直接,后续方法提供了更好的可维护性和用户体验。

标签: 开灯js
分享给朋友:

相关文章

js实现论坛

js实现论坛

实现论坛的基本功能 使用JavaScript实现一个论坛需要结合前端和后端技术。前端可以使用React、Vue或Angular等框架,后端可以选择Node.js配合Express或Koa框架。数据库可…

js实现点击显示和隐藏

js实现点击显示和隐藏

实现点击显示和隐藏的JavaScript方法 使用classList.toggle切换类名 通过添加/移除CSS类控制元素的显示与隐藏,需提前在CSS中定义隐藏样式(如display: none)。…

js实现百叶窗

js实现百叶窗

使用CSS和JavaScript实现百叶窗效果 通过CSS动画和JavaScript事件监听可以实现百叶窗效果。核心思路是将内容区域分割为多个条状元素,通过控制它们的展开/折叠状态来模拟百叶窗。 &…

js图片上传实现

js图片上传实现

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API实现基础图片上传功能。HTML部分需要设置accept="image/…

js 实现验证码

js 实现验证码

实现验证码的 JavaScript 方法 生成随机验证码 验证码通常由随机字符(数字、字母或混合)组成。以下代码生成一个 6 位随机验证码(数字和字母混合): function generateCa…

js实现点击隐藏

js实现点击隐藏

使用CSS类切换实现点击隐藏 通过添加或移除CSS类来控制元素的显示与隐藏。定义一个隐藏样式类如.hidden { display: none; },通过事件监听切换该类。 document.que…