Tailwind CSS初心者が絶対ハマる落とし穴

ムーザルちゃんねる
11 Jul 202409:46

Summary

TLDRこのビデオスクリプトでは、テールウンドCSSの初心者がよく遭遇する2つの問題点とその解決策について解説しています。クラス名を動的に組み立てることができないという問題と、クラス名のコンフリクトが起こることについて説明し、解決策としてシンプルなクラス名の使用や「tailwind-merge」ライブラリの活用を提案しています。スクリプトは、テールウンドCSSの仕組みを理解することの重要性を強調し、より効果的にこのCSSフレームワークを活用する方法を示しています。

Takeaways

  • 🔧 初心者が絶対はまるであろう2つのポイントを紹介している。
  • 🛠 クラス名を動的に組み立てると、Tailwind CSSのスタイルが適用されないことがある。
  • 🎨 Tailwind CSSのクラス名を動的に組み立てると、エラー時のスタイルが正しく適用されない問題が発生する。
  • 📝 クラス名のコンフリクトが起こると、後から定義されたスタイルが優先されるため、予期しない結果になることがある。
  • 🔄 Tailwind CSSの仕組みを理解することは重要で、CSSの最終出力順序に依存するため、クラス名の順序は問題を引き起こす。
  • 📖 Tailwind Mergeというライブラリを使用することで、クラス名のコンフリクトを解決することができる。
  • 👷‍♂️ 動的なクラス名の組み立てを避けることで、Tailwind CSSの使用をより効率的に行うことができる。
  • 🛑 クラス名のコンフリクトを避けるために、デフォルトのスタイルを上書きする際には、Tailwind MergeのTWマージ関数を使用する。
  • 🚫 Tailwind CSSのクラス名を動的に組み立てることができない理由は、TailwindがCSSファイルを生成する際に完全一致の文字列を探しているため。
  • 🔄 Tailwind CSSの出力順序はアルファベット順ではなく、最終的に定義されたスタイルが優先されるため、注意が必要。
  • 🛠 Tailwindバリアントという別のライブラリも存在し、より便利な機能を提供していると述べている。

Q & A

  • テールウンドCSSとは何ですか?

    -テールウンドCSSは、CSSのクラス名を動的に組み合わせてスタイルを適用することができるCSSフレームワークです。

  • 初心者がよく踏むテールウンドCSSのポイントはどのようなものですか?

    -初心者がよく踏むポイントは、クラス名を動的に組み立ててしまうパターンと、クラス名のコンフリクトです。

  • クラス名を動的に組み立てるとどうなりますか?

    -クラス名を動的に組み立てると、テールウンドCSSの解析に失敗してスタイルが適用されないことがあります。

  • クラス名のコンフリクトとは何を指しますか?

    -クラス名のコンフリクトとは、同じ要素に複数のクラス名を指定し、後のクラス名が優先されるため予期しないスタイルが適用されることを指します。

  • クラス名を動的に組み立てずにどうすればよいですか?

    -クラス名を動的に組み立てずに、代わりに個別のクラスを指定することで、スタイルが正しく適用されるようにすることができます。

  • クラス名のコンフリクトを解決するためには?

    -クラス名のコンフリクトを解決するためには、後から適用されたクラスを優先的に指定することで、スタイルの競合を避けることができます。

  • テールウンドマージとは何ですか?

    -テールウンドマージは、テールウンドCSSで提供される機能で、デフォルトのスタイルとカスタマイズしたスタイルを統合して出力するもので、スタイルの競合を解決するのに役立ちます。

  • テールウンドCSSの仕組みを理解することはなぜ重要ですか?

    -テールウンドCSSの仕組みを理解することは、正しくスタイルを適用し、予期しない動作を避けるために重要です。

  • テールウンドバリアンとは何ですか?

    -テールウンドバリアンは、テールウンドCSSのバリエーションで、より柔軟なスタイルの適用やカスタマイズを提供するライブラリーです。

  • テールウンドCSSを使い始める際のアドバイスはありますか?

    -テールウンドCSSを使い始める際は、まず基本的な仕組みを理解し、実際に手を動かして挙動を確認することで、理解を深めることができます。

  • テールウンドCSSでスタイルを適用する際の注意点はありますか?

    -テールウンドCSSでスタイルを適用する際は、クラス名を正しく指定し、動的な組み立てやコンフリクトを避けることが重要です。

Outlines

00:00

😀 Tailwind CSSの初心者が陥りやすいポイント

