SASS/SCSS 对象键值循环 [重复]

Posted

技术标签:

【中文标题】SASS/SCSS 对象键值循环 [重复]【英文标题】:SASS/SCSS object key value loop [duplicate] 【发布时间】:2013-04-11 14:06:37 【问题描述】:

看看这个例子:

@include font-face('Entypo', font-files('entypo.woff'));

.icon 
  display: inline;
  font: 400 40px/40px Entypo;


.icon-star 
  @extend .icon;

  &:after 
    content: "\2605";
  


.icon-lightning 
  @extend .icon;

  &:after 
    content: "\26A1";
  

我想让事情尽可能干燥,所以我想知道以下是否可行,如果可以,如何?

@include font-face('Entypo', font-files('entypo.woff'));

.icon 
  display: inline;
  font: 400 40px/40px Entypo;


$icons 
  $star: "\2605";
  $lightning: "\26A1";


@each $icon in $icons 
  $key = $iconkey; // ???
  $value = $iconvalue; // ???

  .icon-#$key 
    @extend .icon;

    &:after 
      content: $value;
    
  

【问题讨论】:

【参考方案1】:

Sass 3.3(2014/03/07 发布)现在允许您使用地图:

@include font-face('Entypo', font-files('entypo.woff'));

.icon 
  display: inline;
  font: 400 40px/40px Entypo;


$icons: (
  star: "\2605",
  lightning: "\26A1"
);

@each $key, $value in $icons 
  .icon-#$key 
    @extend .icon;

    &:after 
      content: $value;
    
  

【讨论】:

这应该是目前公认的答案。由于接受的答案已过时,我们是否有更新或审查接受的答案的好方法? 您可以更新答案以突出显示它,如果他愿意,操作员仍然可以更改接受的答案。 这应该是最好的答案!【参考方案2】:

Sass 目前不支持映射。你现在必须忍受列表的列表。

$icons: star "\2605", lightning "\26A1";

@each $icon in $icons 
  $key: nth($icon, 1);
  $value: nth($icon, 2);

  .icon-#$key 
    @extend .icon;

    &:after 
      content: $value;
    
  

【讨论】:

我讨厌SASS的文档,为什么我找不到这样一个简单的循环,谢谢,非常感谢。 如果你想要更多程序化的东西,请查看learnboost.github.io/stylus 我在整个网络上遇到的所有其他解决方案之后的最佳答案

以上是关于SASS/SCSS 对象键值循环 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

javascript Javascript循环对象键值

按数组长度排序对象键值[重复]

Json 对象中的重复键值对

如何从对象数组中获取键值列表-JavaScript [重复]

从对象数组制作树,保留其他键值对[重复]

查找具有键值的所有对象(重复项除外)