遍历嵌套的SASS映射以创建类

时间:2019-06-26 14:48:07

标签: loops sass sass-maps

我尝试遍历嵌套的sass映射以创建按钮类。这可能吗?

我的地图像这样嵌套:

$buttons: (
	primary: (
		border: 1px solid #ccc,
		border-hover: 1px solid #ccc,
		color: red,
		color-hover: blue
	),
	secondary: (
		border: 1px solid #ccc,
		border-hover: 1px solid #ccc,
		color: red,
		color-hover: blue
	)
);

当我尝试遍历每个循环时,我只获得地图的第一层。

我要实现的是,所有必要的类都使用各自的值创建。这是一个例子:

.button {
	
	&.primary {
		border: [border];
		color: [color];

		&:hover {
			border: [border-hover];
			color: [color-hover];
		}		
	}
	&.secondary {
		border: [border];
		color: [color];

		&:hover {
			border: [border-hover];
			color: [color-hover];
		}		
	}

	
}

每一个有用的提示我都很高兴:)

1 个答案:

答案 0 :(得分:1)

实际上非常简单和直接。您需要做的就是在地图上使用@each循环并使用map functions提取值。

.button {
  @each $type, $styles in $buttons {
    &.#{$type} {
      border: map-get($styles, border);
      color: map-get($styles, color);

      &:hover {
        border: map-get($styles, border-hover);
        color: map-get($styles, color-hover);
      }     
    }
  }
}