Front-End/CSS

CSS ์†์„ฑ Part 02.

๐ŸŒณ์ง€ํ˜œ์˜ ์ˆฒ 2022. 9. 21. 00:20

๋ฐฐ์น˜

position

โ–ถ ์š”์†Œ์˜ ์œ„์น˜ ์ง€์ •

<div class="container">
    <div class="item">1</div>
    <div class="item">2</div>
    <div class="item">3</div>
</div>
.container {
    width: 300px;
    background-color: royalblue;
    position: relative;
}

.container .item {
    border: 4px dashed red;
    background-color: orange;
}

.container .item:nth-child(1) {
    width: 100px;
    height: 100px;
}

.container .item:nth-child(2) {
    width: 140px;
    height: 70px;
    powition: absolute;
    right: 10px;
    bottom: 10px;
}

.container .item:nth-child(3) {
    width: 70px;
    height: 120px;
}

- static: ๊ธฐ๋ณธ๊ฐ’(์š”์†Œ์— ์ด๋ฏธ ๋“ค์–ด์žˆ๋Š” ์†์„ฑ์˜ ๊ฐ’). ๊ธฐ์ค€ ์—†์Œ

- relative: ์š”์†Œ ์ž์‹ ์„ ๊ธฐ์ค€

- absolute: ์œ„์น˜ ์ƒ ๋ถ€๋ชจ ์š”์†Œ๋ฅผ ๊ธฐ์ค€. ๋ถ€๋ชจ ์š”์†Œ๋ฅผ ๊ผญ ํ™•์ธํ•ด์•ผ ํ•จ. (relative)

- fixed: ๋ทฐ ํฌํŠธ(๋ธŒ๋ผ์šฐ์ €๋ฅผ ๊ธฐ์ค€)

- sticky: ์Šคํฌ๋กค ์˜์—ญ ๊ธฐ์ค€

position๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•˜๋Š” CSS์†์„ฑ. ๋ชจ๋‘ ์Œ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์š”์†Œ์˜ ๊ฐ ๋ฐฉํ–ฅ๋ณ„ ๊ฑฐ๋ฆฌ ์ง€์ •
- top
- bottom
- left
- right
- z-index

 

์š”์†Œ์˜ display๊ฐ€ ๋ณ€๊ฒฝ๋จ

- position ์†์„ฑ ๊ฐ’์œผ๋กœ absolute, fixed ๊ฐ€ ์ง€์ •๋œ ์š”์†Œ๋Š”, display์†์„ฑ์ด block์œผ๋กœ ๋ณ€๊ฒฝ๋จ. (relative X)

<span>123</span>
/* ์ธ๋ผ์ธ ์†์„ฑ์€ ๋„ˆ๋น„๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์—†์œผ๋‚˜, position ๊ฐ’์„ ๋ถ€์—ฌํ•˜๋ฉด ๋„ˆ๋น„๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค. */
span {
    width: 100px;
    height: 100px;
    background: orange;
    font-size: 40px;
    position: absolute;
}

 

 

์š”์†Œ ์Œ“์ž„ ์ˆœ์„œ(Stack order)

โ–ถ ์–ด๋–ค ์š”์†Œ๊ฐ€ ์‚ฌ์šฉ์ž์™€ ๋” ๊ฐ€๊น๊ฒŒ ์žˆ๋Š”์ง€(์œ„์— ์Œ“์ด๋Š”์ง€) ๊ฒฐ์ •

  1. ์š”์†Œ์— position ์†์„ฑ์˜ ๊ฐ’์ด ์žˆ๋Š” ๊ฒฝ์šฐ(relative, absolute, fixed, sticky) ์œ„์— ์Œ“์ž„. (๊ธฐ๋ณธ๊ฐ’ static ์ œ์™ธ)
  2. 1๋ฒˆ ์กฐ๊ฑด์ด ๊ฐ™์€ ๊ฒฝ์šฐ, z-index ์†์„ฑ์˜ ์ˆซ์ž ๊ฐ’์ด ๋†’์„ ์ˆ˜๋ก ์œ„์— ์Œ“์ž„.
  3. 1๋ฒˆ๊ณผ 2๋ฒˆ ์กฐ๊ฑด๊นŒ์ง€ ๊ฐ™์€ ๊ฒฝ์šฐ, HTML์˜ ๋งˆ์ง€๋ง‰ ๊ตฌ์กฐ์ผ ์ˆ˜๋ก ์œ„์— ์Œ“์ž„.
