回答:
ルックスが好き@mixin
と@include
、このような単純な場合には必要ありません。
1つだけ行うことができます。
.myclass {
font-weight: bold;
font-size: 90px;
}
.myotherclass {
@extend .myclass;
color: #000000;
}
@extend
:あなたが知っておくべきいくつかのトリッキーな副作用があります- stackoverflow.com/questions/30744625/...
.myclass
以外の場所では(おそらく私は)使用されていないので、として定義し、として拡張した.myotherclass
方がよいでしょう。それは次のように生成されます.myclass
%myclass
.myotherclass
@extend %myclass;
.myotherclass{ font-weight: bold; font-size: 90px; color: #000000; }
これを試して:
これで、任意のクラス(例:.my-class)で%base-classを拡張できます。
%base-class {
width: 80%;
margin-left: 10%;
margin-right: 10%;
}
.my-base-class {
@extend %base-class;
}
.my-class {
@extend %base-class;
margin-bottom: 40px;
}
@extendの使用は良い解決策ですが、コンパイルされたcssがクラス定義を分割することに注意してください。同じプレースホルダーを拡張するクラスは一緒にグループ化され、クラスで拡張されないルールは別の定義になります。複数のクラスが拡張された場合、コンパイルされたcssまたは開発ツールでセレクターを検索するのは手に負えなくなる可能性があります。一方、ミックスインはミックスインコードを複製し、追加のスタイルを追加します。
あなたはこのsassmeisterで@extendと@mixinの違いを見ることができます
@extend .myclass;
@extend #{'.my-class'};
@extend #{'.my-class', '.my-other-class'};
別のオプションは、属性セレクターを使用することです:
[class^="your-class-name"]{
//your style here
}
「your-class-name」で始まるすべてのクラスはこのスタイルを使用します。
だからあなたの場合、あなたはそうすることができます:
[class^="class"]{
display: inline-block;
//some other properties
&:hover{
color: darken(#FFFFFF, 10%);
}
}
.class-b{
//specifically for class b
width: 100px;
&:hover{
color: darken(#FFFFFF, 20%);
}
}
w3Schoolsの属性セレクターの詳細