Reactでスタイル設定を行う方法についていくつか試してみます。
インラインスタイル
まずはインラインスタイルでの設定を試してみます。
オブジェクト形式でスタイルを用意して適用します。
export default function Button() {
const style = {
appearance: 'none',
padding: '10px 20px',
border: 'none',
borderRadius: 5,
color: 'white',
background: 'purple',
}
return (
<button style={style}>ボタン</button>
)
}
border-radiusのようなハイフンのあるプロパティの場合、キャメルケースにするかダブルクォーテーションで括って指定します。
インラインスタイルのデモページ
インラインスタイルになるので、疑似要素やメディアクエリは使用できません。
CSSファイルのインポート
次にCSSファイルをインポートする方法を試してみます。
Reactでのclass属性はclassNameを使った指定になります。
import "./Button.css";
export default function Button() {
return (
<button className="button">ボタン</button>
)
}
Button.css
.button {
appearance: none;
padding: 10px 20px;
border: none;
border-radius: 5px;
color: white;
background: purple;
}
CSSファイルのインポートのデモページ
今回はButtonのコンポーネント内でインポートしていますが、CSSはグローバルなのでコンポーネント外にも適用される点に注意が必要です。
CSS Modules
次にCSS Modulesを試してみます。
import styles from "./Button.module.css";
export default function Button() {
return (
<button className={styles.button}>ボタン</button>
)
}
1行目でインポートしているButton.module.cssは以下の通りです。
.button {
appearance: none;
padding: 10px 20px;
border: none;
border-radius: 5px;
color: white;
background: purple;
}
CSS Modulesのデモページ
最終的にclass名は一意になるので、CSSはコンポーネント内で完結させることができます。
styled-components(CSS in JS)
次にstyled-componentsを試してみます。
まずはパッケージのインストールを行います。
npm install styled-components --save-dev
styled-componentsを使用した形に記述を変更します。
import styled from "styled-components";
const Btn = styled.button`
appearance: none;
padding: 10px 20px;
border: none;
border-radius: 5px;
color: white;
background: purple;
`;
export default function Button() {
return (
<Btn>ボタン</Btn>
)
}
この場合もclass名は一意になるので、CSSをコンポーネント内で完結させることができます。
styled-componentsのデモページ
Tailwind CSS
最後にTailwind CSSを試してみます。
必要なパッケージをインストールします。
npm install tailwindcss postcss autoprefixer --save-dev
Tailwind CSSとPostCSSの設定ファイル(tailwind.config.js と postcss.config.js)を作成します。
npx tailwindcss init -p
tailwind.config.js内にファイルパスの追加を行います。
/** @type {import('tailwindcss').Config} */
export default {
content: [
"./index.html",
"./src/**/*.{js,ts,jsx,tsx}",
],
theme: {
extend: {},
},
plugins: [],
}
サイト全体で使用するCSS内に下記を追加します。
@tailwind base; @tailwind components; @tailwind utilities;
これでTailwind CSSを使用する準備ができたので、設定を試してみます。
export default function Button() {
return (
<button
className="appearance-none py-2.5 px-5 border-none rounded-md text-white bg-purple-600"
>ボタン</button>
)
}
コメントが承認されるまで時間がかかります。