通过 jQuery 访问 CSS 个变量
Accessing CSS variables via jQuery
如何在 jquery 中获取 css 变量?我正在尝试将 border: 2px solid #fff
替换为 css 变量 --border.
这是我的代码:
$(".header .navigation").on("show.bs.collapse", function(e) {
console.log("open")
$(".navigation").css("border", "2px solid #fff");
});
您可以使用getComputedStyle
method to get all styles and get CSS variable value from it using getPropertyValue方法。
$(".header .navigation").on("show.bs.collapse", function(e) {
var style = window.getComputedStyle(document.body);
$(".navigation").css("border", style.getPropertyValue('--border'));
});
如果你想通过Javascript更新变量,那么你可以使用setPropertyValue
方法。
$(".header .navigation").on("show.bs.collapse", function(e) {
var style = window.getComputedStyle(document.body);
style.setPropertyValue('--border', '2px solid #f00');
});
或者您可以使用 CSS var()
通过 CSS.
引用变量
$(".header .navigation").on("show.bs.collapse", function(e) {
var style = window.getComputedStyle(document.body);
$(".navigation").css("border", "var(--border)"));
});
在您的 CSS 中,您可以将导航的边框设置为等于 var(--border)
。然后,在 javascript 中,您可以使用 $('body').get(0).style.setProperty("--border", "style");
更改 --border
变量的值
参见下面的示例:
const bodyStyle = $('body').get(0).style;
$(".header .navigation").on("mouseenter", function(e) {
bodyStyle.setProperty("--border", "2px solid #f00");
})
.on("mouseleave", function(e) {
bodyStyle.setProperty("--border", "0px solid #f00");
});
.header {
height: 50px;
width: 100%;
}
.navigation {
height: 100%;
width: 100%;
background-color: black;
border: var(--border);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<header class="header">
<nav class="navigation">
</nav>
</header>
您可以使用
.css("border-color", "var(--border)");
示例:
setTimeout(function() {
$("div").css("border-color", "var(--border)");
}, 1000);
:root {
--border: red;
}
div {
border: 1px solid green;
width:100px;
height:100px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div></div>
如何在 jquery 中获取 css 变量?我正在尝试将 border: 2px solid #fff
替换为 css 变量 --border.
这是我的代码:
$(".header .navigation").on("show.bs.collapse", function(e) {
console.log("open")
$(".navigation").css("border", "2px solid #fff");
});
您可以使用getComputedStyle
method to get all styles and get CSS variable value from it using getPropertyValue方法。
$(".header .navigation").on("show.bs.collapse", function(e) {
var style = window.getComputedStyle(document.body);
$(".navigation").css("border", style.getPropertyValue('--border'));
});
如果你想通过Javascript更新变量,那么你可以使用setPropertyValue
方法。
$(".header .navigation").on("show.bs.collapse", function(e) {
var style = window.getComputedStyle(document.body);
style.setPropertyValue('--border', '2px solid #f00');
});
或者您可以使用 CSS var()
通过 CSS.
$(".header .navigation").on("show.bs.collapse", function(e) {
var style = window.getComputedStyle(document.body);
$(".navigation").css("border", "var(--border)"));
});
在您的 CSS 中,您可以将导航的边框设置为等于 var(--border)
。然后,在 javascript 中,您可以使用 $('body').get(0).style.setProperty("--border", "style");
--border
变量的值
参见下面的示例:
const bodyStyle = $('body').get(0).style;
$(".header .navigation").on("mouseenter", function(e) {
bodyStyle.setProperty("--border", "2px solid #f00");
})
.on("mouseleave", function(e) {
bodyStyle.setProperty("--border", "0px solid #f00");
});
.header {
height: 50px;
width: 100%;
}
.navigation {
height: 100%;
width: 100%;
background-color: black;
border: var(--border);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<header class="header">
<nav class="navigation">
</nav>
</header>
您可以使用
.css("border-color", "var(--border)");
示例:
setTimeout(function() {
$("div").css("border-color", "var(--border)");
}, 1000);
:root {
--border: red;
}
div {
border: 1px solid green;
width:100px;
height:100px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div></div>