Sassの「& &」とかいう狂気

「& &」を使ってスタイルの風通しを良くしよう!(恐怖)
6
げこP @GeckoTang

なんかまぁ無理に .block のスコープに閉じ込めなくてもいいのかなって思ったりもするけど、むずかしいなあ

2015-08-20 15:27:02
リャマ㌠ @roatnek

JSの即時関数的パッケージ感あって、これはこれでいいな「& &」

2015-08-20 15:27:30
事務員 @zimin9u

ああ、親の要素を参照するのか。 #ポンコツ

2015-08-20 15:30:48
事務員 @zimin9u

@neotag 手元にある昔の自分が書いたSassコードじゃなくて、現代人の書いたモダンなSassコードを読まないとそろそろ窒息死しそう。

2015-08-20 15:44:24
neotag @neotag

@zimin9u 僕も &__element が使えることを知ったのちょっと遅かったので窒息死のリスクは常に目の前にありますね。

2015-08-20 15:49:00
neotag @neotag

なにかしらのお墨付きでみんなが知っている書き方にならない限り微妙だということは改めて確信できたので、TLに書いてよかった。

2015-08-20 15:41:23
事務員 @zimin9u

.block { & & { &__element {} } } の展開が、なんで.block .block__elementになるのん? ていうか途中の& &ってなんなの? ウワーッ! もうしのう!!

2015-08-20 15:42:13
リャマ㌠ @roatnek

@zimin9u .block { .block .block { &__element { } } } と同義だよ

2015-08-20 15:44:16
リャマ㌠ @roatnek

@zimin9u ああ、ちょっと違う、コンパイルの流れを説明しようとしたらコードとしては変になった、コードの意味では同義ではないけど説明としてはそういうこと

2015-08-20 15:44:59
事務員 @zimin9u

@roatnek だよね。これって展開したら .block .block .block .block__element にならない…? というより、.block .block__element と展開するだけなら途中の& &って要らなくない? って疑問なんだけど……。

2015-08-20 15:53:44
neotag @neotag

@zimin9u @roatnek ↓だと .block__element になるので .block に閉じ込められないので & & の登場です。 .block &__element

2015-08-20 15:57:08
事務員 @zimin9u

@neotag @roatnek あー! なるほどそーゆーことね! よくそんなの思いつくな!

2015-08-20 15:58:17
neotag @neotag

なんで思いつけたのかもはや覚えてないです。

2015-08-20 15:59:12
げこP @GeckoTang

僕の最近のフォーマットは ```scss .block { $B: &; &--modifier { } &__item { &--modifier { } } } ``` かな〜

2015-08-20 15:44:03
リャマ㌠ @roatnek

ああ、いったん変数に入れはるんや…

2015-08-20 15:45:41
リャマ㌠ @roatnek

なるほどなあ。細かな工夫がみんなあるなあ。

2015-08-20 15:45:49
neotag @neotag

& & が `.block .block` に展開されて、その後の &__element が `.block .block__element` に展開されるの、仕様の定義がほんのちょっとでも違ったら実現しなかった動きなので、だいぶハッキーではある。

2015-08-20 15:46:45
事務員 @zimin9u

今って #{&} って書かなくていいの……!?

2015-08-20 15:49:33
neotag @neotag

#{&} 時代だったら手間多すぎてこんなんやろうとも思わなかった。

2015-08-20 15:49:57
neotag @neotag

あと、SASS 記法が気持よくて好き。 #快楽主義者

2015-08-20 15:55:23
げこP @GeckoTang

SASS記法はちょっとつらいです

2015-08-20 15:55:57
事務員 @zimin9u

なんだよ現代人のSass設計。久々に死を感じたぞ。

2015-08-20 15:56:50