css - 将 HTML 变量传递给 CSS

标签 css sass shopify

我进行了相当多的搜索,但没有找到任何最新的有用答案。

我的问题是是否可以将变量从 HTML(可能使用数据属性)传递到 CSS?

我的用例是我有品牌页面,我想使用媒体查询来显示每个品牌使用媒体查询的供应商特定背景。我知道你不能在内联 CSS 中使用媒体查询,但我同样不想在我的样式表中创建大约 100 个媒体查询。

在我的 HTML 页面上,我可以访问供应商背景 URL 的对象,所以如果我可以以某种方式将它们传递到单个 CSS 媒体查询中而不执行任何 JavaScript,那就太好了。

最佳答案

您可以使用 CSS 变量来做到这一点(a.f.a.i.k。没有其他方法)。

https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_custom_properties

它会像这样工作:

  • 将 CSS 变量附加到您的 HTML 标记:<html style="--variable:'your_fallback_image.jpg'">
  • 动态地使用 URL 填充该变量(对于本例而言,如何操作无关紧要)
  • 创建将设置背景的 CSS(包装在媒体查询中)

类似下面的内容:

@media screen and (width:64rem){
  background-image: url(--variable);
}

现在它应该在更改 URL 时相应地更新,并设置一个默认值以防您的动态解决方案不起作用。希望有所帮助。

关于css - 将 HTML 变量传递给 CSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55223623/

相关文章:

javascript - 如果我给大填充/边框,边框框不工作

html - 如何让文字居中

css - COMPASS/SASS 如何将变量插入到@import "sprite/*.png"路径?

javascript - 使用 Shopify 变体下拉选择

google-analytics - 分析主机名过滤器删除域

css - 使用 Font Awesome 的双圈堆栈

css - 将 CSS 样式表添加到基于 OpenCart 中的路由的页面

css - 创建一组垂直按钮 - Ionic

sass - 如何将 SASS 与 Polymer 一起使用?

html - 让网站的一部分打破网格并粘在视口(viewport)的一侧的最佳方法是什么?