Skip to content
On this page

插值法

¥Interpolation

Stylus 通过使用 {} 字符包围表达式来支持插值,然后该表达式将成为标识符的一部分。例如,-webkit-{'border' + '-radius'} 的计算结果为 -webkit-border-radius

¥Stylus supports interpolation by using the {} characters to surround an expression, which then becomes part of the identifier. For example, -webkit-{'border' + '-radius'} evaluates to -webkit-border-radius.

一个很好的示例用例是使用浏览器前缀扩展属性。

¥A great example use-case for this is expanding properties with vendor prefixes.

vendor(prop, args)
  -webkit-{prop} args
  -moz-{prop} args
  {prop} args

border-radius()
  vendor('border-radius', arguments)

box-shadow()
  vendor('box-shadow', arguments)

button
  border-radius 1px 2px / 3px 4px
vendor(prop, args)
  -webkit-{prop} args
  -moz-{prop} args
  {prop} args

border-radius()
  vendor('border-radius', arguments)

box-shadow()
  vendor('box-shadow', arguments)

button
  border-radius 1px 2px / 3px 4px

产量:

¥Yields:

button {
  -webkit-border-radius: 1px 2px / 3px 4px;
  -moz-border-radius: 1px 2px / 3px 4px;
  border-radius: 1px 2px / 3px 4px;
}
button {
  -webkit-border-radius: 1px 2px / 3px 4px;
  -moz-border-radius: 1px 2px / 3px 4px;
  border-radius: 1px 2px / 3px 4px;
}

选择器插值

¥Selector Interpolation

插值也适用于选择器。例如,我们可以迭代为表中的前 5 行分配 height 属性,如下所示:

¥Interpolation works with selectors as well. For example, we may iterate to assign the height property for the first 5 rows in a table, as shown below:

table
  for row in 1 2 3 4 5
    tr:nth-child({row})
      height: 10px * row
table
  for row in 1 2 3 4 5
    tr:nth-child({row})
      height: 10px * row

产量:

¥Yields:

table tr:nth-child(1) {
  height: 10px;
}
table tr:nth-child(2) {
  height: 20px;
}
table tr:nth-child(3) {
  height: 30px;
}
table tr:nth-child(4) {
  height: 40px;
}
table tr:nth-child(5) {
  height: 50px;
}
table tr:nth-child(1) {
  height: 10px;
}
table tr:nth-child(2) {
  height: 20px;
}
table tr:nth-child(3) {
  height: 30px;
}
table tr:nth-child(4) {
  height: 40px;
}
table tr:nth-child(5) {
  height: 50px;
}

你还可以通过构建字符串并将它们插入到位,将多个选择器组合到一个变量中:

¥You may also put together multiple selectors into one variable by building a string and interpolate them in place:

mySelectors = '#foo,#bar,.baz'

{mySelectors}
  background: #000
mySelectors = '#foo,#bar,.baz'

{mySelectors}
  background: #000

产量:

¥Yields:

#foo,
#bar,
.baz {
  background: #000;
}
#foo,
#bar,
.baz {
  background: #000;
}