2016-06-11 7 views
3

私はCSSでの単純な二次元マップのキー名キー値単に出力に私を可能とする機能を作成しようとしています:map-getでvalueの代わりにキー名を使用するにはどうすればよいですか?

$people: (
    "Hellen": (
     age: "34", 
     sex: "female" 
    ), 
    "Patrick": (
     age: "23", 
     sex: "male" 
    ), 
    "George": (
     age: "10", 
     sex: "male" 
    ), 
    "Vicky": (
     age: "19", 
     sex: "female" 
    ) 
); 

は、私が取得するために、簡単な関数を作成していますこの情報:

@each $person-name, $person-details in $people { 
    $age: map-get($person-details, 'age'); 
    $sex: map-get($person-details, 'sex'); 

    .#{$person-name} { 

     height: 100 px; 
     width: 100 px; 
     background: #FF3C00; 
     margin: 0 auto; 

     &:before { 
      content:$person-name " " + $age " "; 
     } 

     &:after { 
      content: $sex; 
     } 

    } 

} 

HTML:

<div class="Hellen"></div> 

しかし私はキーと値の両方を別のオブジェクトとして出す情報は見つけられません。

$age: map-get($person-details, 'age'); 

結果:

Hellen 34 female 

の代わり: ヘレン年齢:34性別:女性

どのように取得することができます私は、以下に値ではなく、キーを読み取ることができます値の有無にかかわらずキーラベル?

+0

試し 'マップ・キー()'? – twxia

+0

値の代わりに$キー名を取得する方法はまだわかりません。私はここを見ている:[マップキー( "" foo ":1、" bar ":2))=>" foo "、" bar "](http://sass-lang.com/documentation/Sass/ Script/Functions.html#map_keys-instance_method) – HGB

+0

'map-keys()'はキー文字列を返します。 "$ key name"とはどういう意味ですか?変数名の文字列を取得したいのですか? – twxia

答えて

6

map-keys()を使用して、リスト内のすべてのキーを取得します。

サンプル:

@each $person-name, $person-details in $people { 
    $age: map-get($person-details, 'age'); 
    $sex: map-get($person-details, 'sex'); 
    $keys: map-keys($person-details); 

    .#{$person-name} { 

     height: 100 px; 
     width: 100 px; 
     background: #FF3C00; 
     margin: 0 auto; 

     &:before { 
      content:"#{$person-name} #{nth($keys, 1)} : #{$age} "; 
     } 

     &:after { 
      content: "#{nth($keys, 2)}: #{$sex}"; 
     } 

    } 

} 
+1

こんにちは感謝しました、私はあなたがこのようにそれらを追加することができたことを認識していませんでした。私は自分の電話にいますが、これをもっと動的にする方法、すなわち@mixin person-details($ person-name、$ key)があると思います。 – HGB

関連する問題