2017-01-17 9 views
0

私は定義済みの変数に色を変更するヘルパークラスを作成しています。ほとんどの場合、コードは同じです。より具体的なセレクタを追加して、これをどのように維持しやすくするのでしょうか?Sass - 繰り返しコード、これをもっと簡潔にするには

.fg-text { 
    color: $colorText; 
    button, .button, 
    input[type="button"], 
    input[type="submit"], 
    input[type="reset"], 
    select { 
    color: $colorText; 
    border-color: $colorText; 
    } 
} 
.fg-foreground { 
    color: $colorForeground; 
    button, .button, 
    input[type="button"], 
    input[type="submit"], 
    input[type="reset"], 
    select { 
    color: $colorForeground; 
    border-color: $colorForeground; 
    } 
} 
.fg-alternate { 
    color: $colorAlternate; 
    button, .button, 
    input[type="button"], 
    input[type="submit"], 
    input[type="reset"], 
    select { 
    color: $colorAlternate; 
    border-color: $colorAlternate; 
    } 
} 
.fg-background { 
    color: $colorBackground; 
    button, .button, 
    input[type="button"], 
    input[type="submit"], 
    input[type="reset"], 
    select { 
    color: $colorBackground; 
    border-color: $colorBackground; 
    } 
} 
.fg-highlight { 
    color: $colorHighlight; 
    button, .button, 
    input[type="button"], 
    input[type="submit"], 
    input[type="reset"], 
    select { 
    color: $colorHighlight; 
    border-color: $colorHighlight; 
    } 
} 
+1

を使用することができます。 – sobolevn

+0

ええ、私はそれが本当にかなり明白だと思います。私はいくつかの人々がグリッドを使って複雑なものを作っているのを見て、おそらくそれを思慮深く考えていました。 – Buts

答えて

1

あなたはミックスインを作ることができる@each directive

@each $name, $color in (text: $colorText, foreground: $colorForeground ...) { 
    .fg-#{$name} { 
    color: $color; 
    button, .button, 
    input[type="button"], 
    input[type="submit"], 
    input[type="reset"], 
    select { 
     color: $color; 
     border-color: $color; 
    } 
    } 
} 
+1

その他の注意: '.fg-XYZ'要素にのみ色を設定し、ボタンとフォームフィールドの色と境界線の色に' currentColor'という値を使用することで、作業をさらに単純化できます。参照:https://css-tricks.com/currentcolor/ –

0

私はミックスインにそれを凝縮しています

@mixin fg($name, $color) { 
    .fg-#{$name} { 
    color: $color; 
    button, .button, 
    input[type="button"], 
    input[type="submit"], 
    input[type="reset"], 
    select { 
     color: $color; 
     border-color: $color; 
    } 
    } 
} 
@include fg(brand, $colorBrand); 
@include fg(foreground, $colorForeground); 
@include fg(background, $colorBackground); 
@include fg(text, $colorText); 
@include fg(alternate, $colorAlternate); 
@include fg(highlight, $colorHighlight); 
関連する問題