์ฆ‰, HTML ๋งˆ์ง€๋ง‰ ๊ตฌ์กฐ > z-index > position ์ˆœ์œผ๋กœ ์œ„์— ์Œ“์ž„. z-index๋กœ ์กฐ์ ˆ ๊ฐ€๋Šฅ

 

 

z-index

โ–ถ ์š”์†Œ์˜ ์Œ“์ž„ ์ •๋„๋ฅผ ์ง€์ •

- auto: ๊ธฐ๋ณธ๊ฐ’(์š”์†Œ์— ์ด๋ฏธ ๋“ค์–ด์žˆ๋Š” ์†์„ฑ์˜ ๊ฐ’). ๋ถ€๋ชจ ์š”์†Œ์™€ ๋™์ผํ•œ ์Œ“์ž„ ์ •๋„

- ์ˆซ์ž: ์ˆซ์ž๊ฐ€ ๋†’์„์ˆ˜๋ก ์œ„์— ์Œ“์ž„(์ˆซ์ž๊ฐ€ ๋„ˆ๋ฌด ์ปค์ง€์ง€ ์•Š๋„๋ก ์ฃผ์˜ !! ex) z-index: 999;)

 

 

 

๋ฐฐ์น˜

์ถœ๋ ฅ ํŠน์„ฑ (display)

โ–ถ ์š”์†Œ์˜ ํ™”๋ฉด ์ถœ๋ ฅ(๋ณด์—ฌ์ง) ํŠน์„ฑ

<span>Hello world!</span>
body {
	margin: 20px;
}

span {
	/* spanํƒœ๊ทธ๋Š” ๊ฐ€๋กœ, ์„ธ๋กœ ๊ฐ’์„ ๊ฐ€์งˆ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— display: block;์„ ์ค€๋‹ค. */
    display: block;
    width: 120px;
    height: 30px;
    background-color: royalblue;
    color: #fff;
}

 

 

flex(์ •๋ ฌ)

<div class="container">
    <div class="item">1</div>
    <div class="item">2</div>
    <div class="item">3</div>
</div>
.container {
    display: flex; /* Flex container */
    flex-direction: row; /* ์™ผ์ชฝ๋ถ€ํ„ฐ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ˆ˜ํ‰์œผ๋กœ ์ •๋ ฌ๋œ๋‹ค. */
    flex-direction: row-reverse; /* ์˜ค๋ฅธ์ชฝ๋ถ€ํ„ฐ ์™ผ์ชฝ์œผ๋กœ ์ˆ˜ํ‰์œผ๋กœ ์ •๋ ฌ๋œ๋‹ค. */
}
.container {
    display: flex;
    flex-direction: column; /* ์œ„์—์„œ ์•„๋ž˜๋กœ ์ˆ˜์ง ์ •๋ ฌ */
    flex-direction: column-reverse; /* ์•„๋ž˜์—์„œ ์œ„๋กœ ์ˆ˜์ง ์ •๋ ฌ */
}

 

flex-wrap

โ–ถ Flex Items ๋ฌถ์Œ(์ค„ ๋ฐ”๊ฟˆ) ์—ฌ๋ถ€

/* ํ™”๋ฉด์ด ์ž‘์•„์ ธ์„œ ์ž์‹์š”์†Œ์ธ .item์ด ๋„˜์น˜๋ฉด ์ž๋™์œผ๋กœ ์•„๋ž˜๋กœ ๋‚ด๋ ค๊ฐ„๋‹ค. */
.container {
    display: flex;
    flex-wrap: wrap;
}

.container .item {
    width: 100px;
    height: 100px;
}

- nowrap: ๊ธฐ๋ณธ๊ฐ’(์š”์†Œ์— ์ด๋ฏธ ๋“ค์–ด์žˆ๋Š” ์†์„ฑ์˜ ๊ฐ’). ๋ฌถ์Œ(์ค„ ๋ฐ”๊ฟˆ)์—†์Œ

- wrap: ์—ฌ๋Ÿฌ ์ค„๋กœ ๋ฌถ์Œ