この段落では、初心者がTailwind CSSを使い始める際に陥りやすい2つのポイントについて説明しています。1つ目は、クラス名を動的に組み立てるパターンで、JavaScriptなどを使用して条件分岐を記述する際に、Tailwindのクラス名を動的に組み立てると、予期しない動作になることがあるという問題点です。2つ目は、クラス名のコンフリクトで、同じスタイルを複数回指定しようとすると、CSSの優先順位のルールにより予期しない結果になることがあるという問題です。

05:02

😀 Tailwind CSSの仕組みと解決策

この段落では、先程説明した問題点に対する解決策を提案しています。まず、クラス名を動的に組み立てる問題に対しては、共通の部分を残して、異なる部分だけをJavaScriptで動的に指定するというアプローチを避けることを提案しています。次に、クラス名のコンフリクトに対する解決策として、Tailwind Mergeというライブラリを使用して、デフォルトのスタイルとカスタマイズされたスタイルをマージすることを提案しています。また、Tailwindの仕組みについても触れており、最終的なCSSファイルの生成プロセスが文字列の完全一致に基づいていること、そしてCSSの優先順位に関するルールが問題の原因になっていることを説明しています。

Mindmap

Keywords

💡テールウンドCSS

テールウンドCSSとは、CSSを効率的に扱うためのライブラリです。このライブラリを使うことで、クラス名を組み合わせてさまざまなスタイルを適用することができます。ビデオでは、初心者がよく踏む落とし穴として2つのポイントが紹介されており、それらを回避するための解決策も説明されています。

💡クラス名の組み立て

クラス名の組み立てとは、JavaScriptなどの条件分岐を使って、動的にクラス名を組み合わせてスタイルを適用する方法です。ビデオでは、背景色を青にしたり赤にしたりする例が挙げられており、その際に生じる問題と解決策について説明されています。

💡CSSのコンフリクト

CSSのコンフリクトとは、同じ要素に対して複数のクラス名を指定し、スタイルが重複して適用されることを指します。ビデオでは、背景色を黄色から赤に変えたい場合に生じる問題が取り上げられており、その解決策として「テイルウンドマージ」ライブラリの活用が提案されています。

💡テールウンドマージ

テールウンドマージは、複数のクラス名を効果的に統合するためのライブラリです。ビデオでは、デフォルトのスタイルとカスタマイズされたスタイルをマージし、最終的なスタイルを適用する方法が説明されています。これにより、スタイルのコンフリクトを回避することができます。

💡スタイルの優先順位

CSSにおけるスタイルの優先順位とは、同じプロパティに対して複数のスタイルが指定された場合、どれが適用されるかを決定するルールです。ビデオでは、後に定義されたスタイルが優先されるというCSSの仕様に基づいて、問題が生じることがあると説明されています。

💡条件分岐

条件分岐とは、プログラムの中で特定の条件に応じて異なるコードを実行する機能です。ビデオでは、JavaScriptを使ってクラス名を動的に組み立て、エラー時のスタイルを切り替える例が紹介されています。

💡CSSの出力順序

CSSの出力順序とは、スタイルシート内でスタイルが記述された順序によって、同じプロパティに対するスタイルの適用順序が決まることを指します。ビデオでは、アルファベット順でクラスが出力されるため、意図しないスタイルの適用が生じることがあると触れています。

💡スタイルシート

スタイルシートとは、ウェブページのスタイル情報を記述したファイルであり、CSSで記述されることが多いです。ビデオでは、スタイルシートの出力順序がスタイルの適用に影響を与えることがあると説明されています。

💡テールウンドバリアン

テールウンドバリアンは、テールウンドCSSのバリエーションの一つで、より柔軟なスタイルの適用を可能にします。ビデオでは、テールウンドバリアンの利便性について触れられており、作者がこのライブラリを好んで使用していると述べています。

💡clsx

clsxは、クラス名を動的に組み合わせるためのユーティリティ関数です。ビデオでは、clsxとテールウンドCSSを組み合わせて使用する際の注意点が説明されており、作者が別のライブラリであるテールウンドバリアンを好む理由も述べています。

Highlights

紹介したい2つのポイントは、初心者が陥りやすいテールウンドCSSの落とし穴。

第1のポイントは、クラス名を動的に組み立てることで生じる問題。

動的なクラス名の組み立て方と、JavaScriptでの条件分岐によるクラス名の生成が問題となる理由。

テールウンドCSSのクラス名のコンフリクトが2つ目のポイント。

