๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

๋…ธ๋งˆ๋“œ์ฝ”๋” ์ฝ”์ฝ”์•„ํ†ก ํด๋ก ์ฝ”๋”ฉ 4์ผ์ฐจ

#3.8 Classes

 

#3.9 Inline Block

 

#3.10 Flexbox Part One

flexbox: box๋ฅผ ์–ด๋””๋“  ์ž์œ ๋กญ๊ฒŒ ๋‘˜ ์ˆ˜ ์žˆ๋‹ค.

์ฐฝ ํฌ๊ธฐ์— ๋”ฐ๋ผ ์ž๋™์ ์œผ๋กœ content์˜ ํฌ๊ธฐ๊ฐ€ ๋ณ€ํ•œ๋‹ค.

 

>>flexbox๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ง€์ผœ์•ผํ•  3๊ฐ€์ง€ ๊ทœ์น™

1. ์ž์‹์—๊ฒŒ๋Š” ๋ช…์‹œํ•˜์ง€ ์•Š๊ณ  ๋ถ€๋ชจ์—๊ฒŒ ๋ช…์‹œํ•˜์—ฌ flex container๋กœ ๋งŒ๋“ ๋‹ค. 

 = ์ž์‹๋“ค์„ ์›€์ง์ด๋ ค๋ฉด ๋ถ€๋ชจ์—๊ฒŒ๋งŒ ๋งํ•˜๋ฉด ๋œ๋‹ค. display: flex;

<style>
 body {
  display: flex;
  justify-content: space-between;
  }
</style>

 

 

2. ์ฃผ์ถ•(main axis)๊ณผ ๊ต์ฐจ์ถ•(cross axis)

flex container๋Š” ๋‘ ๊ฐœ์˜ ์ถ•์„ ๊ฐ–๋Š”๋‹ค.

*์ฃผ์ถ•์€ ๊ธฐ๋ณธ๊ฐ’์ด ์ˆ˜ํ‰, ๊ต์ฐจ์ถ•์€ ์ˆ˜์ง์œผ๋กœ ์„ค์ •๋˜์–ด ์žˆ๋‹ค.

justify-content๋Š” ์ฃผ์ถ•์„ ๋”ฐ๋ผ ์›€์ง์ธ๋‹ค.

align-items๋Š” ๊ต์ฐจ์ถ•์„ ๋”ฐ ์›€์ง์ธ๋‹ค.

 

ex) body๊ฐ€ height์„ ๊ฐ€์ง€์ง€ ์•Š๊ณ  box์˜ ํฌ๊ธฐ ๋งŒํผ๋งŒ ํฌ๋‹ค. (=์ด๋ฏธ ๋งจ ์œ„์•„๋ž˜๋ฅผ ์ฐจ์ง€ํ•˜๊ณ  ์ˆ˜์ง์œผ๋กœ ์ค‘์‹ฌ์ด๋‹ค.?) 

→ align-items๋ฅผ ์„ค์ •ํ•˜๋”๋ผ๋„ ์ ์šฉ์ด ์•ˆ๋œ๋‹ค.

→ body๋ฅผ ์ˆ˜์ง์œผ๋กœ ์›€์ง์ด๊ณ  ์‹ถ์œผ๋ฉด height ๊ฐ’์„ ์„ค์ •. height: 100vh;

vh = viewport height (viewport = screen)

100vh : ํ™”๋ฉด ๋†’์ด์˜ 100%

→ align-items๊ฐ€ ์ ์šฉ๋˜์–ด ์ˆ˜์ง์œผ๋กœ ์ด๋™ํ•œ๋‹ค.

 

#3.11 Flexbox Part Two

์ฃผ์ถ•๊ณผ ๊ต์ฐจ์ถ•์˜ ๋””ํดํŠธ๋กœ ์„ค์ •๋˜์–ด ์žˆ๋Š” ์ˆ˜์ง, ์ˆ˜ํ‰์„ ๋ฐ”๊พธ๊ณ  ์‹ถ์œผ๋ฉด flex-direction์„ ์ˆ˜์ •ํ•œ๋‹ค.

flex-direction์€ ๋‘ ๊ฐ€์ง€ ์˜ต์…˜์ด ์žˆ๋‹ค. : column / row (default)

flex-direction: column; ์„ ์„ค์ •ํ•˜๋ฉด ์ฃผ์ถ•๊ณผ ๊ต์ฐจ์ถ•์ด ๋ฐ˜์ „๋œ๋‹ค. ์ฃผ์ถ•์ด ์ˆ˜์ง, ๊ต์ฐจ์ถ•์ด ์ˆ˜ํ‰

 

