---
description: '#HelloFront-end #HelloErmine #HelloWorld2021'
---

# Bootstrap Layout

## Layout

คือ CSS สำเร็จรูป ที่มีใน Bootstrap ซึ่งมีผลต่อการแบ่งและจัดหน้าเว็บไซต์ โดยเราจะยกตัวอย่างเป็น Containers และ Grid System&#x20;

## **Containers** &#x20;

class container คือ class ที่สร้างมาเพื่อจัดองค์ประกอบของข้อมูลใน tag ให้มีความกว้างหรือระยะห่างจากขอบจอ (width) ตามที่เราได้กำหนดขนาดเอาไว้ โดยสามารถกำหนด size ได้ตามตาราง

![](https://lh4.googleusercontent.com/8f_BeGO68ZwvEztpEFWLSoceOT6MRBxkqbRF40PbnLtcVZI4ksjYv-wl2EC-OO4vKfZy_eDzKxDc9nBg-Q3euzexWFWMpNzL8ejDP31KKUQDcUcF2Nhtx8UqpJWkrPq_iZQkdJcq)

{% tabs %}
{% tab title="Container in HTML" %}
{% hint style="warning" %}
อย่าลืมเชื่อม และ import ไฟล์ Bootstrap ให้เรียบร้อย
{% endhint %}

### Example Container

```markup
<div class="container">
        Lorem ipsum dolor sit amet consectetur adipisicing elit. Eum quia qui ipsa magni fugit porro. Ea distinctio
        voluptatum ipsum sit reprehenderit nostrum, culpa minima sed quis soluta blanditiis possimus nisi aspernatur   
        amet accusamus? Recusandae ullam exercitationem adipisci veniam ut officia vitae sapiente architecto placeat  
        obcaecati vero corrupti accusamus ad ratione, repellendus suscipit voluptatibus rerum dicta ea tempora nesciunt    
        et repudiandae. Eum quidem quibusdam unde atque optio modi quo ipsam cupiditate ullam inventore eos, non
        accusamus dolorum sequi eaque officia odit itaque dolores quos adipisci! Labore asperiores dolore quod libero 
        necessitatibus, quos dignissimos pariatur animi eveniet eum officiis ab nemo eligendi porro tempora expedita, 
        nesciunt eius culpa ipsam minima at iste illo saepe nobis? Exercitationem, quibusdam. Placeat rerum, sit
        voluptas similique, soluta eos in ullam ratione deleniti nam excepturi voluptate? In vitae perferendis, maiores 
        expedita reprehenderit alias possimus! Ex, blanditiis quas dicta repudiandae nisi magnam optio neque nihil
        laborum, aut nam tempore assumenda nulla. Eaque corporis delectus, illum aperiam accusantium labore voluptates  
        nihil harum quis vero et nostrum error numquam, fugit suscipit magnam maxime explicabo sequi doloremque minus
        iure. Eum ipsa cumque possimus minima! Rem neque, vitae itaque nulla animi eius at, hic enim excepturi odit
        tempora cupiditate quis nisi facilis.
    </div>
```

![ส่วนที่วงไว้ สีเขียว คือ เส้นกรอบของ div ซึ่งบอกว่ามี div ครอบไว้ สีส้ม คือ ขนาดความกว้างหรือระยะห่างจากขอบจอ ](https://1572294076-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Me05uuZ2Kw6VszdHXnU%2F-Meo8RgWR10t-0RC_VGs%2F-Meo8Xw-ibxc0AIZ_1x0%2Fpasted%20image%200.png?alt=media\&token=50f64205-9662-4319-a792-ffb76568a56a)

###

### **class container แบบกำหนด size**

```markup
    <div class="container-sm">100% wide until small breakpoint</div>
    <div class="container-md">100% wide until medium breakpoint</div>
    <div class="container-lg">100% wide until large breakpoint</div>
    <div class="container-xl">100% wide until extra large breakpoint</div>
    <div class="container-xxl">100% wide until extra extra large breakpoint</div>
```

![จากรูปจะเห็นว่ายังไม่มีอะไรเปลี่ยนแปลง ยังมีเส้นกรอบของตัว div และ container อยู่](https://lh3.googleusercontent.com/im8Ak3YLYdwdlkboNFVaG1TyMolEVIbtAJ8QlIMYhV5jrKWs5WH5o1ix3IeMg3oz_eQwtC3zNqFZhj28Cud3VhM7_BmqAoKRHjSPNLWWkmyyDNdB4u6a_VXYW8zapM6iv701Z0vm)

![แต่เมื่อปรับขนาดจอตามรูป ให้ด้านบนเล็กกว่า 1400px จะเห็น container-xxl นั้นโดนปรับให้ความกว้างเป็นเต็มจอ](https://1572294076-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Me05uuZ2Kw6VszdHXnU%2F-MeoBHYJbLEAugdExjAw%2F-MeoEox5tOO2idbAk7AZ%2FCon_3.png?alt=media\&token=e4a53826-2657-45a2-bd1d-747e4512c37b)

แต่ตัวอื่น ๆ ที่เหลือยังไม่เปลี่ยนไป เนื่องจาก container size ตัวอื่น ๆ ยังมีระยะห่างจากขอบจอที่กำหนดเอาไว้อยู่ และยังอยู่ในเงื่อนไขของขนาดที่ยังแสดงออกมาได้จึงยังไม่แสดงความกว้างของจอ หรือ ระยะห่างจากขอบจอเป็น 100%&#x20;



### **class container-fluid**

```markup
<div class="container-fluid">
        100% wide until small breakpoint
        100% wide until medium breakpoint
        100% wide until large breakpoint
        100% wide until extra large breakpoint
        100% wide until extra extra large breakpoint
</div>
```

![ไม่ว่าขนาดหน้าจอจะเท่าไหร่ ระยะห่างจากขอบจอของ  container-fluid ก็จะเป็น 100% เสมอ](https://1572294076-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Me05uuZ2Kw6VszdHXnU%2F-MeoG8I5q94brs-Yz3JS%2F-MeoIbeGDheN-RQ1c_r4%2FCon_4.png?alt=media\&token=7e317e33-1e3a-4f4b-b538-65803d82b263)

### ความแตกต่างของ container กับ **container-fluid**

```markup
<div class="container" style="background-color:red">
   <h1>This is container.</h1>
</div>

<div class="container-fluid" style="background-color:blue">
   <h1>This is container-fluid</h1>
</div>
```

containers ความกว้างจะแสดงไม่เต็มหน้าจอโดยจะมี padding ทางซ้ายและขวาของ containers เพื่อไม่ให้แสดงความกว้างแบบเต็มจอ

container-fluid จะแสดงข้อมูลแบบกว้างเต็มจอ จะไม่มี padding ที่เพิ่มเข้ามาทางซ้ายและขวา

![ผลลัพธ์](https://1572294076-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Me05uuZ2Kw6VszdHXnU%2F-MepNgIarD4MdtBBUMfV%2F-MepOcfjyAUq67P1jXmA%2FGrid.png?alt=media\&token=4646c50c-cacc-4bd4-b3d5-6b7a70a6df42)
{% endtab %}

{% tab title="Container in React" %}
{% hint style="warning" %}
อย่าลืมเชื่อม และ import ไฟล์ Bootstrap ให้เรียบร้อย
{% endhint %}

### Example Container

```jsx
<Container className="bg-primary">----- Containers -----</Container>
<Container fluid='sm' className="bg-secondary">----- Containers-sm -----</Container>
<Container fluid='md' className="bg-info">----- Containers-md -----</Container>
<Container fluid='lg' className="bg-success">----- Containers-lg -----</Container>
<Container fluid='xl' className="bg-danger">----- Containers-xl -----</Container>
<Container fluid className="bg-warning">----- Containers Fluid -----</Container>
```

![จะมีการแสดงผลเดียวกับ size ตามตาราง Containers size ด้านบน](https://1572294076-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Me05uuZ2Kw6VszdHXnU%2F-MfSRZgG_FTfoFHG6y9k%2F-MfSTWyk4l_OYzQaxuQv%2FCon_5.png?alt=media\&token=b05c2ec4-4e43-45c3-a30d-a8fc74cffbe5)

จะเห็นได้ว่ายังไม่มีอะไรเปลี่ยนแปลง แต่เมื่อเราทำการปรับขนาดหน้าจอ (Responsive) ตามรูปด้านล่าง

![จะมีการแสดงผลเดียวกับ size ตามตาราง Containers size ด้านบน](https://1572294076-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Me05uuZ2Kw6VszdHXnU%2F-MfSVWhYlIJ_rthhkwKC%2F-MfSVjyfSyGFABLdiZKY%2FCon_6.png?alt=media\&token=a56cbbb3-3fb3-453d-8d9e-560619cc285f)

Container-xl จะแสดงความกว้างกลายเป็นเต็มหน้าจอ เนื่องจากขนาดจอ (Responsive) มีขนาดเล็กกว่า 1200px ในขณะที่ Container ด้านบนที่เหลือ ยังคงแสดงตาม size เนื่องจากขนาดหน้าจอยังคงตรงตามเงื่อนไข

ซึ่งภายใน React เราทำการ Import Container กลายเป็น tag ไปแล้ว จึงต้องเปลี่ยน Syntax ในการเขียน จากปกติที่เรียกผ่าน class กลายเป็นเรียกผ่าน tag แทน
{% endtab %}
{% endtabs %}

## **Grid System**

Grid System จะเป็นตัวช่วยที่ทำให้เราสามารถแบ่งแยกหน้าของเว็บไซต์ออกเป็นส่วน ๆ ได้ ซึ่งทำให้ง่ายต่อการจัดวางองค์ประกอบต่าง ๆ บนหน้าเว็บไซต์ที่เราทำ โดยทั่วไปใน 1 หน้า จะแบ่งออกมาได้ทั้งหมด 12 ส่วน ส่วนละเท่า ๆ กัน&#x20;

![](https://lh6.googleusercontent.com/nweCjGNymv6Ui5jDQALD7L_SUv2gZdVlFegUcKL-18-tNUZiLFvNEWWGhp7yHrcNEyos9zSu4gguen6LOt_hDcDWCy00JLChj4vbaxWbfBlXEKjHVHjlCAXYa540hDfJPuV9e8xd)

### **องค์ประกอบภายใน Grid System**

#### การเลือกใช้ขนาดของ Column

![](https://lh3.googleusercontent.com/88lFKBfw7u4uGrMY3GijBAYjIbM50on54feAsqL-zz9REb8RoZpgGACWFVX7etA5X1Q_I0pPYyCdzWQZZv8XYthHxZGbQFEJQiepjYmLlALqlWmiikzwpsnECSZte4nPFdnF8rEo)

{% tabs %}
{% tab title="Grid in HTML" %}
{% hint style="warning" %}
อย่าลืมเชื่อม และ import ไฟล์ Bootstrap ให้เรียบร้อย
{% endhint %}

### **Row and Column**

การที่เราจะใช้ Grid System เรามักจะใช้ใน column และ column จะอยู่ภายใน row ซึ่ง 1 row สามารถมีได้หลาย column โดยจะขึ้นอยู่กับเรา ว่าจะตั้ง column ยังไงเวลาเขียน code

![](https://lh6.googleusercontent.com/sWeH-APfIZfazhmU6p0durvoojAC3DQ7LUU-R0TFZRiciAsP7qJEfz7vRjn5ti61ZJvN4DYhxd5gQp-dFmOqSRRK2H7f7H_X6cbgKUBQ5-W5Qt5UvJ4X4PjdqBwuW7pBzss_rJ1Q)

```markup
<div class="row">
   <div class="col-xl-6" style="background-color:yellow">6</div>
   <div class="col-xl-6" style="background-color:red">6</div><br>
</div>
<div class="row">
   <div class="col-sm-4" style="background-color:yellow">4</div>
   <div class="col-sm-4" style="background-color:red">4</div>
   <div class="col-sm-4" style="background-color:blue">4</div>
</div>
```



โดยภายใน Container และ Container-fluid เราสามารถนำ Grid System มาใช้ในการแบ่งส่วนภายใน Container และส่วนใหญ่มักจะใช้ Grid System พร้อมกับ column ที่อยู่ภายใน row

```markup
<div class="container">
   <div class="row">
      <div class="col-xl-6" style="background-color:yellow;">50</div>
      <div class="col-xl-6" style="background-color:blue;">50</div>
   </div>
   <div class="row">
      <div class="col-xl-4" style="background-color:blue;">33.33</div>
      <div class="col-xl-4" style="background-color:red;">33.33</div>
      <div class="col-xl-4" style="background-color:yellow;">33.33</div>
   </div>
   <div class="row">
      <div class="col-xl-3" style="background-color:purple;">25</div>
      <div class="col-xl-3" style="background-color:orange;">25</div>
      <div class="col-xl-3" style="background-color:green;">25</div>
      <div class="col-xl-3" style="background-color:aqua;">25</div>
   </div>
</div>
<br>

<div class="container-fluid">
   <div class="row">
      <div class="col-xl-6" style="background-color:yellow;">50</div>
      <div class="col-xl-6" style="background-color:blue;">50</div>
   </div>
   <div class="row">
      <div class="col-xl-4" style="background-color:blue;">33.33</div>
      <div class="col-xl-4" style="background-color:red;">33.33</div>
      <div class="col-xl-4" style="background-color:yellow;">33.33</div>
   </div>
   <div class="row">
      <div class="col-xl-3" style="background-color:purple;">25</div>
      <div class="col-xl-3" style="background-color:orange;">25</div>
      <div class="col-xl-3" style="background-color:green;">25</div>
      <div class="col-xl-3" style="background-color:aqua;">25</div>
   </div>
</div>
```

![ผลลัพธ์](https://lh6.googleusercontent.com/o5JO7CnAk7UOGVgRLtTwbEUFDyqdn4tTgOdN1Yb8A-fgzXs10EXlTikvh6Bckp7wg6ZZl6FJQ0thJWpa0m1oBuWWmR_22_N4DFNqMBc3qc1gUEH3qunBIw6tUNmTQoahI1lvvzVZ)
{% endtab %}

{% tab title="Grid in React" %}
{% hint style="warning" %}
อย่าลืมเชื่อม และ import ไฟล์ Bootstrap ให้เรียบร้อย
{% endhint %}

### Example Grid system

```jsx
<Row>
<Col>1 of 3</Col>
<Col>2 of 3</Col>
<Col>3 of 3</Col>
</Row>
<Row>
<Col>1 of 2</Col>
<Col>2 of 2</Col>
</Row>
```

![](https://1572294076-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Me05uuZ2Kw6VszdHXnU%2F-MfStpI8PtjVrLefIUEw%2F-MfSvOcfpA8e8RPShxco%2Fimage.png?alt=media\&token=165f9dcd-09f5-4ea1-b83c-2aecc42ebd4a)

![](https://1572294076-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Me05uuZ2Kw6VszdHXnU%2F-MfSvYh0rF2GR7J7_USQ%2F-MfSwPlh6Nvo_jrTFWUJ%2Fimage.png?alt=media\&token=34c8cfba-2375-4bd6-a403-3da5d3f1a98b)

{% hint style="warning" %}
ต่อให้ขนาดของ Grid จะใหญ่เล็กไม่เท่าเดิม แต่อัตราส่วนที่แบ่งเอาไว้จะยังคงเท่าเดิม
{% endhint %}

## Container with Grid

เราสามารถนำ Grid มาใช้ร่วมกับ Container เพื่อช่วยให้การจัดหน้า Layout ของเว็บไซต์ให้ดีขึ้น

```jsx
<Container>
<Row>
<Col>1 of 3</Col>
<Col>2 of 3</Col>
<Col>3 of 3</Col>
</Row>
<Row>
<Col>1 of 2</Col>
<Col>2 of 2</Col>
</Row>
</Container>
```

![](https://1572294076-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Me05uuZ2Kw6VszdHXnU%2F-MfSZSG5avwyNrmJ27NW%2F-MfSrxGz_a5H6rQRa9Yw%2Fimage.png?alt=media\&token=bc009baf-e0ff-41b5-913d-668a7ee308d3)

![](https://1572294076-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Me05uuZ2Kw6VszdHXnU%2F-MfSs2JdLXLpZRmpNZBr%2F-MfSsG7jYJ2UaTNv72Qy%2Fimage.png?alt=media\&token=80b4251a-5a2f-4597-aa39-201ba98a30e9)

จะมี margin ของ Container จึงทำให้ column นั้นอยู่กลางจอ
{% endtab %}
{% endtabs %}

