我可以使用 LESS 将当前选择器作为字符串访问吗?

Posted

技术标签:

【中文标题】我可以使用 LESS 将当前选择器作为字符串访问吗?【英文标题】:Can I access the current selector as a string using LESS? 【发布时间】:2015-01-28 17:33:31 【问题描述】:

我想利用我的 css 类的名称来指定它们所依赖的图像的 url。我知道在选择器中使用 & 符号可以让您添加其他状态,但我想知道是否可以将其作为字符串访问?我想做类似以下的事情:

.my-image
    background: url('images/@&.png');

并将其编译为:

.my-image
    background: url('images/my-image.png');

再想一想,我现在发现我还需要以某种方式删除前导句点,但无论如何 - 有没有办法将选择器名称捕获为属性定义中的字符串?

【问题讨论】:

【参考方案1】:

好吧,这与您想象的不完全一样,但也许它可以解决您的问题。

用你想要的选择器的所有值创建一个数组,然后让编译器创建规则(I've found the code here):

@images: 'my-image', 'cool-image', 'foobar';

.-(@i: length(@images)) when (@i > 0) 
    @name: e(extract(@images, @i));
    &.@name background: url("images/@name.png")
    .-((@i - 1));
 .-;

【讨论】:

谢谢约翰,这确实是一个有效的选择,也是我没有想到的。我仍然很好奇是否有办法以某种方式访问​​当前上下文,所以我将保留这个问题,但如果没有任何结果,我会接受它:) 顺便说一句,你不需要引号,@images: my-image, cool-image, etc; 是有效的 Less 语句,然后你不需要 e(...)

以上是关于我可以使用 LESS 将当前选择器作为字符串访问吗?的主要内容,如果未能解决你的问题,请参考以下文章

我可以在 PHP 中使用 LESS/SASS 混合颜色吗?

less样式如何使用cssmodule

在 LESS CSS 中使用通用选择器作为 mixin

获取当前的jQuery选择器字符串?

LESS 中 CSS 选择器的转义语法

如何使用 jQuery DataTables 和复选框作为行选择器访问列元素数据