是否可以通过JavaScript更改CSS伪元素样式?

例如,我希望动态设置滚动条的 colored颜色 ,如下所示:

document.querySelector("#editor::-webkit-scrollbar-thumb:vertical").style.background = localStorage.getItem("Color");

我还希望能够告诉滚动条这样隐藏:

document.querySelector("#editor::-webkit-scrollbar").style.visibility = "hidden";

但是,这两个脚本都会返回:

未捕获的TypeError:无法读取null的属性"style"

还有别的办法吗?
跨浏览器互操作性并不重要,我只需要它在Webkit浏览器中工作.

推荐答案

EDIT:有一种方法可以通过JavaScript直接更改CSS伪元素样式,如this answer describes,但这里提供的方法更可取.

最接近于在JavaScript中更改伪元素样式的方法是添加和删除类,然后对这些类使用伪元素.隐藏滚动条的示例:

CSS

.hidden-scrollbar::-webkit-scrollbar {
   visibility: hidden;
}

JavaScript

document.getElementById("editor").classList.add('hidden-scrollbar');

要稍后删除相同的类,您可以使用:

document.getElementById("editor").classList.remove('hidden-scrollbar');

Css相关问答推荐

使用location:stickly将元素固定到其父容器的顶部

两列网格中左列第一个文本正下方的按钮

是否可以在元素之间对齐渐变?

如何剪切一个正方形以便我可以绘制追逐边框?

使用 Flex 容器,如何在右对齐所有 Flex 子项的同时赋予子图像完整宽度?

为什么align-content:start应用于单行项目?

更改多边形外部的文本 colored颜色

如何使用 :has() 父 Select 器 Select 父元素的子元素,在父元素和子元素之间没有中间层的情况下?

当您到达页面底部时,如何使页脚 div 将附加的 div 向上推

Nativewind 的某些样式不适用于本机 (Android),但它们适用于网络

semantic-ui-react 使输入使用全宽度可用

如何在 flex-wrap 中优先考虑第一行?

如何将 .btn-group 从 twitter-bootstrap 居中?

您如何设置 Google Places Autocomplete API 的下拉菜单样式?

如何根据其中的内容自动调整

隐藏元素,但显示 CSS 生成的内容

如何在 CSS 中绘制一个圆形扇区?

如何在 iOS 上获取带有 CSS 溢出的滚动条

如何在 React 应用程序中使用 CSS 模块应用全局样式?

脉动的心脏 CSS 动画