Grid System ของ Bootstrap
grid system คือ การจัด คอลัมน์ ในหน้าจอ ปกติแล้ว grid system ที่ Bootstrap
ให้มาจะเป็นแบบ 12 คอลัมน์ ครับ ซึ่งจะใช้ร่วมกับ container
ที่เราเพิ่งสร้างขึ้นมานั่นเอง โดยแต่ละคอลัมน์จะมีความกว้างเท่ากันคือ
60px และจะอยู่ห่างกัน 20px จะได้ว่า (60*12) + (20*11) = 940
หรือความกว้างของ container เรานั่นเองครับ
การจะสร้าง layouts ด้วย
Bootstrap ให้เราสร้าง html element ที่มี class “row” ขึ้นมาก่อนครับ
ทีนี้เราจะสามารถสร้างแต่ละคอลัมน์ขึ้นมาได้ด้วยการใส่ html element ที่มี
class “span*” เข้าไปข้างใน โดย * ที่อยู่ข้างหลัง span
นั้นจะเป็นตัวเลขที่จะระบุว่าเราต้องการให้คอลัมน์นี้ “กาง” แค่ไหน
สมมติว่าเราจะสร้าง layouts แบบ 12 คอลัมน์
ให้เราใส่โค้ดด้านล่างนี้เข้าไปที่ container ของเราครับ
12 คอลัมน์
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
<div class="row">
<div class="span1">Column 1</div>
<div class="span1">Column 2</div>
<div class="span1">Column 3</div>
<div class="span1">Column 4</div>
<div class="span1">Column 5</div>
<div class="span1">Column 6</div>
<div class="span1">Column 7</div>
<div class="span1">Column 8</div>
<div class="span1">Column 9</div>
<div class="span1">Column 10</div>
<div class="span1">Column 11</div>
<div class="span1">Column 12</div>
</div>
|
จาก
โค้ดด้านบน เราใส่ html elements ที่มี class ชื่อ “span1″ รวมทั้งหมด 12
elements ด้วยกัน เมื่อพรีวิวดู เราจะพบว่า container
ของเราถูกแบ่งออกเป็นคอลัมน์ต่างๆ ที่มีความกว้างเท่ากันทั้งหมดจำนวน 12
คอลัมน์ ด้วยกัน
2 คอลัมน์
หากเราต้องการแค่ 2 คอลัมน์ โดยเราอยากให้คอลัมน์ทางซ้ายใหญ่กว่าทางขวา เราก็เขียนแบบนี้ได้ครับ
|
<div class="row">
<div class="span8">Main</div>
<div class="span4">Sidebar</div>
</div>
|
จะ
เห็นว่าความกว้างของทั้ง 2 คอลัมน์ นี้จะเป็น 8 + 4 = 12 พอดี
สาเหตุที่เราต้องกำหนดความกว้างให้รวมกันเท่ากับ 12 ก็เพราะว่า grid system
ของ bootstrap นั้นเป็นแบบ 12 คอลัมน์ ครับ นั่นหมายความว่าทั้ง 2
คอลัมน์นี้จะกางเต็ม container พอดี
3 คอลัมน์
ในทำนองเดียวกัน หากเราต้องการ 3 คอลัมน์ ก็ให้เรากำหนดความกว้างรวมให้ได้เท่ากับ 12 เหมือนเดิม
|
<div class="row">
<div class="span3">Secondary</div>
<div class="span6">Primary</div>
<div class="span3">Sidebar</div>
</div>
|
Offsetting columns
ใน
บางครั้ง เราอาจต้องการเพิ่มระยะห่างระหว่างคอลัมน์
เราสามารถทำได้ด้วยการเพิ่ม class ที่ชื่อ “offset*” เข้าไป โดย *
นั้นหมายถึงจำนวนของคอลัมน์ที่จะกลายมาเป็นระยะห่าง ลองดูตัวอย่างนี้ครับ
|
<div class="row">
<div class="span2">Logo</div>
<div class="span4 offset6">Search</div>
</div>
|
เมื่อพรีวิวดู เราจะพบว่าทั้ง 2 คอลัมน์นี้ยังคงกางเต็ม container อยู่ เนื่องจาก 2 + 4 + 6 = 12 ครับ
Nesting columns
นอกจากนั้น เรายังสามารถสร้างคอลัมน์ซ้อนภายในคอลัมน์ได้อีกด้วยนะครับ ลองดูตัวอย่างนี้
|
<div class="row">
<div class="span8">
Main
<div class="row">
<div class="span2">Menu</div>
<div class="span6">Content</div>
</div>
</div>
<div class="span4">Sidebar</div>
</div>
|
จะ
เห็นว่าเราได้สร้างคอลัมน์ “span2″ กับ “span6″ ซ้อนข้างในคอลัมน์ “span8″
ซึ่งคอลัมน์ที่อยู่ภายในทั้ง 2 คอลัมน์
จะกางเต็มคอลัมน์ข้างนอกพอดีเนื่องจาก 2 + 6 = 8
หากยังมองไม่เห็นภาพเกี่ยวกับการใช้งาน grid system ของ Bootstrap ลองดูภาพนี้ครับ
Fluid Grid System
Bootstrap
ได้เตรียม fluid grid system มาให้เราด้วยครับ วิธีใช้ก็ง่ายๆ คือ
ก่อนอื่นเราต้องเปลี่ยน container มาเป็นแบบ fluid ก่อน ด้วยการเปลี่ยน
class จาก “container” มาเป็น “container-fluid” แบบนี้ครับ
|
<body>
<div class="container-fluid">
...
</div>
</body>
|
จากนั้นเราก็ต้องเปลี่ยน grid ของเรามาเป็นแบบ fluid เหมือนกัน ให้เราเปลี่ยน class จาก “row” มาเป็น “row-fluid” ครับ
|
<div class="row-fluid">
<div class="span8">Main</div>
<div class="span4">Sidebar</div>
</div>
|
เพียง
เท่านี้ grid system ของเราก็จะเปลี่ยนมาใช้หน่วย percents แทนหน่วย pixels
ในการกำหนดความกว้างของแต่ละคอลัมน์แล้วล่ะครับ สำหรับการใช้งาน fluid
grid system นั้นจะเหมือนกับ fixed grid system แทบทุกประการครับ
แต่มันจะต่างกันตรง nesting columns เท่านั้นเอง ลองมาดูตัวอย่างนี้ครับ
|
<div class="row-fluid">
<div class="span8">
<div class="row-fluid">
<div class="span3">Menu</div>
<div class="span9">Content</div>
</div>
</div>
<div class="span4">Sidebar</div>
</div>
|
จะ
สังเกตว่าความกว้างของคอลัมน์ “Menu” กับ “Content” จะมีผลรวมเท่ากับ 3 + 9
= 12 ซึ่งก็คือ 100% นั่นเอง ไม่เหมือนกับ fixed grid system
ที่ผลรวมจะต้องเท่ากับ 8
ไม่มีความคิดเห็น:
แสดงความคิดเห็น