SCSS中用循环为同名类分配@mixins报错,求可行方案
解决Sass中@each循环通过变量调用同名@mixin的问题
是的,你遇到的问题确实是因为早期Sass版本中@include不支持直接以变量作为mixin名称,编译器会把#{$herramienta}当成字符串而非标识符,所以抛出Expected identifier错误。
不用逐个编写类,有两种可行方案:
方案一:使用call()函数(兼容旧版本Sass)
Sass内置的call()函数可以接收变量形式的mixin名称,间接完成调用。修改你的代码如下:
// 假设已定义对应的mixins和变量列表 @mixin herramienta1 { /* 你的mixin逻辑 */ } @mixin herramienta2 { /* 你的mixin逻辑 */ } $listaHerramientas: herramienta1, herramienta2; @each $herramienta in $listaHerramientas { .#{$herramienta} { @include call($herramienta); } }
方案二:直接使用变量(仅兼容新版本Dart Sass)
如果你使用的是Dart Sass 1.23.0及以上版本,官方已经支持在@include中直接使用变量作为mixin名称,原代码去掉插值语法即可:
@each $herramienta in $listaHerramientas { .#{$herramienta} { @include $herramienta; } }
注意:这个写法在LibSass或旧版Ruby Sass中依然会报错,需要兼容旧环境的话优先用方案一。
内容的提问来源于stack exchange,提问作者JGA
相关产品推荐
相关产品推荐

