CSS Tips: จัดตำแหน่งใน Flexbox ให้อยู่ตรงกลาง

ตอบกระทู้


คำถามนี้ เพื่อป้องกันการส่งแบบอัตโนมัติจากสแปมบอท
รูปแสดงอารมณ์
:icon_plusone: :like: :plusone: :gfb: :-D :) :( :-o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: :angry: :baa: :biggrin:
รูปแสดงอารมณ์อื่นๆ

BBCode เปิด
[img] เปิด
[flash] เปิด
[url] เปิด
[Smile icon] เปิด

กระทู้แนะนำ
   

มุมมองที่ขยายได้ กระทู้แนะนำ: CSS Tips: จัดตำแหน่งใน Flexbox ให้อยู่ตรงกลาง

CSS Tips: จัดตำแหน่งใน Flexbox ให้อยู่ตรงกลาง

โพสต์ โดย abdkode » 02/04/2019 6:43 pm

Flexbox เป็นหนึ่งสิ่งหนึ่งที่สนใจและน่าใช้ใน CSS อีลีเมนต์ไหนที่ใส่เป็น display: flex หรือ inline-flex ก็เปรียบเสมือนเป็นกล่อง ถ้ากล่องวางแนวนอนของในกล่องก็ไหลตามแนวนอน แต่ถ้าจับตั้งเสียของในกล่องก็จะวางซ้อนกันในแนวดิ่งนั่นเอง

เราทราบกันดีว่าการไหลของอีลีเมนต์ในกล่องจะมีทิศทางตามแกนหลักของมัน (main axis) เช่นถ้าวางกล่องแนวนอน แกนหลักก็จะเป็นแกนนอน เมื่อมีแกนหลักย่อมมีแกนตั้งได้ฉากกับแกนหลักเรียกว่า cross axis
เรามาดูอย่างโค้ดกันครับ

โค้ด: เลือกทั้งหมด

<html>

<head>
   <style>
      #container {
        display: flex;
        justify-content: center;
        background: #37BC9B;
        height: 200px;
      }

      .box {
        width: 50px;
        height: 50px;
        line-height: 50px;
        background: #434A54;
        color: #F5F7FA;
        border: 1px solid #CCD1D9;
        text-align: center;
      }
   </style>
</head>

<body>
   <div id="container">
  <div class="box" id="box1">1</div>
  <div class="box" id="box2">2</div>
  <div class="box" id="box3">3</div>
</div>
</body>

</html>

จากโค้ดด้านบนเรากำหนดใน css display: flex; และ justify-content: center; ซึ่งสำหรับ justify-content เป็นการจัดตำแหน่งของอีลีเมนต์ตามทิศทางการไหลในแกนหลัก เช่นหากจัดสิ่งของให้อยู่กลางด้วย justify-content: center ผลลัพธ์ที่ได้ดังนี้
Flexbox2.jpg
Flexbox2.jpg (3.42 KiB) เปิดดู 396 ครั้ง

จากผลลัพธ์ที่เห็นคือกล่องจะอยู่ตรงกลาง
และนอกจากนั้นกลุ่มของอีลีเมนต์ยังสามารถจัดตำแหน่งตามแกนรอง (cross axis) ได้ด้วยผ่าน align-items เช่นการจัดกลางตามแนวดิ่งด้วย align-items: center

โค้ด: เลือกทั้งหมด

#container {
  display: flex;
  justify-content: center;
  align-items: center;
  background: #37BC9B;
  height: 200px;
}

ผลลัธที่ได้
Flexbox1.jpg
Flexbox1.jpg (3.09 KiB) เปิดดู 396 ครั้ง

จากผลลัพธ์จะเห็นได้ว่า กล่องทั้งหมดจะอยู่ตรงกลางของ อีลีเมนต์นั้นเลยครับ เราสามารถนำไปประยุกต์ใช้กันได้น่ะครับ อาจจะนำ javascript หรือ JQueryมาร่วมใช้ก็ดี

ช่องทางการศึกษาเพิ่มเติมข่าวที่น่าสนใจเกี่ยวกับ : HTML & CSS
-สอนการใช้งาน HTML & CSS
-ถามตอบ HTML CSS
-บทเรียน CSS
-บทเรียน HTML5
-แลกเปลี่ยนความรู้ PHP

ข้างบน