您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
启用 Bilibili 暗黑模式
- // ==UserScript==
- // @name Bilibili 暗黑模式
- // @namespace http://tampermonkey.net/
- // @version 1.2.2
- // @description 启用 Bilibili 暗黑模式
- // @author K
- // @match https://*.bilibili.com/*
- // @grant GM_setValue
- // @grant GM_getValue
- // @grant GM_registerMenuCommand
- // @grant GM_unregisterMenuCommand
- // @grant GM_addValueChangeListener
- // @icon https://www.google.com/s2/favicons?domain=www.bilibili.com
- // @license MIT
- // ==/UserScript==
- (function () {
- "use strict";
- const USER_PREFERS_MODE_KEY = "user-prefers-mode"; // "dark" | "light"
- const SYSTEM_PREFERS_FIRST_KEY = "system-prefers-first"; // true | false
- const DARK_MODE_CLASS_NAME = "bili_dark";
- const DARK_MODE_BRIGHTNESS = 0.95;
- let containerSelectors;
- // Uitl
- function hasDarkModeClass() {
- return document.documentElement.classList.contains(DARK_MODE_CLASS_NAME);
- }
- function setDarkMode() {
- GM_setValue(USER_PREFERS_MODE_KEY, "dark");
- document.documentElement.classList.toggle(DARK_MODE_CLASS_NAME, true);
- }
- function setLightMode() {
- GM_setValue(USER_PREFERS_MODE_KEY, "light");
- document.documentElement.classList.toggle(DARK_MODE_CLASS_NAME, false);
- }
- function toggleDarkMode() {
- if (hasDarkModeClass()) {
- setLightMode();
- } else {
- setDarkMode();
- }
- }
- function enableSystemPrefersFirst() {
- GM_setValue(SYSTEM_PREFERS_FIRST_KEY, true);
- handlePrefersColorSchemeChange();
- }
- function disableSystemPrefersFirst() {
- GM_setValue(SYSTEM_PREFERS_FIRST_KEY, false);
- const userPrefersMode = GM_getValue(USER_PREFERS_MODE_KEY);
- userPrefersMode === "dark" ? setDarkMode() : setLightMode();
- }
- function handlePrefersColorSchemeChange(event) {
- if (!event) {
- event = window.matchMedia("(prefers-color-scheme: dark)");
- }
- const isSystemFirst = GM_getValue(SYSTEM_PREFERS_FIRST_KEY);
- document.documentElement.classList.toggle(
- DARK_MODE_CLASS_NAME,
- isSystemFirst && event.matches
- );
- }
- // Init
- function initDarkMode() {
- const userPrefersMode = GM_getValue(USER_PREFERS_MODE_KEY);
- const isSystemFirst = GM_getValue(SYSTEM_PREFERS_FIRST_KEY);
- window
- .matchMedia("(prefers-color-scheme: dark)")
- .addEventListener("change", handlePrefersColorSchemeChange);
- if (isSystemFirst) {
- handlePrefersColorSchemeChange();
- } else {
- userPrefersMode === "dark" ? setDarkMode() : setLightMode();
- }
- }
- // Menu
- async function registerMenuCommand() {
- await GM_registerMenuCommand("深色模式", setDarkMode);
- await GM_registerMenuCommand("浅色模式", setLightMode);
- await GM_registerMenuCommand("开启跟随系统变化", enableSystemPrefersFirst);
- await GM_registerMenuCommand("关闭跟随系统变化", disableSystemPrefersFirst);
- }
- // Style
- function addDarkModeStyle() {
- const style = document.createElement("style");
- // 基本暗黑模式样式
- style.textContent = `
- :root:not(.${DARK_MODE_CLASS_NAME}) {
- }
- :root.${DARK_MODE_CLASS_NAME} {
- --Ga0: #0d0d0e;
- --Ga0_s: #1e2022;
- --Ga0_t: #1e2022;
- --Ga1: #000;
- --Ga1_s: #232527;
- --Ga1_t: #232527;
- --Ga1_e: #232527;
- --Ga2: #2f3134;
- --Ga2_t: #2f3134;
- --Ga3: #46494d;
- --Ga3_t: #46494d;
- --Ga4: #5e6267;
- --Ga4_t: #5e6267;
- --Ga5: #757a81;
- --Ga5_t: #757a81;
- --Ga6: #8b9097;
- --Ga6_t: #8b9097;
- --Ga7: #a2a7ae;
- --Ga7_t: #a2a7ae;
- --Ga8: #b9bdc2;
- --Ga8_t: #b9bdc2;
- --Ga9: #d0d3d7;
- --Ga9_t: #d0d3d7;
- --Ga10: #e7e9eb;
- --Ga10_t: #e7e9eb;
- --Ga11: #242628;
- --Ga12: #1f2022;
- --Wh0: #17181a;
- --Wh0_t: #17181a;
- --Ba0: #000;
- --Ba0_s: #fff;
- --Ba0_t: #000;
- --Pi0: #26161c;
- --Pi1: #2f1a22;
- --Pi2: #472030;
- --Pi3: #76304b;
- --Pi4: #a73e65;
- --Pi5: #d44e7d;
- --Pi5_t: #d44e7d;
- --Pi6: #dc6d94;
- --Pi7: #e38caa;
- --Pi8: #ebabc1;
- --Pi9: #f2cad8;
- --Pi10: #fae9ef;
- --Ma0: #261525;
- --Ma1: #2e182d;
- --Ma2: #461c43;
- --Ma3: #72296c;
- --Ma4: #a13396;
- --Ma5: #cb41bb;
- --Ma6: #d462c7;
- --Ma7: #dd83d3;
- --Ma8: #e6a4de;
- --Ma9: #efc5ea;
- --Ma10: #f8e6f6;
- --Re0: #261314;
- --Re1: #2e1617;
- --Re2: #471a1c;
- --Re3: #742728;
- --Re4: #a63131;
- --Re5: #d1403e;
- --Re6: #d9615f;
- --Re7: #e18281;
- --Re8: #e9a3a2;
- --Re9: #f1c5c4;
- --Re10: #f9e5e5;
- --Or0: #28180f;
- --Or1: #301b10;
- --Or2: #4a230e;
- --Or3: #783610;
- --Or4: #a9490d;
- --Or5: #d66011;
- --Or6: #dd7c3a;
- --Or7: #e49764;
- --Or8: #ebb38d;
- --Or9: #f2ceb6;
- --Or10: #faeadf;
- --Ye0: #2a1e0f;
- --Ye1: #342410;
- --Ye2: #4d300b;
- --Ye3: #7c4c08;
- --Ye4: #ad6800;
- --Ye5: #db8700;
- --Ye6: #e19c2c;
- --Ye7: #e7b158;
- --Ye8: #eec584;
- --Ye9: #f4dab1;
- --Ye10: #faefdd;
- --Ly0: #2a2310;
- --Ly1: #332a11;
- --Ly2: #49390c;
- --Ly3: #745909;
- --Ly4: #a27c00;
- --Ly5: #cca000;
- --Ly6: #d5b02c;
- --Ly7: #dec158;
- --Ly8: #e7d184;
- --Ly9: #efe2b1;
- --Ly10: #f8f2dd;
- --Lg0: #19220f;
- --Lg1: #1e2911;
- --Lg2: #273c0e;
- --Lg3: #3c600f;
- --Lg4: #50840b;
- --Lg5: #67a70e;
- --Lg6: #81b638;
- --Lg7: #9cc562;
- --Lg8: #b6d58b;
- --Lg9: #d0e4b5;
- --Lg10: #ebf3df;
- --Gr0: #102017;
- --Gr1: #11271b;
- --Gr2: #123923;
- --Gr3: #175c34;
- --Gr4: #198042;
- --Gr5: #1fa251;
- --Gr6: #46b26f;
- --Gr7: #6dc28d;
- --Gr8: #93d2ab;
- --Gr9: #bae2c9;
- --Gr10: #e1f3e8;
- --Cy0: #0c1f20;
- --Cy1: #0d2627;
- --Cy2: #093739;
- --Cy3: #085b5c;
- --Cy4: #028080;
- --Cy5: #03a29f;
- --Cy6: #2fb2b0;
- --Cy7: #5ac2c0;
- --Cy8: #86d2d1;
- --Cy9: #b2e2e1;
- --Cy10: #ddf3f3;
- --Lb0: #0a1b23;
- --Lb1: #0b202a;
- --Lb2: #082d40;
- --Lb3: #064a69;
- --Lb4: #006996;
- --Lb5: #0087bd;
- --Lb6: #2c9cc8;
- --Lb7: #58b1d4;
- --Lb8: #84c5df;
- --Lb9: #b1dbeb;
- --Lb10: #ddeff6;
- --Bl0: #151826;
- --Bl1: #181c2f;
- --Bl2: #1f2748;
- --Bl3: #2e3c76;
- --Bl4: #3b53a8;
- --Bl5: #4b6bd4;
- --Bl6: #6a85db;
- --Bl7: #899ee3;
- --Bl8: #a9b8ea;
- --Bl9: #c8d2f2;
- --Bl10: #e7ebf9;
- --Pu0: #1d1628;
- --Pu1: #221a31;
- --Pu2: #31214c;
- --Pu3: #4e317d;
- --Pu4: #6d3fb1;
- --Pu5: #8c50e0;
- --Pu6: #a06ee5;
- --Pu7: #b48deb;
- --Pu8: #c8abf0;
- --Pu9: #dbc9f5;
- --Pu10: #f0e8fb;
- --Br0: #211d1b;
- --Br1: #282320;
- --Br2: #382f2a;
- --Br3: #59483f;
- --Br4: #7a6154;
- --Br5: #9a7c6a;
- --Br6: #ac9384;
- --Br7: #bda99e;
- --Br8: #cebfb7;
- --Br9: #e0d7d1;
- --Br10: #f2eeeb;
- --Si0: #212325;
- --Si1: #27292c;
- --Si2: #36393f;
- --Si3: #535962;
- --Si4: #6f7987;
- --Si5: #8c99aa;
- --Si6: #a0abb9;
- --Si7: #b4bcc7;
- --Si8: #c8ced6;
- --Si9: #dce0e5;
- --Si10: #f0f2f4;
- --Pi5_rgb: 212, 78, 125;
- --Pi1_rgb: 47, 26, 34;
- --Lb5_rgb: 0, 135, 189;
- --Lb1_rgb: 11, 32, 42;
- --Re5_rgb: 209, 64, 62;
- --Re1_rgb: 46, 22, 23;
- --Gr5_rgb: 31, 162, 81;
- --Gr1_rgb: 17, 39, 27;
- --Or5_rgb: 214, 96, 17;
- --Or1_rgb: 48, 27, 16;
- --Ye5_rgb: 219, 135, 0;
- --Ye1_rgb: 52, 36, 16;
- --Wh0_rgb: 23, 24, 26;
- --Ga0_rgb: 13, 13, 14;
- --Ga1_rgb: 0, 0, 0;
- --Ga11_rgb: 36, 38, 40;
- --Ga12_rgb: 31, 32, 34;
- --Wh0_u_rgb: 255, 255, 255;
- --Ga10_rgb: 231, 233, 235;
- --Ga7_rgb: 162, 167, 174;
- --Ga5_rgb: 117, 122, 129;
- --Ga3_rgb: 70, 73, 77;
- --Lb6_rgb: 44, 156, 200;
- --Ye6_rgb: 225, 156, 44;
- --Ga1_s_rgb: 35, 37, 39;
- --Ga2_rgb: 47, 49, 52;
- --Ga0_s_rgb: 30, 32, 34;
- --Ba0_rgb: 0, 0, 0;
- filter: brightness(${DARK_MODE_BRIGHTNESS});
- }
- .${DARK_MODE_CLASS_NAME} .bg {
- background-image: url('https://s1.hdslb.com/bfs/static/blive/blfe-message-web/static/img/dark_bg.e136e3d5.png') !important;
- }
- .${DARK_MODE_CLASS_NAME} .bili-dyn-item ,
- .${DARK_MODE_CLASS_NAME} .bili-dyn-list-tabs {
- background: var(--bg2_float) ;
- }
- .${DARK_MODE_CLASS_NAME} .bili-dyn-card-video__body{
- background-color: var(--bg2_float) ;
- border: 1px solid var(--line_regular) ;
- }
- `;
- document.head.appendChild(style);
- }
- addDarkModeStyle();
- initDarkMode();
- registerMenuCommand();
- })();