我有一个网络应用项目,使用两个样式表来定义两个颜色集(白天和夜晚模式)。每个样式表定义具有不同颜色的相同CSS变量(例如 dayMode.css 中的“ - primaryColor:'white '”和“ - primaryColor:'black nightMode.css 中的“”。单击按钮时切换样式表。
现在,所有元素都通过引用这些变量而着色 - 包括CSS和JS代码。例如:
div {background-color: var(--primaryColor);}
$(this).css({backgroundColor: "var(--primaryColor)"});
切换样式表时,所有元素都会调整为新定义。现在我设置了我的第一个Chart.js并试图用我的变量着色它,如:
yAxes: [{
ticks: {
fontColor: "var(--primaryTextColor)"
}
}]
但不起作用。知道如何解决这个问题吗?提前谢谢!
答案 0 :(得分:3)
CSS变量在样式表中使用,如果您要在JS中访问它们,您可以在下面的代码段中执行:
var style = getComputedStyle(document.body);
var primCol = style.getPropertyValue('--primaryColor');
$("#mydiv").text("primaryColor: " + primCol);
:root {
--primaryColor: #336699;
}
#mydiv {
background-color: var(--primaryColor);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="mydiv">
</div>
所以在chart.js中:
var style = getComputedStyle(document.body);
var primCol = style.getPropertyValue('--primaryColor');
var chartCol = style.getPropertyValue('--chartColor');
var chartData = {
labels: ['a', 'b', 'c', 'd'],
datasets: [{
label: 'value',
backgroundColor: 'rgba(219, 20, 0, 0.2)',
borderColor: chartCol,
data: [30, 50, 25, 10]
}]
};
var ctx = document.getElementById("myChart").getContext("2d");
var myBar = new Chart(ctx, {
type: 'line',
data: chartData,
options: {
legend: { display: false },
scales: {
yAxes: [{
ticks: {
fontColor: primCol,
}
}],
xAxes: [{
ticks: {
beginAtZero: true
}
}],
}
}
});
:root {
--primaryColor: #00ff00;
--chartColor: #ff0000;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.2/Chart.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<canvas id="myChart" height="300" width="500"></canvas>