# bootstrap

cssをあてるのに、bootstrapをインストールしましょう。

bootstrapとは最も人気のあるCSSフレームワークで、直感的なclass名をつけることで、簡単にcssをあてることができます。

```bash
npm install bootstrap
```

現在作成しているReactアプリでは、`src`ディレクトリ配下に`App.css`と`index.css`があるかと思います。`App.css`に関しては、`App.tsx`にてimportしていたのですが、削除したのでファイルを削除しましょう。index.cssに関しては、`main.tsx`にてimportされているかと思います。このようにimportすすることでcssを当てることでき、main.tsxでimportしているものはページ全体で適応されるものなので、**グローバルcss**といいます。今回は使用しないので、こちらの記述を削除し、代わりにbootstrapをimportしましょう。

{% code title="main.tsx◎" %}

```tsx
import React from "react";
import ReactDOM from "react-dom/client";
import App from "./App.tsx";

import "bootstrap/dist/css/bootstrap.css";

ReactDOM.createRoot(document.getElementById("root")!).render(
  <React.StrictMode>
    <App />
  </React.StrictMode>
);
```

{% endcode %}

上記にてbootstrapを使用できるようになりました。

次に新たなComponentを作成しましょう。

`src`配下に`components`ディレクトリを作成します。実務では基本的に`components`配下にComponentを格納していきます。

`components`配下に`Breadcrumb.tsx`を作成します。

このコンポーネントをbootstrapにてスタイリングしていくのですが、bootstrapは以下のURLにアクセスして、左側にさまざまな部品やレイアウトの名称が表示され、クリックすると、各部品やレイアウトのCSSの当て方を確認することができます。

{% embed url="<https://getbootstrap.jp/docs/5.3/getting-started/introduction/>" %}

<figure><img src="https://1869761657-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcUBbYqol4PMzZJggiMqV%2Fuploads%2Fg8hCAvAvlf5H6ZWhiRCY%2Fboostrap.png?alt=media&#x26;token=af787604-5c7d-407f-8bf6-06637357a72b" alt=""><figcaption></figcaption></figure>

今回は、以下のページのBreadcrumbを利用します。

{% embed url="<https://getbootstrap.jp/docs/5.3/components/breadcrumb/>" %}

こちらを参考に`Breadcrumb.tsx`を以下のように記述しましょう。

{% code title="Breadcrumb.tsx◎" %}

```tsx
export const Breadcrumb = () => {
  return (
    <nav aria-label="breadcrumb">
      <ol class="breadcrumb">
        <li class="breadcrumb-item">
          <a href="#">Home</a>
        </li>
        <li class="breadcrumb-item">
          <a href="#">Library</a>
        </li>
        <li class="breadcrumb-item">
          <a href="#">Date</a>
        </li>
      </ol>
    </nav>
  );
};

```

{% endcode %}

エディタにて確認すると、classの部分にてエラーになっているかと思います。理由として、`tsx`でタグにクラス名をつける場合は、`class`ではなく`className`とつけることになっています。

上記のclassをclassNameに修正しましょう。

<pre class="language-tsx" data-title="Breadcrumb.tsx◎"><code class="lang-tsx">export const Breadcrumb = () => {
  return (
    &#x3C;nav aria-label="breadcrumb">
<strong>      &#x3C;ol className="breadcrumb">
</strong><strong>        &#x3C;li className="breadcrumb-item">
</strong>          &#x3C;a href="#">Home&#x3C;/a>
        &#x3C;/li>
<strong>        &#x3C;li className="breadcrumb-item">
</strong>          &#x3C;a href="#">Library&#x3C;/a>
        &#x3C;/li>
<strong>        &#x3C;li className="breadcrumb-item">
</strong>           &#x3C;a href="#">Date&#x3C;/a>
        &#x3C;/li>
      &#x3C;/ol>
    &#x3C;/nav>
  );
};

</code></pre>

作成したBreadcrumbコンポーネントをApp.tsxにて`import`しましょう。

{% code title="App.tsx◎" %}

```tsx
import { UserDetail } from "./UserDetail";
import { Breadcrumb } from "./components/BreadCrumb";

const App = () => {
  return (
    <div>
      <Breadcrumb />
      <UserDetail />
    </div>
  );
};

export default App;
```

{% endcode %}

上記修正にてブラウザで確認すると、以下のように表示されているかと思います。

<figure><img src="https://1869761657-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcUBbYqol4PMzZJggiMqV%2Fuploads%2FDyFhoF1NJdywvTfirSus%2F126.png?alt=media&#x26;token=5f99b5e4-e3f8-473c-9a54-567b5ab66c52" alt=""><figcaption></figcaption></figure>

このように、bootstrapを導入することで、class名に特定の名前を与えることで、いい感じのcssを当てることができます。