クラス名のコンフリクトの例として、背景色を黄色から赤に変えたい場合の問題点。

CSSの優先順位とテールウンドCSSの出力順序の違い。

解決策として、クラス名を動的に組み立てるのをやめること。

テールウンドマージライブラリの紹介とその使い方。

Reactなどのフレームワークでのデフォルトスタイルとカスタマイズスタイルの統合方法。

テールウンドマージのTWマージ関数の活用方法。

テールウンドCSSの仕組みと、CSSファイルの生成プロセス。

テールウンドCSSの抽出プロセスにおける文字列の完全一致の重要性。

テールウンドバリアンという別のライブラリーの存在とその利便性。

clsxのようなよくある組み合わせ技とテールウンドバリアンの比較。

テールウンドCSSの初心者向けのアドバイスと、手を動かして確認するよう促す。

動画の締めくくりと、今後の予定についての告知。

Transcripts

play00:00

はいどうもこんにちはムールチャンネル

play00:01

です今日はですねテールウンドCSSに

play00:04

ついてま話していきたいなと思うんです

play00:06

けどいいですねテルウンドCSSの初心者

play00:10

が絶対はまるであろう2つのポイントが

play00:13

あるのでそれを紹介したいな

play00:16

とまそのはまるポイントとま解決策となん

play00:20

でそれが起こるのかっていうテール

play00:21

ウィンドの裏側の仕組みを軽くあやっぱ

play00:24

この仕組み知れるのがいいですね嬉しい

play00:27

ですねはい

play00:28

そうじゃ早速なんですけどはまるポイント

play00:31

ま2つあるんですけど1つはクラス名を

play00:34

動的に組み立ててしまうていうパターン

play00:37

はい組み立てますね最初ははい組み立て

play00:40

たくなりますよ組み立てたくなりますこれ

play00:42

は例えば背景青にしたいんだけどエラーの

play00:46

時には赤くしたいという時ありますねま

play00:49

これJavascriptとかでこう条件

play00:50

分岐を書こうとするとそのテイルウンドっ

play00:53

てあらかじめ決められたクラス名をま指定

play00:55

していくんですけど例えばBGBL500

play00:59

うんうんいう風にすると背景青色になり

play01:02

ますでこれをエラーの時には赤くしたいの

play01:04

でBGレッ500にしますとうんでこれ

play01:07

効率的にJavaScriptで

play01:08

組み立てようとするとBG配でドルマーク

play01:11

ブレースでなんかカラーとかっていう変数

play01:14

があってで500っていうBGと500の

play01:16

最初と最後はも固定で中身のレッドと

play01:19

ブルーだけJavaScriptで

play01:20

切り替えるコードま書くと思うんですけど

play01:22

いいですねまこれ動きませんそうなんです

play01:25

よねまでもプログラミングやってたら

play01:28

なんかこういう風になりますもんそうなん

play01:30

ですよねま効率的にだってね共通部分は

play01:33

残して同的な部分だけうんそうなりました

play01:35

もんプログラミングってこういう風になっ

play01:37

てるでもそれは動かないってのはまず1つ

play01:40

ですねうん

play01:41

うんで2つ目がまクラス名のコンフリクト

play01:45

例えば背景色をえっと黄色にしていてま

play01:48

それを赤に変えたいっていう時にBG

play01:51

イエロー500とBGレッド500があっ

play01:54

てうんふんふえ最初デフォルトはイエロー

play01:56

なんでBGイエロー500が書かれてます

play01:59

でそこにクラス目で追加してBGレ500

play02:02

を指定しますうんうんこうするとまCSS

play02:05

って基本的に後に定義したものの方が優先

play02:07

されるのでイエローじゃなくてレッドが

play02:10

優先されるんじゃないかと思うじゃない

play02:11

ですかはい上書きしてる感じがしますよね

play02:14

そうでもそうならないんですならないん

play02:16

ですよこれがねならまこれがそのクラス目

play02:19

によって上書きされたりされなかった

play02:21

りっていうものがあるんでうんこれがまた

play02:23

厄介ですねそうなんでここのコンフリク

play02:25

トっていうのは繊細な作業を伴うので

play02:28

なかなか難しいとそうですよねっていうま

play02:31

ちょっとテルウンドませっかく使ったのに

play02:33

ま今言った2つのポイントでなんかうまく

play02:36

動かないとかでちょっとけがさしてテイル

play02:39

ウンドCS使うのやめようってなると

