首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何像GitHub那样切换到Chromes深色滚动条?

如何像GitHub那样切换到Chromes深色滚动条?
EN

Stack Overflow用户
提问于 2021-01-28 23:48:16
回答 2查看 5K关注 0票数 12

我只是偶然发现,当你使用GitHubs深色模式时,GitHub在Chrome中使用了深色滚动条。如果切换颜色模式,滚动条也会切换。

我怎样才能实现这个行为呢?我找不到任何方法来告诉浏览器使用暗模式。

暗模式滚动条:

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-02-08 15:33:30

它是CSS属性color-scheme。这也将在表单控件、背景颜色和文本颜色上应用主题。

目前支持Chrome 81和Safari 13

MDN来源:https://developer.mozilla.org/en-US/docs/Web/CSS/color-scheme

代码语言:javascript
运行
复制
:root {
  color-scheme: dark;
}

.container {
  padding: 25px;
  height: 2000px;
}
代码语言:javascript
运行
复制
<div class="container">
  <div class="text">Dark Mode</div>
  <input type="text" placeholder="input with dark theme"/>
</div>

如果你想动态地改变主题,那么你就会遇到这样的问题:滚动条在交互之前不会更新它的配色方案。刷新滚动条的一种方法是更改其parent overflow属性,在本例中为html元素。

代码语言:javascript
运行
复制
const btn = document.querySelector("button");
let isDark = true;

btn.addEventListener("click", () => {
  // remove scrollbars
  document.documentElement.style.overflow = "hidden";
  // trigger reflow so that overflow style is applied
  document.body.clientWidth;
  // change scheme
  document.documentElement.setAttribute(
    "data-color-scheme",
    isDark ? "light" : "dark"
  );
  // remove overflow style, which will bring back the scrollbar with the correct scheme 
  document.documentElement.style.overflow = "";

  isDark = !isDark;
});
代码语言:javascript
运行
复制
[data-color-scheme="dark"] {
  color-scheme: dark;
}

[data-color-scheme="light"] {
  color-scheme: light;
}

.container {
  padding: 25px;
  height: 2000px;
 }
代码语言:javascript
运行
复制
<html lang="en" data-color-scheme="dark">
<body>
  <div class="container">
    <button>Click to Change Color Scheme</button>
    <br>
    <br>
    <br>
    <input type="text" placeholder="dummy input">
  </div>
</body>
</html>

票数 25
EN

Stack Overflow用户

发布于 2021-02-24 02:24:14

代码语言:javascript
运行
复制
const btn = document.querySelector("button");
let isDark = true;

btn.addEventListener("click", () => {
// https://stackoverflow.com/questions/65940522/how-do-i-switch-to-chromes-dark-scrollbar-like-github-does
            document.documentElement.style.display = 'none';

            document.documentElement.setAttribute(
                "data-color-scheme",
                isDark  ? "dark" : "light"
            );
            // remove scrollbars
//                document.documentElement.style.overflow = "hidden";
            // trigger reflow so that overflow style is applied
            document.body.clientWidth;
            // remove overflow style, which will bring back the scrollbar with the correct scheme
//                document.documentElement.style.overflow = "";
            document.documentElement.style.display = '';

  isDark = !isDark;
});
代码语言:javascript
运行
复制
[data-color-scheme="dark"] {
  color-scheme: dark;
}

[data-color-scheme="light"] {
  color-scheme: light;
}

.container {
  padding: 25px;
  height: 2000px;
 }
代码语言:javascript
运行
复制
<html lang="en" data-color-scheme="dark">
<body>
  <div class="container">
    <button>Click to Change Color Scheme</button>
    <br>
    <br>
    <br>
    <input type="text" placeholder="dummy input">
  </div>
</body>
</html>

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65940522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档