html - 将值从 HTML 传递到 CSS
问题描述
我很感兴趣是否可以将值从 html 传递给 css 类?像这个例子:
<div class="mt(5)"> Some text </div>
style {
.mt(@mpx) {
margin-top: @mpx px;
}
}
我听说这种方式在 Less 中是可能的
解决方案
不,您想要的方式在 CSS 或其任何超集(如 Less 和其他)中都是不可能的。总是 HTML 使用来自 CSS 的值,而不是相反。因此,您需要一些脚本来满足您的需要。
但是,您可以使用内联样式通过自定义属性将值从 HTML 传递到 CSS :
.c {color: var(--c)}
.m {margin: var(--m)}
<div class="c" style="--c: blue" >Foo</div>
<div class="m" style="--m: 0 2em">Bar</div>
<div class="c" style="--c: green">Baz</div>
甚至像这样:
* {
color: var(--c);
margin: var(--m);
/* etc. */
}
<div style="--c: blue" >Foo</div>
<div style="--m: 0 2em">Bar</div>
<div style="--c: green">Baz</div>
但是该方法与普通香草方法的样式没有什么不同,即:
<div style="color: blue">
... etc.
它本质上是丑陋且不可维护的。
许多人试图通过生成数百个预定义的类来实现目标,例如
.mt-1
,.mt-2
, ....mt-99
等(因为在 CSS 预处理器中做这件事非常容易)。但它是更丑陋的解决方案(我不会详细说明为什么会这样。您将在其他地方阅读或在几个项目后了解自己)。
推荐阅读
- python - 在 A 列中搜索 dict 键的文本,如果找到,则将 B 列设置为 Pandas 数据框中的 dict 值
- java - java.awt.Window.dispose() 在 Mac OSX 上的 Eclipse RCP 项目中永远挂起
- haskell - Haskell GHCI 重新加载然后评估最后一个表达式
- java - 无法使用 restclienttest 模拟 resttemplate 调用
- spring - Spring RestTemplate,如何处理卡盘传输编码
- java - Tomcat 服务器返回错误 404 ...不,我不使用 web.xml、.jsp 或 .html 文件
- firebase - Flutter Web Google SignIn firebase API 失败,clientid 未列入白名单
- javascript - 在 D3 中对具有相同颜色的图边进行分组/聚类
- ruby-on-rails - Rails + simple_form 嵌套对象与茧。如何对有错误的对象进行排序并首先显示
- c++ - 在 C++ 中计算属于两个向量的元素数