当前位置:首页 > JavaScript

js实现关灯

2026-02-01 09:33:21JavaScript

实现关灯效果的JavaScript方法

使用CSS和JavaScript结合的方式可以模拟关灯效果,通常通过调整页面亮度或覆盖遮罩层实现。

HTML结构

<button id="toggleLight">关灯</button>
<div id="content">页面内容区域</div>

CSS样式

#content {
  transition: all 0.5s ease;
}
.dark-mode {
  background-color: #222;
  color: #eee;
  /* 可选:添加遮罩层 */
  position: relative;
}
.dark-mode::after {
  content: "";
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(0, 0, 0, 0.8);
  z-index: 999;
}

JavaScript代码

const toggleBtn = document.getElementById('toggleLight');
const content = document.getElementById('content');

toggleBtn.addEventListener('click', function() {
  content.classList.toggle('dark-mode');
  this.textContent = content.classList.contains('dark-mode') ? '开灯' : '关灯';
});

更高级的实现方案

对于需要保存用户偏好的场景,可以结合localStorage:

// 检查本地存储
if (localStorage.getItem('darkMode') === 'true') {
  content.classList.add('dark-mode');
  toggleBtn.textContent = '开灯';
}

toggleBtn.addEventListener('click', function() {
  content.classList.toggle('dark-mode');
  const isDark = content.classList.contains('dark-mode');
  localStorage.setItem('darkMode', isDark);
  this.textContent = isDark ? '开灯' : '关灯';
});

使用CSS变量实现主题切换

现代浏览器支持CSS变量,可以实现更灵活的主题切换:

CSS

:root {
  --bg-color: #fff;
  --text-color: #333;
}
.dark-mode {
  --bg-color: #222;
  --text-color: #eee;
}
body {
  background-color: var(--bg-color);
  color: var(--text-color);
  transition: all 0.5s ease;
}

JavaScript

document.documentElement.classList.toggle('dark-mode');

性能优化建议

对于大型页面,使用CSS滤镜可能比覆盖遮罩层更高效:

js实现关灯

.dark-mode {
  filter: brightness(0.3);
}

这种方法通过GPU加速,对性能影响较小,但会改变所有元素的显示效果。

标签: js
分享给朋友:

相关文章

js实现百叶窗

js实现百叶窗

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

js实现防洪

js实现防洪

防抖(Debounce)实现 防抖的核心思想是在事件触发后延迟执行回调函数,若在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口调整等场景。 function debounce(func,…

js验证码的实现

js验证码的实现

验证码的基本实现原理 验证码(CAPTCHA)的核心目标是区分人类用户和自动化程序。JavaScript可用于生成或验证客户端验证码,但需注意纯前端验证可能被绕过,通常需结合后端验证。 纯前端验证码…

js实现图片移动

js实现图片移动

使用CSS和JavaScript实现图片移动 方法一:使用CSS动画结合JavaScript控制 通过CSS定义动画关键帧,JavaScript动态添加或移除动画类。 /* CSS部分 */ .m…

js实现菜单导航

js实现菜单导航

实现基础菜单导航结构 使用HTML和CSS创建菜单的基本结构,再通过JavaScript添加交互功能。HTML部分通常使用<ul>和<li>标签构建层级: <nav i…

js实现vue组件

js实现vue组件

使用原生JavaScript实现类似Vue的组件功能 基础组件结构 创建一个简单的组件系统需要实现数据绑定、模板渲染和事件处理。以下是一个基础实现框架: class Component { co…