gpt4 book ai didi

css - 跨链接的 CSS 文档的 CSS 自定义属性是全局的吗?

转载 作者:技术小花猫 更新时间:2023-10-29 10:36:36 25 4
gpt4 key购买 nike

我正在尝试使用 CSS3 自定义属性(又名 CSS 变量)取得很多成功。我说的是 --black: #000;background: var(--black);类型变量。但是,当在单独的链接文档中声明变量时,我运气不好。

由于 CSS 自定义属性的浏览器兼容性超过 72%(来源:https://caniuse.com/#search=css%20variables),我很想在一个非常具体的应用程序中使用它们,我知道我的受众正在使用兼容的浏览器。

我想知道这些 CSS 自定义属性在所有链接的 CSS 文档中是否在全局范围内,或者它们是否仅在每个文档中是全局的(在 :root 元素处)?

我找不到答案(即使在规范中)!

我阅读的一些研究:

我的具体问题发生在 Ruby on Rails 应用程序中,我在 <style> 中包含 CSS 自定义属性在 SCSS 样式表 include 之前阻止,部署时将对其进行预编译。如果我在 SCSS 的顶部包含变量,一切都会正常。然而 <style> block是包含主题变量,需要ERB在运行时编译。

<!DOCTYPE html>
<html>
<head>
<style type="text/css">
:root {
--primary-color: #000;
}
</style>
<%= stylesheet_link_tag 'application', media: 'all' %>
</head>
</html>

最佳答案

MDN :

Custom properties participate in the cascade: each of them can appear several times, and the value of the variable will match the value defined in the custom property decided by the cascading algorithm.

它的工作方式与任何其他 CSS 属性一样。它应该在目标元素的祖先中声明。所以通常它会声明到顶级元素 htmlroot:

CSS 自定义属性是在外部 CSS 文件中声明还是在同一文件中声明都没有关系。

以下是使用两个外部 CSS 文件的示例。它适用于 Firefox、Safari 和 Chrome。

https://thatseeyou.github.io/css3-examples/basics/customproperty.html

变量.css :

:root {
--red: #f00;
--green: #0f0;
--blue: #00f;
}

样式.css :

.red {
background-color: var(--red);
}
.green {
background-color: var(--green);
}
.blue {
background-color: var(--blue);
}

HTML :

<!DOCTYPE html>
<html lang="en">
<head>
<link href="customproperty/variables.css" rel="stylesheet">
<link href="customproperty/style.css" rel="stylesheet">
<style>
.module {
--red: #800;
--green: #080;
--blue: #008;
}
</style>
</head>
<body>
<div class="red">red</div>
<div class="green">green</div>
<div class="blue">blue</div>
<div class="module">
<div class="red">red in module</div>
<div class="green">green in module</div>
<div class="blue">blue in module</div>
<div>
</body>
</html>

关于css - 跨链接的 CSS 文档的 CSS 自定义属性是全局的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45581135/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com