Dev to webs {Coding…}

เรียนรู้การพัฒนาซอฟเวอร์ เพื่อความรู้ที่ยั่งยืน

บทที่ 7: การจัด Layout ด้วย Flexbox ใน Tailwind CSS


Flexbox คืออะไร?

Flexbox (Flexible Box Layout) เป็นเทคนิคการจัด Layout ที่ทรงพลังและใช้งานง่ายใน CSS Tailwind CSS ช่วยให้การใช้ Flexbox ง่ายขึ้นด้วยชุด Utility Classes ที่ช่วยให้คุณสามารถจัดตำแหน่งและกระจายองค์ประกอบต่าง ๆ ได้อย่างสะดวกและรวดเร็ว


1. เริ่มต้นใช้งาน Flexbox

การเปิดใช้งาน Flexbox ใน Tailwind CSS ทำได้ง่าย ๆ โดยใช้คลาส flex:

ตัวอย่าง:

<div class="flex bg-gray-200 p-4">
  <div class="bg-blue-500 p-4">Box 1</div>
  <div class="bg-green-500 p-4">Box 2</div>
  <div class="bg-red-500 p-4">Box 3</div>
</div>

ในตัวอย่างนี้:

  • คลาส flex ทำให้ Container ใช้ Flexbox
  • องค์ประกอบลูก (Box 1, Box 2, Box 3) จะเรียงกันในแนวนอนตามค่าเริ่มต้นของ Flexbox

2. การจัดเรียงแนวแกนหลัก (Main Axis)

Flexbox ช่วยให้คุณจัดเรียงองค์ประกอบในแนวแกนหลัก (Main Axis) ด้วยคลาส justify-{value}:

คลาสคำอธิบาย
justify-startจัดองค์ประกอบไปทางด้านซ้าย (ค่าเริ่มต้น)
justify-centerจัดองค์ประกอบให้อยู่ตรงกลาง
justify-endจัดองค์ประกอบไปทางด้านขวา
justify-betweenกระจายองค์ประกอบโดยมีระยะห่างเท่ากัน
justify-aroundกระจายองค์ประกอบโดยมีระยะห่างรอบเท่ากัน
justify-evenlyกระจายองค์ประกอบโดยมีระยะห่างสม่ำเสมอ

ตัวอย่าง:

<div class="flex justify-center bg-gray-200 p-4">
  <div class="bg-blue-500 p-4">Box 1</div>
  <div class="bg-green-500 p-4">Box 2</div>
  <div class="bg-red-500 p-4">Box 3</div>
</div>

ในตัวอย่างนี้ คลาส justify-center จะจัดองค์ประกอบให้อยู่ตรงกลางในแนวนอน


3. การจัดเรียงแนวแกนข้าม (Cross Axis)

การจัดเรียงในแนวแกนข้าม (Cross Axis) ใช้คลาส items-{value}:

คลาสคำอธิบาย
items-startจัดองค์ประกอบให้อยู่ด้านบน
items-centerจัดองค์ประกอบให้อยู่ตรงกลาง
items-endจัดองค์ประกอบให้อยู่ด้านล่าง
items-stretchยืดองค์ประกอบให้เต็มพื้นที่ (ค่าเริ่มต้น)

ตัวอย่าง:

<div class="flex items-center bg-gray-200 h-32">
  <div class="bg-blue-500 p-4">Box 1</div>
  <div class="bg-green-500 p-4">Box 2</div>
  <div class="bg-red-500 p-4">Box 3</div>
</div>

ในตัวอย่างนี้ คลาส items-center จะจัดองค์ประกอบให้อยู่ตรงกลางในแนวตั้ง


4. การเปลี่ยนทิศทางของ Flexbox

ค่าเริ่มต้นของ Flexbox คือการจัดเรียงในแนวนอน (row) คุณสามารถเปลี่ยนทิศทางได้ด้วยคลาส flex-{direction}:

คลาสคำอธิบาย
flex-rowเรียงในแนวนอน (ค่าเริ่มต้น)
flex-row-reverseเรียงในแนวนอนกลับด้าน
flex-colเรียงในแนวตั้ง
flex-col-reverseเรียงในแนวตั้งกลับด้าน

ตัวอย่าง:

<div class="flex flex-col bg-gray-200 p-4">
  <div class="bg-blue-500 p-4">Box 1</div>
  <div class="bg-green-500 p-4">Box 2</div>
  <div class="bg-red-500 p-4">Box 3</div>
</div>

ในตัวอย่างนี้ คลาส flex-col จะทำให้องค์ประกอบเรียงกันในแนวตั้ง


5. การกำหนดขนาดขององค์ประกอบลูก

คุณสามารถกำหนดขนาดขององค์ประกอบลูกใน Flexbox ด้วยคลาส flex-{value}:

คลาสคำอธิบาย
flex-1ใช้พื้นที่ที่เหลือทั้งหมด
flex-autoขยายหรือย่อขนาดอัตโนมัติตามเนื้อหา
flex-initialใช้ขนาดเริ่มต้นตามเนื้อหา
flex-noneไม่ขยายหรือย่อขนาด

ตัวอย่าง:

<div class="flex bg-gray-200 p-4">
  <div class="flex-1 bg-blue-500 p-4">Box 1</div>
  <div class="flex-1 bg-green-500 p-4">Box 2</div>
  <div class="bg-red-500 p-4">Box 3</div>
</div>

ในตัวอย่างนี้ Box 1 และ Box 2 จะขยายเพื่อใช้พื้นที่ที่เหลือทั้งหมด


6. การเว้นระยะห่างระหว่างองค์ประกอบ (Gap)

Tailwind CSS รองรับการเว้นระยะห่างระหว่างองค์ประกอบใน Flexbox ด้วยคลาส gap-{value}:

ตัวอย่าง:

<div class="flex gap-4 bg-gray-200 p-4">
  <div class="bg-blue-500 p-4">Box 1</div>
  <div class="bg-green-500 p-4">Box 2</div>
  <div class="bg-red-500 p-4">Box 3</div>
</div>

ในตัวอย่างนี้ คลาส gap-4 จะเว้นระยะห่างระหว่างองค์ประกอบแต่ละตัว 1rem


7. ตัวอย่างการใช้งาน Flexbox ในโปรเจกต์จริง

การสร้าง Navbar:

<nav class="flex justify-between items-center bg-gray-800 text-white p-4">
  <div class="text-lg font-bold">MyWebsite</div>
  <ul class="flex gap-4">
    <li><a href="#" class="hover:text-blue-400">Home</a></li>
    <li><a href="#" class="hover:text-blue-400">About</a></li>
    <li><a href="#" class="hover:text-blue-400">Contact</a></li>
  </ul>
</nav>

การจัด Layout ของหน้า:

<div class="flex h-screen">
  <aside class="w-1/4 bg-gray-700 text-white p-4">
    Sidebar
  </aside>
  <main class="flex-1 bg-gray-100 p-4">
    Main Content
  </main>
</div>


สรุป

Flexbox ใน Tailwind CSS ทำให้การจัด Layout ของหน้าเว็บสะดวกและง่ายขึ้น ด้วย Utility Classes ที่พร้อมใช้งาน คุณสามารถจัดตำแหน่งและปรับขนาดขององค์ประกอบได้ตามความต้องการ ในบทต่อไป เราจะเจาะลึกการใช้งาน Grid Layout ซึ่งเป็นอีกหนึ่งเครื่องมือทรงพลังสำหรับการออกแบบหน้าเว็บ!