[js] 多彩 Tab

当思源中打开文档的时候,如果频繁切换目标文档,有时光靠标签文字看起来不够直观,不够快速,这个多彩 tab,可以在打开文档时,自动给 tab 生成一个随机背景颜色,方便快速识别不同的标签。

mtab.png

代码:

https://gitee.com/wish163/mysoft/blob/main/%E6%80%9D%E6%BA%90/%E5%A4%9A%E5%BD%A9Tab.js

使用说明:

可以通过参数 tabStyles 修改或添加不同的 tab 样式,默认是思源自带的背景色 1-12,你也可以根据需要自定义。

为了适应明暗主题,如果你自定义的颜色,建议最好用 css 代码片段先设置不同主题下的颜色方案。

当然,你也可以直接写在 tableStyles 参数里,比如,[data-theme-mode="light"] &{background-color:lightblue;}[data-theme-mode="dark"] &{background-color:darkred;} 这个样式在亮色主题下用 lightblue,在暗色主题下用 darkred,但必须 useInlineStyle 参数设置为 no 的时候才支持这样写。

当 useInlineStyle 参数设置为 no 的时候,也支持对子元素控制样式,比如,background-color:var(--b3-font-background1);.item__text{color:white},这个支持对 tab 标题文字的颜色修改。

注意,再次强调,支持直接写主题样式和子元素样式,必须在 0.0.2 版本以后才行,且必须参数 useInlineStyle='no'。

以下是我用的样式,给背景设置了半透明和加了圆角

// 添加tab样式,可根据自己需要添加或修改样式 const tabStyles = [ 'background-color:color-mix(in srgb, var(--b3-font-background1) 50%, transparent);border-radius: 5px;', 'background-color:color-mix(in srgb, var(--b3-font-background2) 50%, transparent);border-radius: 5px;', 'background-color:color-mix(in srgb, var(--b3-font-background3) 50%, transparent);border-radius: 5px;', 'background-color:color-mix(in srgb, var(--b3-font-background4) 50%, transparent);border-radius: 5px;', 'background-color:color-mix(in srgb, var(--b3-font-background5) 50%, transparent);border-radius: 5px;', 'background-color:color-mix(in srgb, var(--b3-font-background6) 50%, transparent);border-radius: 5px;', 'background-color:color-mix(in srgb, var(--b3-font-background7) 50%, transparent);border-radius: 5px;', 'background-color:color-mix(in srgb, var(--b3-font-background8) 50%, transparent);border-radius: 5px;', 'background-color:color-mix(in srgb, var(--b3-font-background9) 50%, transparent);border-radius: 5px;', 'background-color:color-mix(in srgb, var(--b3-font-background10) 50%, transparent);border-radius: 5px;', 'background-color:color-mix(in srgb, var(--b3-font-background11) 50%, transparent);border-radius: 5px;', 'background-color:color-mix(in srgb, var(--b3-font-background12) 50%, transparent);border-radius: 5px;' ];
  • 思源笔记

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

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

    26632 引用 • 110882 回帖
  • 代码片段

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

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

    219 引用 • 1552 回帖 • 1 关注
1 操作
wilsons 在 2025-04-21 19:46:13 更新了该帖

相关帖子

7 回帖