<div>์•ˆ์—์„œ ํ…์ŠคํŠธ์˜ ์œ„์น˜๋ฅผ ์›€์ง์ด๊ณ  ์‹ถ์„ ๋•Œ๋Š” div๋ฅผ flex contatiner๋กœ ์„ค์ •ํ•ด์ค€๋‹ค. 

์ด๋ ‡๊ฒŒ ์›ํ•˜๋Š”๋งŒํผ flex ๋ถ€๋ชจ-์ž์‹ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ๋งŒ๋“ค์–ด๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

 

 

#3.12 Fixed

position: ์œ„์น˜๋ฅผ ์•„์ฃผ ์กฐ๊ธˆ์”ฉ ์›€์ง์ด๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์†์„ฑ์ด๋‹ค.

 

position: fixed : ํ™”๋ฉด์„ ์Šคํฌ๋กคํ•ด๋„ ํ•ด๋‹น content๊ฐ€ ๊ณ„์† ์ œ์ž๋ฆฌ์— ์œ„์น˜ํ•œ๋‹ค.

์ด๋ฅผ ์„ค์ •ํ•˜๋ฉด ๊ทธ ์—˜๋ฆฌ๋จผํŠธ๊ฐ€ ๋‹ค๋ฅธ layer์— ์œ„์น˜ํ•˜๋ฉด์„œ layer์˜ ๋งจ ์•ž์ธต์œผ๋กœ ์˜ค๊ณ , ๊ธฐ์กด์˜ ์œ„์น˜์— ๊ณ ์ •๋œ๋‹ค. 

์ด๋•Œ top/ bottom/ left/ right: 00px ์„ ์“ฐ๋ฉด position: fixed ๋กœ ๊ณ ์ •ํ•œ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๊ณณ์œผ๋กœ ์ด๋™์‹œ์ผœ์„œ ๊ทธ๊ณณ์— ๊ณ ์ •ํ•œ๋‹ค.

 

 

#3.13 Relative Absolute

position: static

- ๋ ˆ์ด์•„์›ƒ์ด ๋ฐ•์Šค๋ฅผ ์ฒ˜์Œ ์œ„์น˜ํ•˜๋Š” ๊ณณ์— ๋‘๋Š” ๊ฒƒ

 

position: relative

- ์—˜๋ฆฌ๋จผํŠธ๊ฐ€ ์ฒ˜์Œ ์œ„์น˜ํ•œ ๊ณณ์„ ๊ธฐ์ค€์œผ๋กœ ์ด๋™ํ•œ๋‹ค.

top/ bottom/ left/ right ์„ ์ด์šฉํ•ด ์ฒซ ๊ธฐ์ค€์ ์—์„œ ์ƒํ•˜์ขŒ์šฐ๋กœ ์›€์ง์ธ๋‹ค.

 

position: absolute

- ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด relative ๋ถ€๋ชจ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ด๋™ํ•œ๋‹ค.

absolute๋ฅผ ์ด์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๋ถ€๋ชจ๋„ relative๋กœ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค.

*๋งŒ์•ฝ ๋ถ€๋ชจ ์ค‘์— relativeํ•œ ๊ฒƒ์„ ์ฐพ์ง€ ๋ชปํ•˜๋ฉด body๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์›€์ง์ธ๋‹ค.

 

 

#3.14 Pseudo Selectors part One

pseudo selector: ์กฐ๊ธˆ ๋” ์„ธ๋ถ€์ ์œผ๋กœ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ์„ ํƒํ•ด ์ฃผ๋Š” ๊ฒƒ!

class๋‚˜ id๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์ด๋ ‡๊ฒŒ pseudo selector์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ์ข‹์€ ์ฝ”๋“œ์ด๋‹ค.

 

<style>
	div:nth-child(2){
    	<!--2๋ฒˆ์งธ div-->
	}
	div:nth-child(even){
    	<!--์ง์ˆ˜๋ฒˆ์งธ div-->
	}
	div:nth-child(3n+1){
    	<!--3n+1๋ฒˆ์งธ div(3๊ฐœ์”ฉ ๋ฐ˜๋ณต)-->
	}
</style>

 

 

#3.15 Combinators

1. a b { } → a์˜ ์ž์‹ b

- ์›ํ•˜๋Š” ๋งŒํผ ๋ถ€๋ชจ๋ฅผ ์จ๋„ ์ƒ๊ด€์—†๋‹ค.

<style>
	div p span {
		color: teal;
    	}
</style>
...
<div><p><span>hello!</span></p></div>

 

 

2. a > b { }๋ฐ”๋กœ ๋ฐ‘!! ์ž์‹

 

3. a + b { } → a ๋ฐ”๋กœ ๋‹ค์Œ์— ์˜ค๋Š” ํ˜•์ œ b

 

 

#3.16 Pseudo Selectors part Two

