2014-10-09 2 views
0

다른 색상의 아이콘 세트가 있으며 각 색상은 CSS 클래스로 선언 된 다른 상태로 사용됩니다. 예를 들어 <span class="icon icon--app"><span>은 회색 앱 아이콘이고, <span class="icon icon--app icon__light icon__selected"><span>은 흰색 앱 아이콘입니다.SASS 규칙 재사용

다음 코드는 SCSS로 작성되었습니다.

span.icon { 
    display: inline-block; 
    width: 32px; 
    height: 32px; 

    &.icon--app { 
     background: url(../images/app_gray.png); 

     &.icon__selected { 
      background: url(../images/app.png); 
     } 

     &.icon__light { 
      background: url(../images/app_gray.png); 

      &.icon__selected { 
       background: url(../images/app_white.png); 
      } 
     } 
    } 

    &.icon--device { 
     background: url(../images/device_gray.png); 

     &.icon__selected { 
      background: url(../images/device.png); 
     } 

     &.icon__light { 
      background: url(../images/device_gray.png); 

      &.icon__selected { 
       background: url(../images/device_white.png); 
      } 
     } 
    } 
} 

문제는, appdevice 및 기타 아이콘에 대한 많은 유사성을 공유 위와 같이 CSS 규칙의 긴 목록이있다. SASS를 사용하여 CSS 규칙을 단순화 할 수 있을지 궁금합니다.

+1

당신은 당신이 기대하고있는 스타일을 생성하면 볼 수있는 CSS를 조사 유무 :

@mixin icon($type) { .icon-#{$type} { background: url(../images/#{$type}_gray.png); } } @include icon(app); @include icon(device); 
cimmanon

+0

이 코드에서 의도를 밝히기가 약간 어렵습니다. 귀하의 SASS를 컴파일하고 [this CSS] (https://gist.github.com/abitdodgy/297d063a41d6f1d4614a)를 제작했습니다. 거기에 많은 반복이 아닙니다. 배경 선언 만하면됩니다. 형식 선언을 줄이기 위해 이것을 mixin으로 감쌀 수도 있지만. – Mohamad

답변

2

나는 당신을 위해 믹스 인을 만들어? 나는 그것이 필요한 것 이상을 생성하고 있다고 생각한다. 이 질문은 CodeReview.SE에 더 적합 할 수 있습니다 (전송하려면 MOD에게 탄원서를 제출해야합니다).
4

난 당신이 말대꾸에 mixin을 사용할 수 있다고 생각 :

예를 들어,

@mixin icon($type) { 
    &.icon--#{$type} { 
    background: url(../images/#{$type}_gray.png); 

    &.icon__selected { 
     background: url(../images/#{$type}); 
    } 

    &.icon__light { 
     background: url(../images/#{$type}); 

     &.icon__selected { 
     background: url(../images/#{$type}_white.png) 
     } 
    } 
    } 
} 

span.icon { 
    display: inline-block; 
    width: 32px; 
    height: 32px; 

    @include icon(app); 

    @include icon(device); 
} 
+0

어리석은 유사한 mixin 선언을 가지고 Upvote! –

+0

@hedgerh 그리고 똑같은 대답 시간! :) –