2016-06-11 2 views
3

는 단순히 출력에 나를 수있는 기능을 만들려고하고있는 키 이름과 CSS의 단순한 2 차원지도의 키 값 :map-get에서 값 대신 키 이름을 사용하려면 어떻게해야합니까?

$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 

: HELLEN 나이 : 34 성별 : 여성

가 어떻게이를 얻을 수 있습니다 난 단지 값, 다음하지 키를 읽을 수 있습니다 값이 있거나없는 키 레이블?

+0

시도'지도 - 키()'? – twxia

+0

여전히 값 대신 $ 키 이름을 얻는 방법을 보여주지 못합니다. 나는 여기를보고있다 : [map-keys (""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