๐ฎ BootStrap5 ๋ฐ์ํ ์์คํ - ๊ทธ๋ฆฌ๋
๋ถํธ์คํธ๋ฉ ๊ทธ๋ฆฌ๋ ์์คํ
๊ทธ๋ฆฌ๋๋ ํ ์ด๋ธ๊ณผ ์ ์ฌํ๊ฒ ํ๋ฉด์ ๋ถํ ํด ์ํ๋ ๋ ์ด์์์ ์ก๊ธฐ์ํด ์ ์๋ ๊ฒ์ผ๋ก ๋ถํธ์คํธ๋ฉ์์๋ 12๊ฐ์ ์ปฌ๋ผ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ 6๊ฐ์ ํ๋ฉดํฌ๊ธฐ์ ๊ด๋ จ๋ ์ต์ ์ ์ ๊ณต ํฉ๋๋ค.
12๊ฐ์ ๊ทธ๋ฆฌ๋ ์ปฌ๋ผ
ํ๋ฉด์ 12๊ฐ์ ์ปฌ๋ผ์ผ๋ก ๋ถํ ํ ์ ์์ผ๋ฉฐ ํ์์ ๋ฐ๋ผ ์ปฌ๋ผ์ ๋ฌถ์ด ๋ ํฐ ํฌ๊ธฐ์ ์ปฌ๋ผ์ผ๋ก ์ฌ์ฉํ ์๋ ์์ต๋๋ค.
๊ทธ๋ฆฌ๋ ์๋ ์๋ฆฌ
- ๊ทธ๋ฆฌ๋๋ ์ฌ์ฏ ๊ฐ์ ๋ฐ์ํ ์ค๋จ์ ๋ณ๋ก ์ปจํ
์ด๋ ๋ฐ ์ด ํฌ๊ธฐ ๋ฐ ๋์์ ์ ์ดํ ์ ์์ต๋๋ค.
(์: .col-sm-4๋ sm, md, lg, xl, xxl์ ์ ์ฉ๋จ) - ์ปจํ
์ด๋๋ ์ฝํ
์ธ ๋ฅผ ์ค์์ ๋๊ณ ๊ฐ๋ก๋ก ์ฑ์๋๋ค.
๋ฐ์ํ ํฝ์ ๋๋น์๋ .container๋ฅผ,
๋ชจ๋ ๋ทฐํฌํธ ๋ฐ ๋๋ฐ์ด์ค์์ width: 100%์๋ .container-fluid๋ฅผ,
์ ๋ ๋ฐ ํฝ์ ํญ์ ์กฐํฉ์๋ ๋ฐ์ํ ์ปจํ ์ด๋ (์: .container-md)๋ฅผ ์ฌ์ฉํฉ๋๋ค. - ํ์ ์ด์ ๋ํผ์
๋๋ค.
๊ฐ ์ด์๋ ์ด ์ฌ์ด์ ๊ณต๊ฐ์ ์ ์ดํ๊ธฐ ์ํ ์ํ padding (Gutters ๋ผ๊ณ ํจ)์ด ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ด padding์ ์ฌ๋ฐฑ์ด ๋ง์ด๋์ค์ธ ํ์์ ์์๋์ด ์ด์ ์ฝํ ์ธ ๊ฐ ์ข์ธก ํ๋จ์ผ๋ก ์๊ฐ์ ์ผ๋ก ์ ๋ ฌ๋๋๋ก ํฉ๋๋ค. ๋ํ ํ์ ์ด ํฌ๊ธฐ๋ฅผ ๊ท ์ผํ๊ฒ ์ ์ฉํ๊ณ ๊ฑฐํฐ ํด๋์ค๋ฅผ ํตํด ์ฝํ ์ธ ์ ๊ฐ๊ฒฉ์ ๋ณ๊ฒฝํ๋ ์์ ์ ํด๋์ค๋ฅผ ์ง์ํฉ๋๋ค. - ์ด์ ๋งค์ฐ ์ ์ฐํฉ๋๋ค.
ํ ๋น 12๊ฐ์ ํ ํ๋ฆฟ ์ด์ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก ์ฌ๋ฌ ์ด์ ๊ฑธ์ณ ์๋ ๋ค์ํ ์์ ์กฐํฉ์ ๋ง๋ค ์ ์์ต๋๋ค.
์ด ํด๋์ค๋ ํ์ฅํ ํ ํ๋ฆฟ ์ด์ ์๋ฅผ ๋ํ๋ ๋๋ค (์: col-4๋ 4๊ฐ ํ์ฅ).
width๋ ๋ฐฑ๋ถ์จ๋ก ์ค์ ๋๋ฏ๋ก ํญ์ ์๋์ ์ธ ํฌ๊ธฐ๊ฐ ๋์ผํฉ๋๋ค. - ๊ฑฐํฐ๋ ๋ฐ์ํ์ด๊ณ ์ฌ์ฉ์ ์ ์๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
๊ฑฐํฐ ํด๋์ค๋ ๋ชจ๋ ์ค๋จ์ ์์ ์ฌ์ฉํ ์ ์๊ณ , ๋ง์ง ๋ฐ ํจ๋ฉ ๊ฐ๊ฒฉ๊ณผ ๊ฐ์ ํฌ๊ธฐ์ ๋๋ค.
์ํ ๊ฑฐํฐ๋ .gx-* ํด๋์ค๋ก, ์์ง ๊ฑฐํฐ๋ .gy-*๋ก, ๋ชจ๋ ๊ฑฐํฐ๋ g-* ํด๋์ค๋ก ๋ณ๊ฒฝํ์ธ์.
.g-0์ ๊ฑฐํฐ๋ฅผ ์ ๊ฑฐํ๋ ๋ฐ์ ์ฌ์ฉํ ์๋ ์์ต๋๋ค. - Sass ๋ณ์, ๋งต, ๋ฏน์ค์ธ์ ๊ทธ๋ฆฌ๋๋ฅผ ๊ตฌ๋ํฉ๋๋ค.
Bootstrap์์ ๋ฏธ๋ฆฌ ์ ์๋ ๊ทธ๋ฆฌ๋ ํด๋์ค๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ ค๋ฉด ๊ทธ๋ฆฌ๋์ Sass ์์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ถ๊ฐ์ ์ธ ์๋ฉํฑ ๋งํฌ์ ์ผ๋ก ์ง์ ์์ฑํ ์ ์์ต๋๋ค.
๋ํ ๋ ํฐ ์ ์ฐ์ฑ์ ์ํด ์ด๋ฌํ Sass ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ์ผ๋ถ CSS ์ฌ์ฉ์ ์ ์ ์์ฑ๋ ํฌํจํฉ๋๋ค.
๊ทธ๋ฆฌ๋ ๋ฐ์ํ ํ๋ฉด ํฌ๊ธฐ
Bootstrap์ ๊ทธ๋ฆฌ๋ ์์คํ ์ 6๊ฐ์ ๊ธฐ๋ณธ ์ค๋จ์ ๊ณผ ์ฌ์ฉ์ ์ ์ํ ๋ชจ๋ ์ค๋จ์ ์ ๊ฑธ์ณ ์ ์ํ ์ ์์ต๋๋ค. 6๊ฐ์ ๊ธฐ๋ณธ ๊ทธ๋ฆฌ๋ ๊ณ์ธต์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- Extra small (xs)
- Small (sm)
- Medium (md)
- Large (lg)
- Extra large (xl)
- Extra extra large (xxl)
์์์ ์ธ๊ธํ๋ฏ์ด ์ด๋ฌํ ๊ฐ ์ค๋จ์ ์๋ ๊ณ ์ ํ ์ปจํ ์ด๋, ๊ณ ์ ํ ํด๋์ค ์ ๋์ฌ, ์์ ์๊ฐ ์์ต๋๋ค. ๋ค์์ ์ด๋ฌํ ์ค๋จ์ ์์ ๊ทธ๋ฆฌ๋๊ฐ ๋ณ๊ฒฝ๋๋ ๋ฐฉ์์ ๋๋ค:
๋ถํธ์คํธ๋ฉ ๊ทธ๋ฆฌ๋ ์ฌ์ฉ ๋ฌธ๋ฒ
๋ ์ด์์ ์์คํ
Equal-width
๊ฐ ์ค๋จ์ ์ ๋ํด ๋จ์ ์๋ ํด๋์ค๋ฅผ ์ํ๋ ์๋งํผ ์ถ๊ฐํ๋ฉด ๋ชจ๋ ์ด์ ๋๋น๊ฐ ๋์ผํ๊ณ ์๋์ผ๋ก ๋๋ ค์ง๋๋ค.
<div class="container">
<div class="row">
<div class="col">
1 of 2
</div>
<div class="col">
2 of 2
</div>
</div>
<div class="row">
<div class="col">
1 of 3
</div>
<div class="col">
2 of 3
</div>
<div class="col">
3 of 3
</div>
</div>
</div>
ํ ์ด์ ๋๋น ์ค์
.col-4 ๊ฐ์ด ๋ช ์์ ์ธ ๊ธธ์ด ๋ฒํธ๋ฅผ ์ฃผ๋ฉด, ๊ณ ์ ๊ธธ์ด๋ฅผ ๊ฐ๊ฒ ๋ฉ๋๋ค.
col-4 ๊ฐ 3๊ฐ ์์ต๋๋ค. ์ฆ 12๊ฐ์ ์ปฌ๋ผ์ 12/4์ ํฌ๊ธฐ๋ก 3๊ฐ๋ก ๋๋ ์ ๋ถ๋ฐฐํ๋ค๋ ๋ป์ ๋๋ค.
<div class="row">
<div class="col-4" style="background-color: red">A</div>
<div class="col-4" style="background-color: yellow">B</div>
<div class="col-4" style="background-color: blue">C</div>
</div>
๋ง์ฝ ์ค๊ฐ ๊ฐ์ ์ด๋ ๊ฒ ๋ฐ๊พธ๋ฉด, ์ดํฉ ๊ฐฏ์ 12๋ ๋ณํ์ง์์ง๋ง, ๋ถํผ๊ฐ ๋ณํ๊ฒ ๋ฉ๋๋ค.
<div class="col-5" style="background-color: red">A</div>
<div class="col-2" style="background-color: yellow">B</div>
<div class="col-5" style="background-color: blue">C</div>
๋ง์ผ 5๋ฅผ 3์ผ๋ก ๋ฐ๊ฟ ์ด ํฉ์ด์ด 10์ด ๋๋ฉด, ๋์ด ์งค๋ฆฌ๊ฒ ๋ฉ๋๋ค.
์๋ํ๋ฉด ์ด ๊ฐ๋ก๋ 12์ธ๋ฐ 10๋ง ๊ตฌํํ๊ธฐ ๋๋ฌธ์ด์ฃ .
<div class="col-5" style="background-color: red">A</div>
<div class="col-2" style="background-color: yellow">B</div>
<div class="col-3" style="background-color: blue">C</div>
๊ฐ๋ณ ๋๋น ์ฝํ ์ธ
col-{breakpoint}-auto ํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ฝํ ์ธ ์ ์์ฐ์ค๋ฌ์ด ๋๋น์ ๋ฐ๋ผ ์ด์ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํฉ๋๋ค.
<div class="container">
<div class="row justify-content-md-center">
<div class="col col-lg-2">
1 of 3
</div>
<div class="col-md-auto">
Variable width content
</div>
<div class="col col-lg-2">
3 of 3
</div>
</div>
<div class="row">
<div class="col">
1 of 3
</div>
<div class="col-md-auto">
Variable width content
</div>
<div class="col col-lg-2">
3 of 3
</div>
</div>
</div>
๋ฐ์ํ ์์คํ
๋ถํธ์คํธ๋ฉ์ ๊ทธ๋ฆฌ๋ ์์คํ ์ ํ๋ฉดํฌ๊ธฐ์ ๋ฐ๋ผ ์ฌ์ฉํ ์ ์๋ 5๊ฐ์ ์ต์ ์ ์ ๊ณตํฉ๋๋ค.
.col- (extra small devices - ํ๋ฉดํฌ๊ธฐ < 576px)
.col-sm- (small devices - ํ๋ฉดํฌ๊ธฐ ≥ 576px)
.col-md- (medium devices - ํ๋ฉดํฌ๊ธฐ ≥ 768px)
.col-lg- (large devices - ํ๋ฉดํฌ๊ธฐ ≥ 992px)
.col-xl- (xlarge devices - ํ๋ฉดํฌ๊ธฐ ≥ 1200px)
row ์ col-*-* ํด๋์ค๋ฅผ ์ฌ์ฉํด ํ๋ฉดํฌ๊ธฐ์ ๋ฐ๋ฅธ ์ปฌ๋ผ๊ณผ ๋ก์ฐ๋ฅผ ์ง์ ํ๊ณ ๋ถ๊ฐ์ ์ธ ์ ํธ๋ฆฌํฐ ํด๋์ค๋ก ์กฐ์ ํด ๋๊ฐ๋ ๋ฐฉ์ ์ ๋๋ค.
col-sm-1 //sm ์ฌ์ด์ฆ์ 1์ปฌ๋ผ ํฌ๊ธฐ
col-md-2 //md ์ฌ์ด์ฆ์ 2์ปฌ๋ผ ํฌ๊ธฐ
์ค๊ฐ์ sm๊ณผ md๋ ๋ฏธ๋์ด์ฟผ๋ฆฌ ๊ด๋ จ ํค์๋์ ๋๋ค.
col-md-2 ๋ฅผ ํด์ํ์๋ฉด,
๋ง์ผ ๋ธ๋ผ์ฐ์ ์ ๊ฐ๋ก๊ธธ์ด๊ฐ md(๋ฏธ๋์ ์ฌ์ด์ฆ. ๋ถํธ์คํธ๋ฉ์์ ์ ์ํด๋์, 768px ๊ธฐ์ค)๋ณด๋ค ํฌ๋ฉด 2๊ฐ ํฌ๊ธฐ๋ก ๋ํ๋ด๊ณ , ๊ทธ๋ณด๋ค ์์ผ๋ฉด 1ํ์ผ๋ก ๋ํ๋ด๋ผ ๋ผ๋ ๋ง์ ๋๋ค.
๋ธ๋ผ์ฐ์ ์ ๊ธธ์ด๊ฐ sm(576px) ๋ณด๋ค ์์ผ๋ฉด 1์ค๋ก ํํํฉ๋๋ค.
<div class="container">
<div class="row">
<div class="col-sm-8">col-sm-8</div>
<div class="col-sm-4">col-sm-4</div>
</div>
<div class="row">
<div class="col-sm">col-sm</div>
<div class="col-sm">col-sm</div>
<div class="col-sm">col-sm</div>
</div>
</div>
ํด๋์ค ์กฐํฉ
์ด์ด ์ผ๋ถ ๊ทธ๋ฆฌ๋ ๊ณ์ธต์ ์์ด๋ ๊ฒ์ ์ํ์ง ์์ผ์๋์?
ํ์์ ๋ฐ๋ผ ๊ฐ ๊ณ์ธต์ ๋ํด ์๋ก ๋ค๋ฅธ ํด๋์ค๋ฅผ ์กฐํฉํ์ฌ ์ฌ์ฉํ์ธ์.
col-6 col-md-4 ๋ผ๋ ๋ป์,
๋ธ๋ผ์ฐ์ ๊ธธ์ด๊ฐ md(768px)๋ณด๋ค ๊ธธ๊ฒฝ์ฐ์๋, 4์ ํฌ๊ธฐ๋ก ํํํ๋ค,
768px๋ณด๋ค ์์์ง๋ฉด, ํ์ค๋ก ํํํ๋(block์์) ๊ทธ ๊ธธ์ด๋ฅผ 6์ผ๋ก ๊ฐ์ ๊ณ ์ ์ํค๋ผ๋ ๋ง์ ๋๋ค.
๋ฐ๋ผ์ ๊ทธ๋ฆฌ๋ ๊ณ์ธต์ด ์ ๋ฐฉํ๋ ฌ์ด ๋์ง์๊ณ , ๋ฐ๋ก๋ฐ๋ก ๋๊ธฐ๋ ํจ๊ณผ๋ฅผ ์ป์ ์ ์๊ฒ ๋ฉ๋๋ค.
<div class="container">
<!-- Stack the columns on mobile by making one full-width and the other half-width -->
<div class="row">
<div class="col-md-8">.col-md-8</div>
<div class="col-6 col-md-4">.col-6 .col-md-4</div>
</div>
<!-- Columns start at 50% wide on mobile and bump up to 33.3% wide on desktop -->
<div class="row">
<div class="col-6 col-md-4">.col-6 .col-md-4</div>
<div class="col-6 col-md-4">.col-6 .col-md-4</div>
<div class="col-6 col-md-4">.col-6 .col-md-4</div>
</div>
<!-- Columns are always 50% wide, on mobile and desktop -->
<div class="row">
<div class="col-6">.col-6</div>
<div class="col-6">.col-6</div>
</div>
</div>
์์ ์์ ๊ฐ ๊ฐ์๊ธฐ ๋์ด๋๊ฐ ๋๋ค๊ณ ๋๊ปด์ง์๋ค๋ฉด, ์ด๊ฑธ ๋ณด์ธ์.
์ ๋ง ๊ฐ๋จํ๊ฒ ์๊ฐํ์๋ฉด ๋ฉ๋๋ค.
col-md-6 col-lg-4
md์ฌ์ด์ฆ ๋ณด๋ค ํฌ๋ฉด 6, lg์ฌ์ด์ฆ๋ณด๋ค ํฌ๋ฉด 4, ๋๋ค๋ณด๋ค ์์ผ๋ฉด ํ์ค ๋~
<div class="row">
<div class="col-md-6 col-lg-4 bg-success">1</div> <!-- ์ด๋ก -->
<div class="col-md-5 col-lg-4 bg-dark">2</div> <!-- ๊ฒ์ -->
<div class="col-md-1 col-lg-4 bg-danger">3</div> <!-- ๋นจ๊ฐ -->
</div>
ํ๋ ฌ
๋ฐ์ํ .row-cols-* ํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ด ์๋ฅผ ์ค์ ํ์ธ์.
์๋๋ ํํ์ผ๋ก 4๊ฐ์ Column์ด ์ด๋ฌ์ ์ญ ๋์์ผ ํ์ง๋ง, .row-cols-2 ๋ก ์ธํด ๊ฐ์ ๋ก ํ์ค์๋ 2์ค๋ก๋ง ํํํ๊ฒ ๋์ ๋์ค์ด ์๊ธฐ๊ฒ ๋ฉ๋๋ค.
<div class="container">
<div class="row row-cols-2">
<div class="col">Column</div>
<div class="col">Column</div>
<div class="col">Column</div>
<div class="col">Column</div>
</div>
</div>
<div class="container">
<div class="row row-cols-3">
<div class="col">Column</div>
<div class="col">Column</div>
<div class="col">Column</div>
<div class="col">Column</div>
</div>
</div>
.row-cols-auto๋ฅผ ์ฌ์ฉํ๋ฉด ์ด์ ์์ฐ์ค๋ฌ์ด ๋๋น๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค.
<div class="container">
<div class="row row-cols-auto">
<div class="col">Column</div>
<div class="col">Column</div>
<div class="col">Column</div>
<div class="col">Column</div>
</div>
</div>
<div class="container">
<div class="row row-cols-1 row-cols-sm-2 row-cols-md-4">
<div class="col">Column</div>
<div class="col">Column</div>
<div class="col">Column</div>
<div class="col">Column</div>
</div>
</div>
์ค์ฒฉ
๊ธฐ๋ณธ ๊ทธ๋ฆฌ๋๋ก ์ฝํ ์ธ ๋ฅผ ์ค์ฒฉํ๋ ค๋ฉด ๊ธฐ์กด .col-sm-* ์ด ๋ด์ ์๋ก์ด .row์ .col-sm-* ์ด ์ธํธ๋ฅผ ์ถ๊ฐํ์ธ์.
์ค์ฒฉ๋ ํ์๋ ์ต๋ 12๊ฐ ์ดํ์ ์ด์ ์ถ๊ฐํ๋ ์ด ์งํฉ์ด ํฌํจ๋์ด์ผ ํฉ๋๋ค (์ฌ์ฉ ๊ฐ๋ฅํ ์ด 12๊ฐ๋ฅผ ๋ชจ๋ ์ฌ์ฉํ ํ์๋ ์์).
<div class="container">
<div class="row">
<div class="col-sm-3">
Level 1: .col-sm-3
</div>
<div class="col-sm-9">
<div class="row">
<div class="col-8 col-sm-6">
Level 2: .col-8 .col-sm-6
</div>
<div class="col-4 col-sm-6">
Level 2: .col-4 .col-sm-6
</div>
</div>
</div>
</div>
</div>