[js] [基于 AI 修改][wilsons 出品][只是补了暗黑版本] 代码片段 暗黑模式下多彩 TAB

(()=>{ // 添加tab样式,可根据自己需要添加或修改样式 // 添加tab样式,可根据自己需要添加或修改样式 const tabStyles = [ 'background-color:color-mix(in srgb, var(--b3-font-background1) 50%, transparent);border-radius: 5px; height: 28px; min-height:28px; line-height:28px;', 'background-color:color-mix(in srgb, var(--b3-font-background2) 50%, transparent);border-radius: 5px; height: 28px; min-height:28px; line-height:28px;', 'background-color:color-mix(in srgb, var(--b3-font-background3) 50%, transparent);border-radius: 5px; height: 28px; min-height:28px; line-height:28px;', 'background-color:color-mix(in srgb, var(--b3-font-background4) 50%, transparent);border-radius: 5px; height: 28px; min-height:28px; line-height:28px;', 'background-color:color-mix(in srgb, var(--b3-font-background5) 50%, transparent);border-radius: 5px; height: 28px; min-height:28px; line-height:28px;', 'background-color:color-mix(in srgb, var(--b3-font-background6) 50%, transparent);border-radius: 5px; height: 28px; min-height:28px; line-height:28px;', 'background-color:color-mix(in srgb, var(--b3-font-background7) 50%, transparent);border-radius: 5px; height: 28px; min-height:28px; line-height:28px;', 'background-color:color-mix(in srgb, var(--b3-font-background8) 50%, transparent);border-radius: 5px; height: 28px; min-height:28px; line-height:28px;', 'background-color:color-mix(in srgb, var(--b3-font-background9) 50%, transparent);border-radius: 5px; height: 28px; min-height:28px; line-height:28px;', 'background-color:color-mix(in srgb, var(--b3-font-background10) 50%, transparent);border-radius: 5px; height: 28px; min-height:28px; line-height:28px;', 'background-color:color-mix(in srgb, var(--b3-font-background11) 50%, transparent);border-radius: 5px; height: 28px; min-height:28px; line-height:28px;', 'background-color:color-mix(in srgb, var(--b3-font-background12) 50%, transparent);border-radius: 5px; height: 28px; min-height:28px; line-height:28px;' ]; // 是否使用内联样式 yes使用,no使用外部样式 // 内联样式无法控制tab子元素样式,如果你需要控制tab子元素样式,则填no const useInlineStyle = 'no'; // 手机版返回 if(isMobile()) return; // 监听dock加载完毕 whenElementExist('.layout__center').then((center)=>{ const tabs = center.querySelectorAll('li[data-type="tab-header"]'); tabs.forEach((tab)=>{ setTabBackground(tab); }); observeElementAdded(center, 'li[data-type="tab-header"]', (tab) => { setTabBackground(tab); }); }); function setTabBackground(tab) { const style = getRandomStyle(); if(!style) return; generateTabStyle(tab, style); } function generateTabStyle(tab, style) { if(useInlineStyle === 'yes'){ tab.style = style; } else { // 添加margin-top微调位置 addStyle(`.layout-tab-bar .item[data-id="${tab.dataset.id}"]{${style} margin-top:2px;}`); } } function addStyle(css) { // 创建一个新的style元素 const style = document.createElement('style'); // 设置CSS规则 style.innerHTML = css; // 将style元素添加到<head>中 document.head.appendChild(style); } let lastSelected = null; // 记录上一次选择的样式 function getRandomStyle(defaultStyle = '') { const validStyles = tabStyles.filter(style => style.trim() !== ''); // 如果没有有效样式,返回默认样式 if (validStyles.length === 0) { return defaultStyle; } // 如果只有一个有效样式,直接返回它 if (validStyles.length === 1) { lastSelected = validStyles[0]; return validStyles[0]; } let randomIndex, selectedStyle; // 确保生成的样式与上一次不同 do { randomIndex = Math.floor(Math.random() * validStyles.length); selectedStyle = validStyles[randomIndex]; } while (selectedStyle === lastSelected); // 更新 lastSelected 并返回结果 lastSelected = selectedStyle; return selectedStyle; } /** * 监控 center 的后代元素 li[data-type="tab-header"] 被添加 * @param {string} container - 容器选择器(如 "center") * @param {string} targetSelector - 目标元素选择器(如 "li[data-type='tab-header']") * @param {Function} callback - 当目标元素被添加时的回调函数 */ function observeElementAdded(container, targetSelector, callback) { // 创建 MutationObserver 实例 const observer = new MutationObserver((mutationsList) => { mutationsList.forEach((mutation) => { if (mutation.type === 'childList') { // 遍历新增的节点 mutation.addedNodes.forEach((node) => { // 检查新增节点是否匹配目标选择器 if (node.matches && node.matches(targetSelector)) { callback(node); // 触发回调 } }); } }); }); // 配置观察选项 const config = { childList: true, // 监听子节点的变化 subtree: true, // 监听所有后代节点的变化 }; // 开始观察 observer.observe(container, config); // 返回 observer 实例,方便后续停止观察 return observer; } // 如果需要停止观察,可以调用 stopObserving.disconnect(); function isMobile() { return !!document.getElementById("sidebar"); } // 等待元素出现 function whenElementExist(selector, node) { return new Promise(resolve => { const check = () => { const el = typeof selector==='function'?selector():(node||document).querySelector(selector); if (el) resolve(el); else requestAnimationFrame(check); }; check(); }); } })();

基于原本 AI 调整了下

原贴: [js] 多彩 Tab

作者: wilsons

我就只是 AI 无脑调整了一丢丢

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    26722 引用 • 111303 回帖
  • 代码片段

    代码片段分为 CSS 与 JS 两种代码,添加在 [设置 - 外观 - 代码片段] 中,这些代码会在思源笔记加载时自动执行,用于改善笔记的样式或功能。

    用户在该标签下分享代码片段时需在帖子标题前添加 [css] [js] 用于区分代码片段类型。

    225 引用 • 1602 回帖 • 1 关注
3 操作
JeffreyChen 在 2025-05-03 19:02:23 更新了该帖
ZQ11 在 2025-05-03 09:04:55 更新了该帖
ZQ11 在 2025-05-03 09:01:23 更新了该帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • 区块链

    区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法 。

    92 引用 • 752 回帖
  • Hexo

    Hexo 是一款快速、简洁且高效的博客框架,使用 Node.js 编写。

    22 引用 • 148 回帖 • 16 关注
  • IPFS

    IPFS(InterPlanetary File System,星际文件系统)是永久的、去中心化保存和共享文件的方法,这是一种内容可寻址、版本化、点对点超媒体的分布式协议。请浏览 IPFS 入门笔记了解更多细节。

    20 引用 • 245 回帖 • 240 关注
  • CodeMirror
    2 引用 • 17 回帖 • 177 关注
  • 架构

    我们平时所说的“架构”主要是指软件架构,这是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。另外还有“业务架构”、“网络架构”、“硬件架构”等细分领域。

    142 引用 • 442 回帖
  • Redis

    Redis 是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。从 2010 年 3 月 15 日起,Redis 的开发工作由 VMware 主持。从 2013 年 5 月开始,Redis 的开发由 Pivotal 赞助。

    284 引用 • 248 回帖 • 3 关注
  • 运维

    互联网运维工作,以服务为中心,以稳定、安全、高效为三个基本点,确保公司的互联网业务能够 7×24 小时为用户提供高质量的服务。

    151 引用 • 257 回帖
  • PostgreSQL

    PostgreSQL 是一款功能强大的企业级数据库系统,在 BSD 开源许可证下发布。

    22 引用 • 22 回帖 • 3 关注
  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    554 引用 • 675 回帖
  • GitBook

    GitBook 使您的团队可以轻松编写和维护高质量的文档。 分享知识,提高团队的工作效率,让用户满意。

    3 引用 • 8 回帖 • 2 关注
  • Ant-Design

    Ant Design 是服务于企业级产品的设计体系,基于确定和自然的设计价值观上的模块化解决方案,让设计者和开发者专注于更好的用户体验。

    17 引用 • 23 回帖 • 13 关注
  • ReactiveX

    ReactiveX 是一个专注于异步编程与控制可观察数据(或者事件)流的 API。它组合了观察者模式,迭代器模式和函数式编程的优秀思想。

    1 引用 • 2 回帖 • 183 关注
  • 心情

    心是产生任何想法的源泉,心本体会陷入到对自己本体不能理解的状态中,因为心能产生任何想法,不能分出对错,不能分出自己。

    59 引用 • 369 回帖 • 2 关注
  • Notion

    Notion - The all-in-one workspace for your notes, tasks, wikis, and databases.

    10 引用 • 77 回帖
  • 30Seconds

    📙 前端知识精选集,包含 HTML、CSS、JavaScript、React、Node、安全等方面,每天仅需 30 秒。

    • 精选常见面试题,帮助您准备下一次面试
    • 精选常见交互,帮助您拥有简洁酷炫的站点
    • 精选有用的 React 片段,帮助你获取最佳实践
    • 精选常见代码集,帮助您提高打码效率
    • 整理前端界的最新资讯,邀您一同探索新世界
    488 引用 • 384 回帖 • 6 关注
  • Oracle

    Oracle(甲骨文)公司,全称甲骨文股份有限公司(甲骨文软件系统有限公司),是全球最大的企业级软件公司,总部位于美国加利福尼亚州的红木滩。1989 年正式进入中国市场。2013 年,甲骨文已超越 IBM,成为继 Microsoft 后全球第二大软件公司。

    107 引用 • 127 回帖 • 341 关注
  • App

    App(应用程序,Application 的缩写)一般指手机软件。

    91 引用 • 384 回帖
  • wolai

    我来 wolai:不仅仅是未来的云端笔记!

    2 引用 • 14 回帖 • 5 关注
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3203 引用 • 8217 回帖 • 1 关注
  • IDEA

    IDEA 全称 IntelliJ IDEA,是一款 Java 语言开发的集成环境,在业界被公认为最好的 Java 开发工具之一。IDEA 是 JetBrains 公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。

    181 引用 • 400 回帖
  • OpenShift

    红帽提供的 PaaS 云,支持多种编程语言,为开发人员提供了更为灵活的框架、存储选择。

    14 引用 • 20 回帖 • 668 关注
  • OpenResty

    OpenResty 是一个基于 NGINX 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。

    17 引用 • 49 关注
  • 招聘

    哪里都缺人,哪里都不缺人。

    188 引用 • 1057 回帖 • 2 关注
  • 国际化

    i18n(其来源是英文单词 internationalization 的首末字符 i 和 n,18 为中间的字符数)是“国际化”的简称。对程序来说,国际化是指在不修改代码的情况下,能根据不同语言及地区显示相应的界面。

    8 引用 • 26 回帖 • 1 关注
  • 电影

    这是一个不能说的秘密。

    123 引用 • 608 回帖
  • PWA

    PWA(Progressive Web App)是 Google 在 2015 年提出、2016 年 6 月开始推广的项目。它结合了一系列现代 Web 技术,在网页应用中实现和原生应用相近的用户体验。

    14 引用 • 69 回帖 • 186 关注
  • 工具

    子曰:“工欲善其事,必先利其器。”

    302 引用 • 772 回帖