【问题标题】:how can ı change scrollbar color according to the user's choice?如何根据用户的选择更改滚动条颜色?
【发布时间】:2021-11-22 09:11:48
【问题描述】:

我可以将滚动条的特定颜色更改为红色,如下所示,但我想根据我从用户那里获得的颜色变量来更改滚动颜色。

我想我可以通过两种方式解决这个问题。

  1. 我需要给第 15 行变量。 (而不是像红色这样的特定颜色)这可能吗?

或者

  1. 我需要将滚动条作为 div 元素处理,然后我可以在 ts 文件中更改滚动条颜色。但是如何在 dom 中捕捉滚动条?

谢谢。

【问题讨论】:

标签: html css typescript vue.js sass


【解决方案1】:

很简单,你可以这样试试。 您可以在 html 中包含颜色输入元素,并将滚动条的背景颜色设置为其值。

var colorInput = document.getElementById("color-input");
var root = document.querySelector(":root");

colorInput.onchange = function() {

  root.style.setProperty("--scrollbar-color", colorInput.value);

}
:root {

  --scrollbar-color: rgb(255, 0, 0); /* red */

}
div {

  margin: 10px;
  border: 1px solid black;
  padding: 10px;
  height: 100px;
  overflow-y: scroll;

}

::-webkit-scrollbar {

  -webkit-appearance: none;
  width: 15px;
  background-color: lightgrey;

}

::-webkit-scrollbar-thumb {

  background-color: var(--scrollbar-color);

}
<input type="color" id="color-input">
<div>
text<br>
text<br>
text<br>
text<br>
text<br>
text<br>
text<br>
text<br>
text<br>
</div>

所以现在当用户选择一种颜色时,它会被应用到滚动条上。使用 run code sn-p 按钮尝试一下

编辑:-

正如你所评论的,它可以专门这样做,只是一个简单的改变

在此处查看编辑后的代码。

var colorInput = document.getElementById("color-input");
var element = document.getElementById("el");

colorInput.onchange = function() {

  el.style.setProperty("--scrollbar-color", colorInput.value);

}
#el {

  --scrollbar-color : rgb(255, 0, 0) /* red */
  margin: 10px;
  border: 1px solid black;
  padding: 10px;
  height: 100px;
  overflow-y: scroll;

}

#el::-webkit-scrollbar {

  -webkit-appearance: none;
  width: 15px;
  background-color: lightgrey;

}

#el::-webkit-scrollbar-thumb {

  background-color: var(--scrollbar-color);

}
<input type="color" id="color-input">
<div id="el">
text<br>
text<br>
text<br>
text<br>
text<br>
text<br>
text<br>
text<br>
text<br>
</div>

【讨论】:

  • 它对我有用,非常感谢。我想问一些更清楚的理解。为什么我们使用 ':root' 作为 querySelector?当我使用 ':root' 时,我会捕获整个页面。难道我们不能更具体地处理它而不是整个页面吗?
  • 是的,当然!例如,我只是这样做了,请参阅编辑后的代码。我将javascript变量改为引用div元素而不是引用根,并在div元素中添加css变量而不是根。
猜你喜欢
  • 2021-09-03
  • 2023-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多