Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用css变量颜色和js更改div背景_Javascript_Html_Css - Fatal编程技术网

Javascript 如何使用css变量颜色和js更改div背景

Javascript 如何使用css变量颜色和js更改div背景,javascript,html,css,Javascript,Html,Css,因此,这是一个非常基本的函数(为我的目的而找到并编辑),它将div背景色交替为白色或黑色 我想更改代码以利用root属性中的css变量,并且在html中没有onClick函数。我想把html和js分开,但我不知道该怎么做 我可以有两个按钮,可以为div在css变量颜色之间切换吗 多谢各位 函数更改颜色(颜色){ var元素=document.getElementById('box'); element.style.backgroundColor=颜色; } 根目录{ --白色{颜色:#fff}

因此,这是一个非常基本的函数(为我的目的而找到并编辑),它将div背景色交替为白色或黑色

我想更改代码以利用root属性中的css变量,并且在html中没有onClick函数。我想把html和js分开,但我不知道该怎么做

我可以有两个按钮,可以为div在css变量颜色之间切换吗

多谢各位

函数更改颜色(颜色){
var元素=document.getElementById('box');
element.style.backgroundColor=颜色;
}
根目录{
--白色{颜色:#fff}
--黑色{颜色:#000}
}
.盒子{
宽度:100px;
高度:100px;
边框:1px实心#aaa;
背景色:#fff;
}

白色

黑色
您可以设置一个css变量,然后单击“更改颜色”

使用
document.body.style.setProperty('--main color',color)
将颜色设置为var

函数更改颜色(颜色){
document.body.style.setProperty('--main color',color)
}
根目录{
--主色{color:#fff}
}
.盒子{
宽度:100px;
高度:100px;
边框:1px实心#aaa;
背景色:var(--主色);
}

白色

黑色
在这些按钮上注册一个onClick事件(您必须为它们分配一个唯一的ID才能正确引用它们)

例如:

document.getElementById("myBtn").addEventListener("click", changeColor("white"));
编辑

我看到您正在使用jQuery,所以:

$("#myBtn").on( "click", function() {
  changeColor("white");
});

这样你的HTML就没有JS了。您将有两个事件,每个按钮一个。

您可以向按钮添加一个
数据颜色属性,该属性指定单击给定按钮时要更改的颜色(变量)。然后,您可以使用类
color btn
单击
事件侦听器添加到所有按钮。然后,当您单击给定按钮时,将调用事件侦听器,它将从单击的按钮获取数据属性,然后使用
changeColor
函数将div更改为适当的颜色(使用变量)

此外,您还没有正确定义变量。首先,您需要使用
:root
根目录为目标。然后您需要使用
--variableName:COLOR
设置变量。最后,在
changeColor
函数中,您需要使用
.style.backgroundColor=“var(-“+color+””)
来正确使用变量

请参见下面的工作示例

[…document.getElementsByClassName(“color btn”)].forEach(elem=>{
元素addEventListener('click',函数(){
const btnColor=this.getAttribute('data-color');
变色(btnColor);
});
})
功能更改颜色(颜色){
var元素=document.getElementById('box');
element.style.backgroundColor=“var(-“+color+”);
}
:根目录{
--w:#fff;
--b:#000;
}
.盒子{
宽度:100px;
高度:100px;
边框:1px实心#aaa;
背景色:#fff;
}

白色
黑色

:根
{
--白色:#fff;
--黑色:黑色;
}
.盒子
{
宽度:100px;
高度:100px;
边框:1px实心#aaa;
}
功能更改颜色(颜色)
{
var元素=document.getElementById('box');
var style=getComputedStyle(document.querySelector(':root');
element.style.backgroundColor=style.getPropertyValue('--color-'+color);
}
白色
黑色

你想访问
css
属性吗?@Maheer-Ali这是我的问题,是的。另外,在使用css变量更改div的颜色时从html中删除js bgI不想在htmlyou中使用js意味着您不想使用函数?但是你必须知道你很快就能做到这一点,这对我来说似乎是一个很好的例子。非常感谢。
<!DOCTYPE html>
<html>
  <head>
    <style>
        :root 
        {
            --color-white:#fff;
            --color-black:black;
         }

        .box 
        {
          width: 100px;
          height: 100px;
          border: 1px solid #aaa;
        }
    </style>
      <script>
        function changeColor(color) 
        {
              var element = document.getElementById('box');
              var style = getComputedStyle(document.querySelector(':root'));
              element.style.backgroundColor = style.getPropertyValue('--color-' + color);
        }
      </script>
  </head>
  <body>

    <div class="box" id="box">
    </div>

    <button onClick=changeColor('white')>white</button>
    <button onClick=changeColor('black')>black</button>
  </body>
</html>