Tailwind CSSで既存のHTMLのスタイルが上書きされてしまう問題
公開日:
発生している問題
マークダウンファイルを取得し、HTML
に変換してブラウザで表示した時に h1
タグの文字の大きさや太さがが通常の文章と同じサイズになっていた。つまり、普通なら当たっているはずの h1
タグのスタイルが当たっていなかった。
原因
Tailwind CSS
の機能で、HTML
タグで当たってる既存のスタイルが一部デフォルトで当たらないようになっているらしい。
公式ドキュメントの該当部分
https://tailwindcss.com/docs/preflight#headings-are-unstyled
解決策1(失敗)
GitHub の issueにあった方法を試す。
https://github.com/tailwindlabs/tailwindcss/issues/1460
sample.css
@tailwind base;
h1 {
@apply text-2xl;
}
h2 {
@apply text-xl;
}
h3 {
@apply text-lg;
}
a {
@apply text-blue-600 underline;
}
@tailwind components;
@tailwind utilities;
上のように、もともと当たっていたスタイルを再び定義しようとしたがうまく適用されず。
解決策2(成功)
先ほどの公式ドキュメントに書いてあったプラグインを導入する
https://tailwindcss.com/docs/typography-plugin
npm でインストール
terminal
npm install -D @tailwindcss/typography
tailwind.config.js に記述
tailwind.config.js
module.exports = {
theme: {
// ...
},
plugins: [
require('@tailwindcss/typography'),
// ...
],
};
該当のクラスに『prose』クラスを追加
sample.jsx
{
/* 本文 */
}
<div className='prose max-w-none'>
<div dangerouslySetInnerHTML={{ __html: body }} />
</div>;
すると、やっとうまくスタイルが適用された。
prose クラスの副作用としてmax-withのスタイルが付与されるので、それを考慮しないと意図しないスタイルが適用されてしまう可能性があります。
最後に
1 次情報を信じよ
では、Bye