@extend は使用できますが、継承されたセレクターでは使用できません。
次のように @extend-only セレクターを使用できます。
#page {
%common_p {
margin: 10px 20px;
color: white;
padding: 10px;
}
p {
@extend %common_p;
}
#form {
p {
@extend %common_p;
color: gray;
}
}
}
次のように出力します
#page p, #page #form p {
margin: 10px 20px;
color: white;
padding: 10px; }
#page #form p {
color: gray; }
これがあなたが望んでいることを達成することを願っています!
カスケードにより、#form 内の p タグはすでに #page の p タグも取得しているため、これがより良いかどうかはわかりません。たとえば、マージンとパディングと色を取得しますが、色は上書きされます。
これは、カスケードが発生していなくても (たとえば、#form が #page の外に存在する場合)、単純にそれを強制します。その場合は、SASS がスタイルを組み合わせて出力の繰り返しを少なくするため、この手法の方が優れています。
@extend の詳細については、http: //sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#placeholders を参照してください。