V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
shuzijumin
V2EX  ›  站长

网页增加亮暗主题切换按钮的方式

  •  
  •   shuzijumin · 2 天前 · 437 次点击

    以 discuz 论坛为例:

    后台 -> 界面 -> 导航设置 -> 顶部导航,添加新导航,名称:暗色主题,链接:#switch-theme

    后台 -> 全局 -> SEO 设置 -> 其它 -> 其他头部信息,添加如下代码:

    <!-- Dark mode switcher -->
    <script>
      if (localStorage.getItem('darkEnabled') === 'true') {
        document.documentElement.style.backgroundColor = '#121212';
        document.documentElement.style.color = '#e0e0e0';
      }
      (function() {
          var darkScript = document.createElement('script');
          darkScript.src = 'https://cdnjs.cloudflare.com/ajax/libs/darkreader/4.9.58/darkreader.min.js';
          darkScript.onload = function() {
              var darkEnabled = localStorage.getItem('darkEnabled') === 'true';
              if(darkEnabled) {
                  DarkReader.enable({
                      brightness: 100,
                      contrast: 90,
                      sepia: 10
                  });
              }
              function setupSwitchTheme() {
                  var switchThemeLink = document.querySelector('a[href="#switch-theme"]');
                  if (switchThemeLink) {
                      switchThemeLink.textContent = darkEnabled ? '亮色主题' : '暗色主题';
                      switchThemeLink.addEventListener('click', function(e) {
                          e.preventDefault();
                          if(darkEnabled) {
                              DarkReader.disable();
                              switchThemeLink.textContent = '暗色主题';
                              darkEnabled = false;
                              localStorage.setItem('darkEnabled', 'false');
                          } else {
                              DarkReader.enable({
                                  brightness: 100,
                                  contrast: 90,
                                  sepia: 10
                              });
                              switchThemeLink.textContent = '亮色主题';
                              darkEnabled = true;
                              localStorage.setItem('darkEnabled', 'true');
                          }
                      });
                  }
              }
              if(document.readyState === 'loading'){
                  document.addEventListener('DOMContentLoaded', setupSwitchTheme);
              } else {
                  setupSwitchTheme();
              }
          };
          document.head.appendChild(darkScript);
      })();
    </script>
    

    这个方法适用于任何不支持暗色主题的亮色网站,只需在自己网页增加 href 为 #switch-theme 的 a 标签,然后将上述代码放到网页的 head 标签内即可

    测试:点击 演示网站 左上角的按钮切换

    2 条回复    2025-03-15 09:20:53 +08:00
    fuzzsh
        1
    fuzzsh  
       2 天前 via Android
    支持自定义 css https://v2ex.com/settings

    BTW 你是来推广自己的站吧🌚
    huluhulu
        2
    huluhulu  
       2 天前
    垃圾,还屏蔽大陆访问
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2974 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 14:44 · PVG 22:44 · LAX 07:44 · JFK 10:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.