📖
tailwindでレスポンシブデザインを作成する
モバイルファーストという考え方
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