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

如何在SASS中定义动态mixin或函数名称?

戚峻
2023-03-14
问题内容

我想在SASS中动态创建mixins,以列表中的每个项目命名,但是似乎不起作用。

我尝试了这个,但出现错误:

$event-icons: fair, concert, art-show, conference, dance-show, film, party, festival, theatre, launch
@each $event-icon in $event-icons
  @mixin event-icon-#{$event-icon}
    background-position: -($event-icon-width * $i) 0

错误:

Invalid CSS after "": expected expression (e.g. 1px, bold), was "#{$event-icon}"

SASS不支持此用法吗?我在手册中找不到任何相关内容。


问题答案:

当前似乎不支持@mixins中的变量插值。

SASS文档将其称为#{}interpolation并描述如下:

插值:#{}

您还可以使用#{}插值语法在 选择器属性名称中 使用SassScript变量:

$name: foo;
$attr: border;
p.#{$name} {
  #{$attr}-color: blue;
}

根据文档,仅选择器和属性名称支持变量名称插值,而不支持@mixins。如果您希望使用该功能,尽管此功能可能已经在跟踪您所描述的内容,但您可能要为其提交问题

编辑: 确定要使用@mixin来完成您正在谈论的样式吗?您可以仅将选择器与插值一起使用吗?例如,这可以工作:

$event-icons: fair, concert, art-show, conference, dance-show, film, party, festival, theatre, launch
@for $i from 1 to length($event-icons)
  $event-icon: nth($event-icons, $i)
  .event-icon-#{$event-icon}
    background-position: -($event-icon-width * $i) 0


 类似资料:
  • 问题内容: 我有这样的功能: 如何定义的,而不打字了他们中的每一个?当然,我宁愿传递一个参数,但是出于我的目的,这是不可能的。 问题答案: 您是否要在源文件中静态地单独定义它们?那么最好的选择是编写一个脚本来生成它们。 另一方面,如果您希望在运行时使用这些功能,则可以使用更高阶的功能。例如 您可以生成这些列表并再次在运行时进行存储。

  • 基于这个线程,我创建了一个动态列名w/dplyr::mutate(),在'dplyr'中使用动态变量名,现在我想对新列进行排序。。。。但我没有正确传递列名

  • 我有一个具有以下结构的数据集: 我想提供一个函数,它允许计算任何值之间的差异,我想这样做使用s这样的函数:(假设参数和作为参数传递) 当然,这不起作用,因为使用非标准评估。我知道现在有一个优雅的解决方案,可以使用来解决这个问题,我已经读过这个小插曲,但我仍然无法理解它。 怎么办? 以下是数据集的前几行,以获得一个可复制的示例

  • @ganeshsittampalam在下面的一条评论中提出了一个重要的观点。我正在寻找“一个中途之家之间没有类型签名在所有和必须给一个精确的”。所以,我不是在寻找一个基于类型类的答案,我只是想让GHC为我的函数的未指定(或未完全限制)类型填充空白处。 是的,像这样的... ...可以工作,但仅限于参数,且函数不是无点的。是否有一种方法可以将这种技术应用于无点函数或返回值? @Rhymoid,如果你

  • 问题内容: 在PostgreSQL 9.1中,PL / pgSQL给出了一个查询: 其中的类型(例如“ table_name”)。 如何获得“ relname”的适当值,该值可直接在语句中用作: 在PL / pgSQL脚本中? 使用如: 失败与: “(”或附近的语法错误LINE 55:UPDATE quote_ident(r.relname)…。 我正在使用的完整代码: 我敢肯定这种事情经常发生,

  • 问题 你想为 sort() 操作创建一个很短的回调函数,但又不想用 def 去写一个单行函数, 而是希望通过某个快捷方式以内联方式来创建这个函数。 解决方案 当一些函数很简单,仅仅只是计算一个表达式的值的时候,就可以使用lambda表达式来代替了。比如: >>> add = lambda x, y: x + y >>> add(2,3) 5 >>> add('hello', 'world') 'h