📖

tailwindでレスポンシブデザインを作成する

2023/12/19に公開

モバイルファーストという考え方

TailwindCSSの公式ドキュメントに書かれているモバイルファーストというのは、「デフォルトでは一番小さい画面の設定です。大きい画面で表示した時の見え方を設定したい時は、sm:〜という表記で記述してね」という意味です。

言葉では少しわかりにくいかと思いますので、実際に画面を作ってみましょう。

  <div class=" flex flex-col sm:flex-row h-screen ">

    <aside class=" hidden sm:block w-[200px]  px-3 border-r-2">
      <div @click="$router.push('/index')">タイトルロゴ</div>

      <ul class="py-3">
        <li v-for="page of pages" class="w-full px-3 hover:bg-gray-100" @click="navigateTo(page.to)">
          <h2 >{{ page.title }}</h2>
        </li>
      </ul>
    </aside>

    <main class="flex-grow flex flex-col ">
      <NuxtPage/>
    </main>
    
    <footer class=" sm:hidden sticky bottom-0 bg-white py-2 border " >
      <ul class="flex justify-between">
        <li v-for="page of pages" class="w-full ">
          <component class=" w-6 mx-auto" :is="page.icon" @click="navigateTo(page.to)" ></component>
        </li>
      </ul>
    </footer>

  </div>

サイドバーはsm以上で表示

<aside class=" hidden sm:block w-[200px]  px-3 border-r-2">

hidden sm:blockの部分が、「デフォルトではhidden、画面サイズがsm以上だとblock」という意味です。
言い換えると、「スマホ画面のような一番小さい画面ではhidden(つまり隠れる)となって、PC画面ではblockスタイルとなる(つまり表示される)」設定にできます。

なお、cssで表示させない設定をするには、「invisible sm:visible」という書き方も考えられますが、この書き方だと空白になってしまいます。

画面下のメニューバーはスマホ画面のみで表示

一方で、フッターの部分

<footer class=" sm:hidden sticky bottom-0 bg-white py-2 border " >

こちらは、「デフォルトでは表示、画面サイズがsm以上だとhidden」です。
言い換えると、「スマホ画面のような一番小さい画面では表示され、PC画面ではhidden(つまり隠れる)」設定にできます。

Discussion