当前位置: 首页 > 面试题库 >

如何扩展已动态形成选择器的类/混合

王涵育
2023-03-14
问题内容

如何扩展使用&组合器动态形成的Less类?

产生预期输出的较少:

.hello-world {
  color: red;
}

.foo {
  &:extend(.hello-world);
  font-size: 20px;
}

预期的CSS输出:

.hello-world,
.foo {
  color: red;
}
.foo {
  font-size: 20px;
}

Less不会产生预期的输出:

.hello {
  &-world {
    color: red;
  }
}

.foo {
  &:extend(.hello-world);
  font-size: 20px;
}

意外的CSS输出:

.hello-world {
  color: red;
}
.foo {
  font-size: 20px;
}

问题答案:

像这样扩展 动态形成的选择器
(宽松地使用该术语)目前在Less中是不可能的。有一个开放功能要求来支持此功能。直到实施,这里有两个解决方法。

选项1:

.hello.hello- world选择器的内容写入单独的Less文件(例如test.less),进行编译以获取CSS。为的规则创建另一个文件.foo,将编译后的CSS导入为Less文件(使用(less)指令),然后.hello- world按照您的初衷进行扩展。

无测试:

.hello {
  &-world {
    color: red;
  }
}

扩展规则

@import (less) "test.css";
.foo {
  &:extend(.hello-world);
  font-size: 20px;
}

编译的CSS:

.hello-world,
.foo {
  color: red;
}
.foo {
  font-size: 20px;
}

方法之所以可行,是因为在test.css导入文件时,选择器已经形成并且不再动态。缺点是它需要一个额外的文件并创建依赖项。

选项2:

写有规则的虚拟选择所有属性需要被应用到.hello-world.foo并扩展它,如:

.dummy{
    color: red;
}
.hello {
  &-world:extend(.dummy) {};
}

.foo:extend(.dummy){
  font-size: 20px;
}

这会创建一个额外的选择器(虚拟),但差异不大。

注意: 将我的评论添加为答案,以免留下未解决的问题,并且还因为在评论中链接的线程中指定的变通方法不适用于我。



 类似资料:
  • 如何让“教授”延伸到“人”?我应该直接在代码上做吗?还是我错过了什么?

  • 描述 (Description) 使用extend选择器匹配嵌套选择器。 例子 (Example) 以下示例演示了如何在LESS文件中使用扩展嵌套选择器 - extend_syntax.htm <!doctype html> <head> <link rel = "stylesheet" href = "style.css" type = "text/css" /> </h

  • 我有一个复选框,我想说这个复选框:如果(例如)“Einzelberatung Bu”被选中,并且你想选择另一个具有“Einzelberatung…”术语的字段,那么“Komplettes Finanzkonzept”字段应该自动被选中,其他两个字段都应该被取消选中。 正如您所看到的,我是一个绝对的JavaScript初学者。所以希望有人能帮我解决我贴在下面的代码,并告诉我我做错了什么。 谢谢你抽出

  • 问题内容: 假设我们需要使用一个名为“ BaseNode”的类来实现不同类型的树,从该类派生其他类型的Node,并且它假定具有一个自己类型的实例变量,通常看起来像这样: 现在,如果我要为具有更多成员的AVL树派生Node: 原始(&)节点成员仍然会类型我实施AVL树,其防止。谁能告诉我如何解决这一继承问题?谢谢! 问题答案: 解决方案1- 每次访问时,都将其转换为。您可以在其中编写访问器以使其更加

  • 我有重复的变量声明,我认为它们可以通过for循环来改进,但是我的尝试失败了。 我尝试了数组的for-loop声明器,但我的语法不起作用。 我有一个“工作代码”: 我试图减少它是这样的: 预期结果: 与“工作代码”相同的结果: 当我单击“menu1”div时: 实际错误消息:“意外标记=”“未捕获的TypeError:菜单[0][i].AddEventListener不是函数” 编辑:我发现了一个巨

  • 问题内容: 也许这是一个简单的问题,也许不是。我有一个选择框,在其中我用宽度进行硬编码。说120像素。 我希望能够显示第二个选项,以便用户可以看到文本的完整长度。 像其他一切一样。这在Firefox中可以正常工作,但不适用于Internet Explorer6。 问题答案: 如果您可以使用固定方式中预先存在的选项,而又不想通过编程方式更改宽度,那么除非有一点创意,否则可能会很不幸。 您可以尝试将属