JS getPropertyValue获取CSS变量值为空?

发布于 2022-09-12 13:54:42 字数 940 浏览 15 评论 0

问题情景:

定义好css变量后使用js获取修改css变量时发现在使用getPropertyValue方法无法取到css变量的值、为空,但是在setProperty后再getPropertyValue则能取到值。
`

<head>
    <style>
        :root {
            --bg_color: green;
        }
        body {
            background-color: var(--bg_color);
        }
    </style>
</head>
<body>
    <script>
        var mystyle = document.documentElement.style;
        console.log('bgcolor=' + mystyle.getPropertyValue("--bg_color").trim());
        setTimeout("changBgcolor()", 3000);

        function changBgcolor() {
            mystyle.setProperty("--bg_color", "red");
            console.log('在setProperty后bgcolor=' + mystyle.getPropertyValue("--bg_color").trim());
        }
    </script>
</body>

`

输出结果是:

image

期待解答的问题:

为啥初次getPropertyValue无法取得css变量的值,而在setProperty后可以取得值?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

走过海棠暮 2022-09-19 13:54:42

已解决。原因是CSS变量不是采用内联样式,而document.documentElement.style.getPropertyValue只能获取内联样式的值,所以get值为空。同样的document.documentElement.style.setProperty赋值操作是会作为内联样式添加的,所以此时再get便有值

香草可樂 2022-09-19 13:54:42
document.styleSheets[0].cssRules[0].style.getPropertyValue('--bg_color')
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文