- wrap-reverse: wrap์˜ ๋ฐ˜๋Œ€ ๋ฐฉํ–ฅ์œผ๋กœ ๋ฌถ์Œ

 

 

justify-content

โ–ถ ์ฃผ ์ถ•์˜ ์ •๋ ฌ ๋ฐฉ๋ฒ•. ์ผ๋ฐ˜์ ์ธ ๊ฐ€๋กœ ์ •๋ ฌ

- flex-start: ๊ธฐ๋ณธ๊ฐ’(์š”์†Œ์— ์ด๋ฏธ ๋“ค์–ด์žˆ๋Š” ์†์„ฑ์˜ ๊ฐ’). Flex Items๋ฅผ ์‹œ์ž‘์ ์œผ๋กœ ์ •๋ ฌ

- flex-end: Flex Items๋ฅผ ๋์ ์œผ๋กœ ์ •๋ ฌ

- center: Flex Items๋ฅผ ๊ฐ€์šด๋ฐ ์ •๋ ฌ

- space-between: ๊ฐ Flex Item ์‚ฌ์ด๋ฅผ ๊ท ๋“ฑํ•˜๊ฒŒ ์ •๋ ฌ

- space-arount: ๊ฐ Flex Item์˜ ์™ธ๋ถ€ ์—ฌ๋ฐฑ์„ ๊ท ๋“ฑํ•˜๊ฒŒ ์ •๋ ฌ

 

 

align-content

โ–ถ ๊ต์ฐจ ์ถ•์˜ ์—ฌ๋Ÿฌ ์ค„ ์ •๋ ฌ ๋ฐฉ๋ฒ•, ๋ฐ•์Šค๊ฐ€ ๋‘ ์ค„ ์ด์ƒ์ด์–ด์•ผ ํ•œ๋‹ค.

- stretch: ๊ธฐ๋ณธ๊ฐ’(์š”์†Œ์— ์ด๋ฏธ ๋“ค์–ด์žˆ๋Š” ์†์„ฑ์˜ ๊ฐ’). Flex Items๋ฅผ ์‹œ์ž‘์ ์œผ๋กœ ์ •๋ ฌ

- flex-start: Flex Items๋ฅผ ์‹œ์ž‘์ ์œผ๋กœ ์ •๋ ฌ (์„ธ๋กœ์ •๋ ฌ)

- flex-end: Flex Items๋ฅผ ๋์ ์œผ๋กœ ์ •๋ ฌ (์„ธ๋กœ์ •๋ ฌ)

- center: Flex Items๋ฅผ ๊ฐ€์šด๋ฐ ์ •๋ ฌ (์„ธ๋กœ์ •๋ ฌ)

- space-between: ๊ฐ Flex Item ์‚ฌ์ด๋ฅผ ๊ท ๋“ฑํ•˜๊ฒŒ ์ •๋ ฌ

- space-around: ๊ฐ Flex Item์˜ ์™ธ๋ถ€ ์—ฌ๋ฐฑ์„ ๊ท ๋“ฑํ•˜๊ฒŒ ์ •๋ ฌ

 

 

align-items

โ–ถ ๊ต์ฐจ ์ถ•์˜ ํ•œ ์ค„ ์ •๋ ฌ ๋ฐฉ๋ฒ•. ์ผ๋ฐ˜์ ์ธ ์ˆ˜์ง ์ •๋ ฌ

.container {
    width: 500px;
    height: 300px;
    background-color: royalblue;
    display: flex;
    justify-content: center;
    align-items: center;
}

.container .item {
    width: 100px;
    height: 100px;
    border: 3px dashed red;
    background-color: orange;
    flex-grow: 1;
    flex-basis: 0;
}

.container .item(3) {
	flex-grow: 2;
}

- stretch: ๊ธฐ๋ณธ๊ฐ’(์š”์†Œ์— ์ด๋ฏธ ๋“ค์–ด์žˆ๋Š” ์†์„ฑ์˜ ๊ฐ’). Flex Items๋ฅผ ๊ต์ฐจ ์ถ•์œผ๋กœ ๋Š˜๋ฆผ

- flex-start: Flex Items๋ฅผ ๊ฐ ์ค„์˜ ์‹œ์ž‘์ ์œผ๋กœ ์ •๋ ฌ

