css - 还有另一种方法可以用sass写这个吗?

标签 css sass compass-sass compass

$styles: background #333, margin 20px, padding 10px

.factory
  @each $style in $styles
 #{nth($style, 1)}: nth($style, 2)

有没有另一种方法可以用 sass 来写这意味着同样的事情?谁能解释这段代码到底在做什么?它输出到以下 css:

.factory {
  background: #333333;
  margin: 20px;
  padding: 10px;
}

我不明白这段代码在做什么。

最佳答案

让我们逐行分析:

$styles: background #333, margin 20px, padding 10px

这声明了全局变量 $styles 并为其分配了一个属性值对列表。

.factory

这构建了一个新的类选择器 .factory

  @each $style in $styles

这是 Sass 中的一个循环,遍历 $styles 列表并将每个列表条目一个一个地分配给变量 $style,因此在第一次迭代中它将具有值 background #333,在下一次迭代中 margin 20px,依此类推。

    #{nth($style, 1)}: nth($style, 2)

此行使用字符串插值 #{...} 和 Sass 列表的 nth 函数来构建 CSS 属性及其关联值。 background #333 是 Sass 中的列表本身(虽然只是空格分隔)并且 nth($style, 1) 给你 background,而nth($style, 2)@each 循环的第一次迭代中为您提供 #333

这为您提供了预期的输出。您为什么要寻找不同的方法来实现这一目标?

关于css - 还有另一种方法可以用sass写这个吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33384682/

相关文章:

html - 样式选择在 Chrome 或 Firefox 上显示不一样

css - 使用SASS为linear-gradient动态添加色标

ruby - rbenv下 compass 安装

javascript按键多条记录问题

javascript - Div 没有填满新内容

css - 防止溢出 :hidden from cropping the image

css - 忽略没有值的样式声明是 SCSS

css - 如何在 IONIC 2 中放大输入字段

css - @include font-face() 出现 Compass/SASS 语法错误;

css - 如何启用字体变体,如 "Italic Display"