当前位置:首页 > JavaScript

js夜间实现

2026-01-31 23:15:31JavaScript

夜间模式实现方法

通过JavaScript实现夜间模式通常涉及修改页面样式或切换CSS类。以下是几种常见方法:

CSS变量切换

function toggleNightMode() {
  document.documentElement.style.setProperty('--bg-color', isNightMode ? '#ffffff' : '#1a1a1a');
  document.documentElement.style.setProperty('--text-color', isNightMode ? '#333333' : '#e0e0e0');
}

类名切换

const body = document.body;
function toggleDarkMode() {
  body.classList.toggle('dark-mode');
}

// CSS示例
.dark-mode {
  background-color: #121212;
  color: #f5f5f5;
}

使用媒体查询同步

const darkModeMediaQuery = window.matchMedia('(prefers-color-scheme: dark)');
darkModeMediaQuery.addListener((e) => {
  document.body.classList.toggle('dark-mode', e.matches);
});

持久化存储方案

使用localStorage保存用户偏好:

function setDarkMode(isDark) {
  localStorage.setItem('darkMode', isDark);
  document.body.classList.toggle('dark-mode', isDark);
}

// 初始化时读取
const savedMode = localStorage.getItem('darkMode');
if (savedMode !== null) {
  document.body.classList.toggle('dark-mode', savedMode === 'true');
}

渐变过渡效果

添加CSS过渡使切换更平滑:

body {
  transition: background-color 0.3s ease, color 0.3s ease;
}

完整实现示例

HTML结构:

<button id="themeToggle">切换夜间模式</button>

JavaScript实现:

const themeToggle = document.getElementById('themeToggle');
const prefersDarkScheme = window.matchMedia('(prefers-color-scheme: dark)');

const currentTheme = localStorage.getItem('theme');
if (currentTheme === 'dark' || (!currentTheme && prefersDarkScheme.matches)) {
  document.body.classList.add('dark-theme');
}

themeToggle.addEventListener('click', () => {
  document.body.classList.toggle('dark-theme');
  const theme = document.body.classList.contains('dark-theme') ? 'dark' : 'light';
  localStorage.setItem('theme', theme);
});

CSS样式:

js夜间实现

:root {
  --bg-light: #ffffff;
  --text-light: #333333;
  --bg-dark: #1a1a1a;
  --text-dark: #e0e0e0;
}

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

body.dark-theme {
  background-color: var(--bg-dark);
  color: var(--text-dark);
}

标签: 夜间js
分享给朋友:

相关文章

js实现vue路由

js实现vue路由

Vue路由基础实现 使用Vue Router实现前端路由需要先安装并配置路由库。Vue Router是Vue.js官方的路由管理器。 安装Vue Router: npm install vue-r…

原生js实现轮播图

原生js实现轮播图

基本结构搭建 HTML部分需要包含轮播图容器、图片列表及导航按钮。结构示例如下: <div class="slider-container"> <div class="slid…

js实现点击显示和隐藏

js实现点击显示和隐藏

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

js类实现

js类实现

使用类实现 JavaScript 功能 在 JavaScript 中,类(Class)是一种语法糖,基于原型继承机制。通过 class 关键字可以更直观地定义对象模板。 基本类定义 class…

js 实现mvc

js 实现mvc

MVC 模式简介 MVC(Model-View-Controller)是一种软件设计模式,将应用程序分为三个核心组件:模型(Model)处理数据和业务逻辑,视图(View)负责展示数据,控制器(Con…

js 实现超链接

js 实现超链接

使用 HTML 的 <a> 标签 在 JavaScript 中动态创建超链接可以通过操作 DOM 实现。通过 document.createElement 创建一个 <a> 元…