ここしばらくデザイン系の仕事が多く、マークアップをメインに作業していませんでしたが、今回改めてSassを使用する機会がふえてきましたので、自分用のメモとしても&(アンパサンド)の使い方を中心にまとめておきたいと思います。
基本的な使い方
.hoge {
clor: #fff
;
&__foo {
margin:0 auto;
}
&__hoo {
padding:10px;
&:hover {
opacity: .8;
}
}
}
コンパイル後
.hoge {
color: #fff;
}
.hoge__foo {
margin:0 auto;
}
.hoge__hoo {
padding: 10px;
}
.hoge__hoo:hover {
opacity: .8;
}
セレクタの後に&をつける
hoge__fooの要素を使用しながら親のクラス名を別で指定し、特定の要素を追加したい時に便利ですね!
.hoge {
&__foo {
margin:0 auto;
.hoo & {
padding :10px;
}
}
}
コンパイル後
.hoge__foo {
margin: 0 auto;
}
.hoo .hoge__foo {
padding: 10px;
}
3階層目でセレクタ後に&をつける場合
3階層目でセレクタ後に&を指定すると、親の全てのクラスが指定されます。
順番に気をつけましょう。
.hoge {
color: #fff;
&__foo {
margin:0 auto;
.hoo & {
padding: 10px;
}
}
}
コンパイル後
.hoge {
color: #fff;
}
.hoge__foo {
margin:0 auto;
}
.hoo .hoge .hoge__foo {
padding: 10px;
}
extendをうまく使おう!
別のクラス名hoge__hoo–activeの場合にもhoge__fooの要素を使用したい場合は、ectendを使うと便利です。
.hoge {
&__foo {
margin:0 auto;
}
&__hoo--active {
padding: 10px;
@extend .hoge__foo
;
}
}
コンパイル後
.hoge__foo,
.hoge__hoo--active {
margin:0 auto;
}
.hoge__hoo--active {
padding: 10px;
}
応用編
&やextendを上手く使えばソース量も減ってパフォーマンスも向上しますね!!
.hoge {
&__foo {
margin:0 auto;
}
&__hoo--active {
padding: 10px;
@extend .hoge__foo
;
.doo & {
color: #fff;
}
}
}
コンパイル後
.hoge__foo,
.hoge__hoo--active {
margin:0 auto;
}
.hoge__hoo--active {
padding: 10px;
}
.doo .hoge__hoo--active {
color: #fff;
}