可以在类名中传递CSS的参数吗?例如:
.mrg-t-X {
margin-top: Xpx;
}
<span class="mrg-t-10">Test</span>
在这个例子中,X应该是10。
答案 0 :(得分:8)
不,不是。我们最接近的是attr()
function,但这只适用于content
属性:
figure::before {
content: attr(data-before) ', ';
}
figure::after {
content: attr(data-after) '!';
}
<figure data-before="Hello" data-after="world"></figure>
也许有一天这会扩大,以便我们可以在其他地方使用它,但目前这是不可能的。
目前,我确信您是否希望能够使用.mrg-t-X
课程,因此您需要为您希望允许的每个X
定义单独的样式规则:
.mrg-t-1 { ... }
.mrg-t-2 { ... }
.mrg-t-3 { ... }
...
答案 1 :(得分:1)
如今,您可以在样式属性中使用CSS variable而不是生成特定的类:
自定义属性(有时称为CSS变量或级联变量)是CSS作者定义的实体,其中包含要在整个文档中重用的特定值。使用自定义属性符号(例如
--main-color: black;
)进行设置,并使用var()
函数(例如color: var(--main-color);
)对其进行访问。复杂的网站有大量的CSS,通常具有很多重复的值。例如,相同的颜色可能在数百个不同的地方使用,如果需要更改该颜色,则需要进行全局搜索和替换。自定义属性允许将值存储在一个地方,然后在其他多个地方引用。另一个好处是语义标识符。例如,
--main-text-color
比#00ff00
更易于理解,尤其是在其他情况下也使用相同的颜色时。自定义属性受级联约束,并从其父级继承其值。
示例
span {
display: block;
margin-top: var(--m-t);
}
html {
background: repeating-linear-gradient(to bottom, transparent, 10px, lightgrey 10px, lightgrey 20px);} /* see 10px steps */
<span style="--m-t:50px">one</span>
<span style="--m-t:85px">two</span>
<span style="--m-t:110px;">three</span>
答案 2 :(得分:0)
没有你的代码是错的 但你可以在标签内写css
*<span style="margin-top:Xpx;">*
答案 3 :(得分:0)
使用CSS直接传递参数是不可能的,但您不是第一个要问的人 - 请查看this question查看CSS和JavaScript选项以及this可能会有所帮助关于属性选择。
这只会在您查看margin-top
的几个变量时有所帮助,但我不知道您使用的是什么上下文。根据您使用它的内容,可能有更好的方法
最简单的方法可能就是将内联样式添加到您的范围<span style="margin-top:10px">
但我尝试远离内联CSS!
答案 4 :(得分:0)
也许您正在寻找SCSS或LESS。它有mixins,变量等,它自动编译真实和长css。它被用于此目的,并且用相同的结果写出越来越少的CSS。
@size: 10px;
.class { font-size: @size; }
祝你好运!