play02:40

ちょっともったいないのでそれもったい

play02:42

ないですねはいちょっとしたことでこの

play02:43

解決策あのできるのでまそれをお伝えし

play02:47

たいなと思います

play02:49

はいで1つ目のその解決策のクラス名を同

play02:52

的に指定してうまく動かないっていう

play02:54

ケースはこれシンプルでえ同的組み立てを

play02:57

やめましょうとうんいうことですねうん

play03:01

BG数500っていう中途半なそのじゃ

play03:06

なくてもうBG500BGRed500

play03:09

っていうもう文字列自体を出し分け

play03:12

るっていうやり方にま書き換えた方がいい

play03:15

ですよとこうするときちんと赤と青

play03:18

切り分けられるとシンプルですねそうま

play03:21

少しなんていうかもっさり感をそうだね

play03:24

感じなくもないんですけどシンプルですね

play03:27

まちょっと全体的に長くなっちゃうのが嫌

play03:29

だな気になるかもしんないですけどまテル

play03:31

ウンはこういうものですというところです

play03:34

ねうんうんあるいはあれですかセーフ

play03:36

リフトを使うていう手もなくもないけどま

play03:40

でもこれはそんなに推奨されてないので

play03:43

そうですねうんまよっぽどの確か

play03:45

ドキュメントにもなんかよっぽどのことが

play03:47

なければ基本使わないでこれしないとでき

play03:50

なかったらま最終手段としてやってね

play03:52

みたいなことはあですね

play03:54

うんで2つ目はそのクラス名の

play03:57

コンフリクトの解決策なんですけどこれ

play03:59

はんテイルウンドマージっていうその

play04:01

ライブラリーがあるのでまそれを使い

play04:03

ましょうというところですねで具体的には

play04:06

まよくリアクトとかでもクラス名をこう

play04:08

デフォルトのスタイルが立ってる

play04:10

コンポーネントがあってそれに対して

play04:12

カスタマイズしたスタイルを指定したい

play04:14

みたいな時にま変数をカスタマイズする

play04:17

クラス名の変数を渡すんですけどえこれを

play04:20

単純に文字列結合でカスタム変数をBGB

play04:24

500のにカスタムをこう入れてモレスと

play04:27

して返すのではなくてテウンドマージの

play04:30

提供されるTWマージっていう関数がある

play04:32

のでまそれで引数にデフォルトのスタイル

play04:36

のBGBL500で2つ目の引数に

play04:39

カスタマイズしたいま要は上書きしたい

play04:42

スタイルを当てますそうするとBGレッ

play04:45

500だけが出力されるのでブルーなのか

play04:49

レッドなのかっていうのはもはや気にする

play04:51

ことなくえ明治的にスタイルを指定する

play04:54

ことができるっていうこれは便利ですね

play04:57

そうですねまぶっちゃけこのテルウィンド

play04:59

マジ使わないとかなりしんどいですねそう

play05:02

ですねだから僕はテイルウィンドマージを

play05:04

使わずにインポータントされてる行動を身

play05:08

にすることもありますなるほどまそれも

play05:11

ある種努力の結果なんですねそうですねま

play05:14

とりあえずつけとけばびっくりつけとけば

play05:16

まそっちが勝つていうねまただそれはま

play05:18

もちろんあまり良いそうま良くはないです

play05:21

策ではないので

play05:23

はいなんでこういうことが起こるのかって

play05:25

いうまテイルウンドの仕組みをちょっと

play05:28

話したいんですけど番知りたいですはい

play05:31

うんあの動的にクラス名を組み立てるのは

play05:33

ダメですよていうのはなぜかと言とテル

play05:37

ウンドってその最終的にそのCSSの

play05:39

ファイルを作成するんですけどその作成

play05:42

する仕組みが対象の例えばHTMLとか

play05:45

リアクトのjsxとかっていうソース

play05:48

コードのファイルの中を解析してBG

play05:51

Red500があればBGRed500の

play05:53

スタイルを抽出するんですけどその抽出は

play05:56

もう完全に文字列の完全一致うんうんなの

play05:59

ででその間に変な変数とか入ってると

play06:02

ヒットしないつまりスタイルは抽出され

play06:05

ないので適用されませんというまそういう

play06:06

仕組みなんですねとてもこれシンプルで僕

play06:10

も最初にした時にあまそういうことかとま

play06:13

それだったら確かにできないなっていう

play06:15

思うぐらいバカみたいにシンプルですね