- flex-end: Flex Items๋ฅผ ๊ฐ ์ค„์˜ ๋์ ์œผ๋กœ ์ •๋ ฌ

- center: Flex Items๋ฅผ ๊ฐ ์ค„์˜ ๊ฐ€์šด๋ฐ ์ •๋ ฌ

- baseline: Flex Items๋ฅผ ๊ฐ ์ค„์˜ ๋ฌธ์ž ๊ธฐ์ค€์„ ์— ์ •๋ ฌ

 

 

order

โ–ถ Flex Item์˜ ์ˆœ์„œ

- 0: ๊ธฐ๋ณธ๊ฐ’(์š”์†Œ์— ์ด๋ฏธ ๋“ค์–ด์žˆ๋Š” ์†์„ฑ์˜ ๊ฐ’). ์ˆœ์„œ ์—†์Œ

- ์ˆซ์ž: ์ˆซ์ž๊ฐ€ ์ž‘์„ ์ˆ˜๋ก ๋จผ์ €

 

 

flex-grow

โ–ถ Flex Item์˜ ์ฆ๊ฐ€ ๋„ˆ๋น„ ๋น„์œจ

- 0: ๊ธฐ๋ณธ๊ฐ’(์š”์†Œ์— ์ด๋ฏธ ๋“ค์–ด์žˆ๋Š” ์†์„ฑ์˜ ๊ฐ’). ์ฆ๊ธฐ ๋น„์œจ ์—†์Œ

- ์ˆซ์ž: ์ฆ๊ฐ€ ๋น„์œจ

flex-basis์™€ ํ•จ๊ป˜ ์“ด๋‹ค.

 

 

flex-shrink

โ–ถ Flex Item์˜ ๊ฐ์†Œ ๋„ˆ๋น„ ๋น„์œจ

- 1: ๊ธฐ๋ณธ๊ฐ’(์š”์†Œ์— ์ด๋ฏธ ๋“ค์–ด์žˆ๋Š” ์†์„ฑ์˜ ๊ฐ’). Flex Container ๋„ˆ๋น„์— ๋”ฐ๋ผ ๊ฐ์†Œ ๋น„์œจ ์ ์šฉ

- ์ˆซ์ž: ๊ฐ์†Œ ๋น„์œจ

- ์ด ๊ธฐ๋Šฅ์„ ํ•ด์ œํ•˜๊ณ  ์‹ถ์œผ๋ฉด flex-shirink:0;์„ ํ•˜๋ฉด ๋œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ค„์–ด๋“ค๋ฉด์„œ ์ด๋ฏธ์ง€๋‚˜ ํ…์ŠคํŠธ๊ฐ€ ์ค„์–ด๋“ค๋ฉฐ ๋ ˆ์ด์•„์›ƒ์ด ๋ง๊ฐ€์ง€๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋Š”๋ฐ ๋ง๊ฐ€์ง€์ง€ ์•Š์•˜์œผ๋ฉด ํ•˜๋Š” display: flex;์˜ ์ž์‹์š”์†Œ์— flex-shrink: 0; ๋ฅผ ์ฃผ์–ด ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ค„์–ด๋“ค์–ด๋„ ๋ ˆ์ด์•„์›ƒ์ด ๋ฌด๋„ˆ์ง€์ง€ ์•Š๋„๋ก ๊ณ ์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์ž์ฃผ ์‚ฌ์šฉ๋œ๋‹ค.

 

 

flex-basis

โ–ถ Flex Item์˜ ๊ณต๊ฐ„ ๋ฐฐ๋ถ„ ์ „ ๊ธฐ๋ณธ ๋„ˆ๋น„

- auto: ์š”์†Œ์˜ Content ๋„ˆ๋น„ ์ฐธ๊ณ  ํ•˜์—ฌ flex-grow๋น„์œจ์„ ์ •ํ•จ

- ๋‹จ์œ„: px, em, rem ๋“ฑ ๋‹จ์œ„๋กœ ์ง€์ •

- flex-basis: 0; ์œผ๋กœ ์ง€์ •ํ•˜๋ฉด content์˜ ๊ธฐ๋ณธ ๋„ˆ๋น„๋ฅผ ์ƒ๊ฐํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ท ์ผํ•œ ์ •๋ ฌ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

flex-grow์™€ ํ•จ๊ป˜ ์“ด๋‹ค.