a ~ b { } → ํ˜•์ œ ๊ด€๊ณ„. ํ˜•์ œ์ด์ง€๋งŒ ๋ฐ”๋กœ ๋’ค์— ์˜ค์ง€ ์•Š์„ ๊ฒฝ์šฐ

 

tag[ attribute = "vallue" ]์†์„ฑ์˜ ๊ฐ’์ด "vallue"์ธ ํƒœ๊ทธ๋ฅผ ์„ ํƒ

 

tag[ attribute ~= "vallue" ]์†์„ฑ๊ฐ’์ด "vallue"๋ผ๋Š” ๋‹จ์–ด๋ฅผ ํฌํ•จํ•œ ํƒœ๊ทธ๋ฅผ ์„ ํƒ. ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋œ ๋‹จ์–ด์—๋งŒ ์ ์šฉ

 

tag[ attribute *= "vallue" ]๊ณต๋ฐฑ ์ƒ๊ด€์—†์ด "vallue"๋ฅผ ํฌํ•จํ•œ ํƒœ๊ทธ ์„ ํƒ.

 

๋“ฑ๋“ฑ ๋งŽ์€ attribute selectors๊ฐ€ ์žˆ๋‹ค. mdn์—์„œ ํ™•์ธ

 

 

#3.17 States

  1. active : ํ•ด๋‹น ์š”์†Œ๋ฅผ ๋งˆ์šฐ์Šค๋กœ ํด๋ฆญํ•˜๊ณ  ์žˆ๋Š” ์ƒํƒœ
  2. hover : ๋งˆ์šฐ์Šค ์ปค์„œ๊ฐ€ ๋Œ€์ƒ ์œ„์— ์žˆ์„ ๋•Œ
  3. focus : ๋งˆ์šฐ์Šค๋กœ ํด๋ฆญํ•˜๊ฑฐ๋‚˜ ํ‚ค๋ณด๋“œ๋กœ ์„ ํƒํ–ˆ์„ ๋•Œ (์˜ˆ: tabํ‚ค๋กœ ์„ ํƒ)
  4. visited : ๋ฐฉ๋ฌธํ•œ ๋งํฌ์ธ ๊ฒฝ์šฐ
  5. focus-within : focused๋œ ์ž์‹์„ ๊ฐ€์ง„ ๋ถ€๋ชจ ์—˜๋ฆฌ๋จผํŠธ์˜ ์ƒํƒœ

 

#3.18 Recap

๋ช‡ ๊ฐ€์ง€ pseudo elements

1. ::placeholder 

placeholder์˜ ์Šคํƒ€์ผ์„ ๋ฐ”๊พธ๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

2.  ::selection

ํ…์ŠคํŠธ๋ฅผ selectํ–ˆ์„ ๋•Œ (ํด๋ฆญํ•ด์„œ ๋“œ๋ž˜๊ทธํ–ˆ์„ ๋•Œ) ๋ฐœ์ƒํ•œ๋‹ค.

3. ::first-letter / ::first-line

์ฒซ ๊ธ€์ž / ์ฒซ ์ค„์—๋งŒ ์ ์šฉ๋œ๋‹ค.

 

 

#3.19 Colors and Variables

<์ƒ‰์ƒ ์ฒด๊ณ„>

1. hex code : #fcce00 ๊ณผ ๊ฐ™์€ ํ‘œ๊ธฐ

2. rgb : rgb(252, 206, 0)์™€ ๊ฐ™์€ ํ‘œ๊ธฐ

3. rgba : a๋Š” ํˆฌ๋ช…๋„๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. (alpha; %)

   rgba(223, 203, 0, 0.5) → 0.5๋Š” 50%์˜ ํˆฌ๋ช…๋„๋ฅผ ๊ฐ€์ง„๋‹ค.

 

>>์ฝ”๋“œ๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

์˜ˆ) :root์— ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ์ƒ‰์ƒ์„ ๋ฐ”๊ฟ€ ๋•Œ ํ•˜๋‚˜ํ•˜๋‚˜ ๋‹ค ๋ฐ”๊ฟ€ ํ•„์š” ์—†์ด ๋ณ€์ˆ˜๋งŒ ์ˆ˜์ •ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 * :root๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ๋“  document์˜ ๋ฟŒ๋ฆฌ๊ฐ€ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

<style>
	:root {
		--main-color: #fcce00;
	}
	p {
		background-color: var(--main-color);
	}
	a {
		color: var(--main-color);
	}
</style>

 

๋ณ€์ˆ˜ ์„ค์ •: --๋ณ€์ˆ˜์ด๋ฆ„

* ๋„์–ด์“ฐ๊ธฐ๋Š” dash(-)๋กœ ์ฑ„์šฐ๊ธฐ

๋ณ€์ˆ˜ ์‚ฌ์šฉ: var(--๋ณ€์ˆ˜์ด๋ฆ„)