You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Stylus能否在属性值而非属性名中使用插值?

解决方案

你遇到的问题是Stylus的属性值内不支持直接用{}插值生成动态变量名,可以用Stylus内置的lookup()函数实现需求,该函数可以接收字符串格式的变量名,返回对应变量的取值。

正确实现代码

首先定义预设的颜色变量:

color-TODO = red
color-TODO-background = blue
color-TODO-shadow = green

改写后的Mixin如下:

tag(tagName)
  .tag-{tagName}
    color: lookup('color-' + tagName)
    background: lookup('color-' + tagName + '-background')
    box-shadow: 0 0 4px lookup('color-' + tagName + '-shadow')

// 调用Mixin生成对应样式
tag(TODO)

编译后输出的CSS就是你需要的效果:

.tag-TODO {
  color: red;
  background: blue;
  box-shadow: 0 0 4px green;
}

可选优化

如果要避免变量未定义导致的无效属性,可以给lookup()传第二个参数作为默认值,也可以加前置判断:

tag(tagName)
  // 先判断基础变量是否存在
  if lookup('color-' + tagName)
    .tag-{tagName}
      color: lookup('color-' + tagName)
      // 第二个参数为默认值,未找到对应变量时生效
      background: lookup('color-' + tagName + '-background', #ffffff)
      box-shadow: 0 0 4px lookup('color-' + tagName + '-shadow', rgba(0,0,0,0.1))

内容的提问来源于stack exchange,提问作者Miranda N

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 22:39:03