欢迎来到这里!

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

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

    一键三连

  • lichlaughing via macOS

    用上了 👍

  • harryZ via macOS

    感谢,喜欢

  • lichlaughing via macOS

    image.png

    能不能多彩 tab 的时候,把 tab 里面的文字颜色设置为白色。要不然黑色看不清。

    1 回复
  • wilsons

    tabStyles 参数里不是可以随意设置样式吗?哪个颜色有问题,后面加上 color:white 就行。

    另外,也可以按照我下面的样式那样,把背景设为半透明,颜色就不会那么深了。

    1 回复
  • lichlaughing via macOS

    不知道是否哪里影响了。我在上次回帖的时候就尝试添加了。

    image.png

    但是结果:image.png

    我发现文字在里面的 span 里。不知道这个情况怎么处理。 我使用的 QYL 主题。

    1 回复
  • wilsons

    方法 1 (推荐

    代码已实现支持对子元素样式的控制。

    比如:可在样式后添加 .item__text{color:white;} 来实现。

    更新代码到 0.0.2 版即可,useInlineStyle 参数可设定使用内联样式还是使用外部样式。

    方法 2

    增加 css 片段专门控制这些颜色

    比如,针对你这个颜色添加

    .layout-tab-bar .item[style*="--b3-font-background10"] .item__text{ color: white; }

    方法 3 (不推荐)

    简单粗暴

    比如,我这里 item__text 用的是--b3-theme-on-surace

    image.png

    那直接在 tabStyles 参数里添加--b3-theme-on-surface: white

    image.png

    但这样也会影响到 tab 关闭按钮的颜色,所以推荐方法 1

    2 操作
    wilsons 在 2025-04-21 19:25:46 更新了该回帖
    wilsons 在 2025-04-21 19:19:46 更新了该回帖
请输入回帖内容 ...
wilsons
正在努力开发 wilsons 工具箱中 🛠️ 目前已正式入驻爱发电啦!💖 想催更、提需求?欢迎访问 👉 https://afdian.com/a/wilsons

推荐标签 标签

  • Git

    Git 是 Linux Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

    211 引用 • 358 回帖 • 1 关注
  • SOHO

    为成为自由职业者在家办公而努力吧!

    7 引用 • 55 回帖 • 1 关注
  • 友情链接

    确认过眼神后的灵魂连接,站在链在!

    24 引用 • 373 回帖
  • 禅道

    禅道是一款国产的开源项目管理软件,她的核心管理思想基于敏捷方法 scrum,内置了产品管理和项目管理,同时又根据国内研发现状补充了测试管理、计划管理、发布管理、文档管理、事务管理等功能,在一个软件中就可以将软件研发中的需求、任务、bug、用例、计划、发布等要素有序的跟踪管理起来,完整地覆盖了项目管理的核心流程。

    10 引用 • 15 回帖 • 1 关注
  • 微信

    腾讯公司 2011 年 1 月 21 日推出的一款手机通讯软件。用户可以通过摇一摇、搜索号码、扫描二维码等添加好友和关注公众平台,同时可以将自己看到的精彩内容分享到微信朋友圈。

    135 引用 • 798 回帖 • 1 关注
  • CloudFoundry

    Cloud Foundry 是 VMware 推出的业界第一个开源 PaaS 云平台,它支持多种框架、语言、运行时环境、云平台及应用服务,使开发人员能够在几秒钟内进行应用程序的部署和扩展,无需担心任何基础架构的问题。

    4 引用 • 16 回帖 • 201 关注
  • OkHttp

    OkHttp 是一款 HTTP & HTTP/2 客户端库,专为 Android 和 Java 应用打造。

    16 引用 • 6 回帖 • 93 关注
  • wolai

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

    2 引用 • 14 回帖 • 1 关注
  • IPFS

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

    20 引用 • 245 回帖 • 238 关注
  • MySQL

    MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是最流行的关系型数据库管理系统之一。

    694 引用 • 537 回帖
  • OneDrive
    2 引用 • 1 关注
  • uTools

    uTools 是一个极简、插件化、跨平台的现代桌面软件。通过自由选配丰富的插件,打造你得心应手的工具集合。

    7 引用 • 28 回帖
  • Google

    Google(Google Inc.,NASDAQ:GOOG)是一家美国上市公司(公有股份公司),于 1998 年 9 月 7 日以私有股份公司的形式创立,设计并管理一个互联网搜索引擎。Google 公司的总部称作“Googleplex”,它位于加利福尼亚山景城。Google 目前被公认为是全球规模最大的搜索引擎,它提供了简单易用的免费服务。不作恶(Don't be evil)是谷歌公司的一项非正式的公司口号。

    49 引用 • 192 回帖
  • 外包

    有空闲时间是接外包好呢还是学习好呢?

    26 引用 • 234 回帖 • 5 关注
  • 思源笔记

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

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

    26631 引用 • 110882 回帖
  • Vim

    Vim 是类 UNIX 系统文本编辑器 Vi 的加强版本,加入了更多特性来帮助编辑源代码。Vim 的部分增强功能包括文件比较(vimdiff)、语法高亮、全面的帮助系统、本地脚本(Vimscript)和便于选择的可视化模式。

    29 引用 • 66 回帖 • 2 关注
  • jsoup

    jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址、HTML 文本内容。它提供了一套非常省力的 API,可通过 DOM,CSS 以及类似于 jQuery 的操作方法来取出和操作数据。

    6 引用 • 1 回帖 • 504 关注
  • JVM

    JVM(Java Virtual Machine)Java 虚拟机是一个微型操作系统,有自己的硬件构架体系,还有相应的指令系统。能够识别 Java 独特的 .class 文件(字节码),能够将这些文件中的信息读取出来,使得 Java 程序只需要生成 Java 虚拟机上的字节码后就能在不同操作系统平台上进行运行。

    180 引用 • 120 回帖
  • Redis

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

    284 引用 • 248 回帖 • 2 关注
  • Mobi.css

    Mobi.css is a lightweight, flexible CSS framework that focus on mobile.

    1 引用 • 6 回帖 • 771 关注
  • OAuth

    OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是 oAuth 的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此 oAuth 是安全的。oAuth 是 Open Authorization 的简写。

    36 引用 • 103 回帖 • 36 关注
  • Kotlin

    Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,由 JetBrains 设计开发并开源。Kotlin 可以编译成 Java 字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。在 Google I/O 2017 中,Google 宣布 Kotlin 成为 Android 官方开发语言。

    19 引用 • 33 回帖 • 89 关注
  • gRpc
    11 引用 • 9 回帖 • 101 关注
  • Hibernate

    Hibernate 是一个开放源代码的对象关系映射框架,它对 JDBC 进行了非常轻量级的对象封装,使得 Java 程序员可以随心所欲的使用对象编程思维来操纵数据库。

    39 引用 • 103 回帖 • 726 关注
  • 运维

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

    151 引用 • 257 回帖
  • 创造

    你创造的作品可能会帮助到很多人,如果是开源项目的话就更赞了!

    187 引用 • 1021 回帖
  • V2EX

    V2EX 是创意工作者们的社区。这里目前汇聚了超过 400,000 名主要来自互联网行业、游戏行业和媒体行业的创意工作者。V2EX 希望能够成为创意工作者们的生活和事业的一部分。

    16 引用 • 236 回帖 • 235 关注