0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

SCSSの導入検討

Posted at

SCSSのメリット

大きく分けて2つ

  • ネスト記法
  • @mixinによるCSS定義のコンポーネント化,@extendによるCSS定義の流用

ネスト

クラス>クラス

.parent {
  
  .child {
     
  }
}

クラス>メディアクエリ

.grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  @media(min-width: 768px) {
    grid-template-columns: repeat(4, 3fr);
  }
}

クラス>:hoverなどの疑似クラス

.parent {
  
  &:hover {
     
  }
}

メモ:@extend@mixinの違い

@extendの特徴

  • 継承対象に拒否権はない
  • 継承なので、宣言箇所の基底の定義になる

@mixinの特徴

  • コンポーネント化対象は、必ず@mixinの宣言が必要で、利用側は、@includeでの参照が必要。@extendとは対照的。
  • 記述の持ち込みなので、宣言箇所にそのままロードされる
  • 上記の性質から、@extendよりミクロなコードの流用が可能に。

多用は

@extend@mixinも多用するとヤバイ香りがする。
@extendは継承対象に拒否権がないため、自由な変更ができなくなる可能性がある。
@mixinは宣言が必要なものの、ミクロな流用が可能になるため、乱用されると可読性が下がる可能性もある。

実務では適切なルール化が必要と思われる。

CSSでも出来ること

変数宣言

:root {
  --primary-color: #FF00FF;
}
div {
  color: var(--primary-color);
}

個人的な結論

利用しようかと思います。
やはり、ネストによる可読性の向上は魅力的です。
@extend@mixinはもう少し情報収集が必要かもしれません。

参考

なぜSassが必要なの?
SCSSでできること
Sass(SCSS)のmixin, extendなどまとめ
プログラマーから見た、SCSSの正しい(かもしれない)使いかた
sassのmixinとextend、ちゃんと考えて使わないとcssが地獄。
scssで@mixinを使うのと、htmlでclass指定する何が違う
CSS カスタムプロパティ (変数) の使用

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?