play06:18

そうだから極端なこと言うとHMLの

play06:20

クラス属性にbdb500っていう指定し

play06:23

なくてもうん文字列としてあればいいので

play06:26

コメントアウトでもいいですしそうよね

play06:29

あのなんなら普通ののテキストにBGブ約

play06:33

があればスタイルシートは抽出されますね

play06:35

そうなんですよだからこれはまるはまり方

play06:38

にもいるんですけどさっきこの動的に

play06:40

書き換えれないって言ってるんですけど

play06:42

どっかにそもそもBGBL500あったら

play06:45

別のところでブルーレッドをこの同的に

play06:48

書く書け方をしても動いちゃうんですよね

play06:51

そうだからこういうのがあるとあれ動くの

play06:54

にみたいなこのややこしいはまり方もでき

play06:57

たりしますそうそうそうなのでまあんまり

play07:00

気づかずに動いちゃってるみたいなケース

play07:02

があるんでまちゃんと仕組みを理解してい

play07:04

くっていうの大事だなとそうそううんそう

play07:05

ですね

play07:07

はいでえっと2つ目はそのコンフリクトが

play07:11

なぜあの起こるのかというかコンフリクト

play07:13

した時にスタイルが重いように適用され

play07:16

ないことがあるっていうケースはまCSS

play07:19

自体の仕様としてえ1番最後に定義された

play07:22

プロパティが優先されるっていうまルール

play07:25

がありますでテイルウンドCSSがその

play07:27

出力するCSSはんうんえクラスがらく

play07:31

アルファベット順で出力されるので例えば

play07:34

BGブルとBGレッだとBとまRなので

play07:39

ブルーの方が上に先に書かれてレッドはえ

play07:42

その下に書かれますうんうんでイエローと

play07:45

かはYなのでさらに下にま書かれるという

play07:48

ことは同じそのBGレッBGイロを指定し

play07:53

たとしてもクラス名自体の順序は関係なく

play07:57

出力されたそのスタイルシートのうんえ

play08:00

定義順に依存されるので最終的にイエロー

play08:02

が適用され続けるみたいなことが起るって

play08:05

ですうんそうですねだからこれもあれです

play08:07

ねその場合によってなんか動いてるように

play08:09

も見えたりするわけですよねこのブルーが

play08:11

デフォルトでレッドでこう後のせしたら

play08:14

レッドが勝つみたいな動ができちゃったり

play08:18

しますねこれもややこしいですけどだから

play08:21

最終的にアウトプットされるその1枚の

play08:24

CSSまそれを眺めてみたら分かったりし

play08:26

ますねそうですねまだからいずれにせよH

play08:29

側のあのクラスの順序に依存したものは

play08:33

もちろんま書かないと思うんですけどま

play08:35

間違っても書かないようにすべきそうです

play08:38

ねはい

play08:39

うんはいというわけでまあ2つはまり

play08:42

ポイントま僕もめっちゃくちゃはまった

play08:44

ポイントなんで多分皆さんもはまはまっ

play08:47

てるとかこれからはまるかなと思うんです

play08:49

けどま仕組みさえ知ってれば簡単に回避

play08:52

できるものなのでまぜひ皆さんもテール

play08:54

ウィンドを手元でこう簡単に試すことも

play08:56

できるので手を動かして挙動を見て確認

play08:59

うんしてみて欲しいですうんでテイル

play09:01

ウンドマジとかはねすごく便利だし僕も

play09:03

使ってるんですけどムーさんも使ってます

play09:05

おあまりえじゃコンフリクトコトしまくり

play09:08

なじゃないあのテールウィンドマージと

play09:11

あとよくあるclsxでしたっけの

play09:14

合わせ技みたいなよくあると思うんです

play09:15

けどあれがちょっと苦手で僕はテイル

play09:18

ウンドバリアンというえ別のライブラリー

play09:21

におお行っていましてめちゃくちゃ便利

play09:24

です

play09:25

そうじゃあテルウンドバリアンの話はまた

play09:28

別ちょっと別ので紹介したいなと思います

play09:32

お願いしますはいというわけで今日の動画

play09:34

は以上となりますお疲れ様でしたお疲れ様

play09:37

でした

Rate This

5.0 / 5 (0 votes)

Связанные теги
TAILWINDCSS初心者クラス名コンフリクト解決策CSSプログラミングスタイルシート動的組み立てTAILWINDマージ
Вам нужно краткое изложение на английском?