[๐Ÿฆ TIL 19์ผ์ฐจ] 6์›” 21์ผ

๊ทผ๋“€ยท2023๋…„ 6์›” 21์ผ
0

ํ”„๋ก ํŠธ์—”๋“œ์Šค์ฟจ TIL

๋ชฉ๋ก ๋ณด๊ธฐ
19/30
post-thumbnail

1.Sass ๋ฐ์ดํ„ฐ ํƒ€์ž… ๋ฐ ๋‚ด์žฅ ํ•จ์ˆ˜

๐Ÿ”—์ฐธ๊ณ ์ž๋ฃŒ

๐Ÿ“Œ Sass์˜ data type

  • string ๋ฌธ์ž
  • number ์ˆซ์ž
  • boolean ๋ถˆ๋ฆฐ
  • list ๋ฐฐ์—ด
  • map ๊ฐ์ฒด
  • colors ์ƒ‰์ƒ
  • function ํ•จ์ˆ˜
  • null

๐Ÿ“Œ Sass์˜ ๋‚ด์žฅ ํ•จ์ˆ˜

  • rgb ์ƒ‰์ƒ ๋ชจ๋“ˆ
  • list ๋ฐฐ์—ด ๋ชจ๋“ˆ
$sprites: Book, Board, News, Favorite, Twitter;
  • map ๊ฐ์ฒด ๋ชจ๋“ˆ
$breakpoints: (
  sm: 576px,
  md: 768px,
  lg: 992px,
  xl: 1200px,
  xxl: 1400px,
);
  • math ์ˆซ์ž ๊ณ„์‚ฐ ๋ชจ๋“ˆ
  • string ๋ฌธ์ž ๋ชจ๋“ˆ
  • meta ๋‹ค๋ฅธ ๋ชจ๋“ˆ ํ‰๊ฐ€ ๋ชจ๋“ˆ
  • selecter ์„ ํƒ์ž ํ‰๊ฐ€ ๋ชจ๋“ˆ

๐Ÿ“Œ ๋‚ด์žฅ ํ•จ์ˆ˜ ๋ชจ๋“ˆ ํ˜ธ์ถœ ๋ฐ ์‚ฌ์šฉ๋ฐฉ๋ฒ•

@use 'sass:๋‚ด์žฅ ํ•จ์ˆ˜'; // ๋ชจ๋“ˆ ํ˜ธ์ถœ

{๋„ค์ž„์ŠคํŽ˜์ด์Šค}.ํ•จ์ˆ˜() // ๋ชจ๋“ˆ ์‚ฌ์šฉ
ex) list.nth($fontSize, 3)

2. webCafe main ์˜์—ญ

  • map.has-key

key ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์™€์ฃผ๋Š” ํ•จ์ˆ˜

  • map.get

value ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์™€์ฃผ๋Š” ํ•จ์ˆ˜

.appFooter{
  .address{
    &__telephone{}

    &__link{}
  }
}

//์ปดํŒŒ์ผ ๊ฒฐ๊ณผ
.appFooter
.appFooter .address
.appFooter .address__telephone
.appFooter .address__link

------------------------------------------

.appFooter{
  @at-root .address{
    &__telephone{}

    &__link{}
  }
}

//์ปดํŒŒ์ผ ๊ฒฐ๊ณผ
.appFooter
.address
.address__telephone
.address__link
  • @at-root

    • ํ‘œํ˜„์‹์„ ์ž ๊น root ๋ ˆ๋ฒจ๋กœ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค.
  • @debug

    • ์ปดํŒŒ์ผ ์‹œ ๋””๋ฒ„๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์—ฌ์ค€๋‹ค.
  • $accent-opacity-color: rgba($khaki, 0.85);

    โ†’ rgbํ•จ์ˆ˜ ์•ˆ์— ๋ณ€์ˆ˜๋ฅผ ๋‹ด๋Š” ๊ฒƒ์€ css์—์„œ๋Š” ์•ˆ๋˜๋Š” ๋ฌธ๋ฒ•

    โ†’ rgb() ํ•จ์ˆ˜๋Š” color ๋‚ด์žฅ ํ•จ์ˆ˜ ๋ชจ๋“ˆ

๐Ÿ“Œ @each

  • ์ฃผ์–ด์ง„ ๋ชฉ๋ก ๋‚ด์—์„œ ๋ฐ˜๋ณต์‹œํ‚ฌ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
  • list์™€ map ๋ณ€์ˆ˜์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹๋‹ค.
  • ์ฃผ์–ด์ง„ ๋ชฉ๋ก ๋‚ด์—์„œ ๋ฐ˜๋ณต์‹œํ‚ฌ ๋•Œ ์‚ฌ์šฉ๋ฐฉ๋ฒ• โ†’ @each {ํ˜„์žฌ ์š”์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ด๋ฆ„} in {๋ณ€์ˆ˜ ์ด๋ฆ„}

โœ”๏ธ map ๋ชจ๋“ˆ์•ˆ์—์„œ ๋ฐ˜๋ณตํ•˜๋Š” ๊ตฌ๋ฌธ

$colors: (
  "Book": var.$green,
  "News": var.$yellow,
  "Board": var.$brown,
  "Favorite": var.$orange,
  "Twitter": var.$blue,
);

//$section = $colors์˜ key
//$color = $colors์˜ value
@each $section, $color in $colors {
  .accent#{$section} {
    color: $color;
  }
}
//.accent$colors์˜key๋ผ๋Š” ์„ ํƒ์ž์— color: $color์˜ value๊ฐ’์„ ์ˆœ์„œ๋Œ€๋กœ ๋‹ด์•„์ค˜

โœ”๏ธ list ๋ชจ๋“ˆ์•ˆ์—์„œ ๋ฐ˜๋ณตํ•˜๋Š” ๊ตฌ๋ฌธ

// sprites๋ผ๋Š” ๋ณ€์ˆ˜์— ๋ฆฌ์ŠคํŠธ๋ฅผ ๋‹ด์•„๋†จ๋‹ค.
$sprites: Book, Board, News, Favorite, Twitter;
$x: 0;
$y: 0;

//$sprite = $sprites์˜ list ๊ฐ’
 @each $sprite in $sprites {

//์ƒ์œ„ํ˜ธํ™˜์„ ํƒ์ž+$sprites์˜ list๊ฐ’์˜ ์ด๋ฆ„์„ ๊ฐ€์ง„ ์„ ํƒ์ž๋Š” 
//๋ฐฐ๊ฒฝ ์œ„์น˜๊ฐ€ $x, $y๊ฐ’์„ ๊ฐ€์ง„๋‹ค.
//ํ•œ๋ฒˆ ๋Œ๋•Œ๋งˆ๋‹ค $y๋Š” -115px ๊ฐ’์„ ๊ฐ€์ง„๋‹ค.
   &#{$sprite} {
     background-position: $x $y;
   }
   $y: $y - 115px;
 }

๐Ÿท๏ธ ์ž๊ธฐ์ž์‹ ์ด ์žˆ๋Š” ํด๋”๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ์ž๊ธฐ์ž์‹ ๋„ ๊ณ„์† ๋ถˆ๋Ÿฌ์˜ค๊ฒŒ ๋˜์„œ ๋ฌดํ•œ๋ฃจํ”„๊ฐ€ ๋˜์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ๊ฐ™์€ ํด๋”์•ˆ์— ์žˆ๋Š”๊ฒƒ์€ ํด๋”๊ฐ€ ์•„๋‹Œ ํŒŒ์ผ์ž์ฒด๋ฅผ @use ํ•ด์˜ค๋Š” ๊ฒŒ ์ข‹๋‹ค.

โญ ๋ฒกํ„ฐ ์ด๋ฏธ์ง€๋Š” ํฌ๊ธฐ๊ฐ€ ์•„๋ฌด๋ฆฌ ์ปค์ ธ๋„ ์ด๋ฏธ์ง€๊ฐ€ ๊นจ์ง€์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋–ค ๊ฐ’์„ ์ค˜๋„ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ์ง€ ์•Š๋Š”๋‹ค. ๊ทธ๋ž˜์„œ width: 100%, max-width: 100% ๋‘˜ ๋‹ค ์‚ฌ์šฉํ•ด๋„ ๋ฌธ์ œ๊ฐ€ ์—†์ง€๋งŒ max-width๊ฐ’์€ ๊ถŒ์žฅ๋˜์ง€ ์•Š๋Š”๋‹ค. ํ•˜์ง€๋งŒ, ๋ ˆ์Šคํ„ฐ ์ด๋ฏธ์ง€(๋น„ํŠธ๋งต)๋Š” ์ž๊ธฐ ํฌ๊ธฐ๋ณด๋‹ค ์ปค์ง€๊ฒŒ ๋˜๋ฉด ํ”ฝ์…€์ด ๊นจ์ง€๊ธฐ ๋•Œ๋ฌธ์— ๋„ˆ ์ž์‹ ์˜ ํฌ๊ธฐ๊นŒ์ง€๋งŒ ์ปค์ง€๋ผ๊ณ  ์ œํ•œ์„ ์ค˜์•ผํ•œ๋‹ค. ๊ทธ๋ž˜์„œ width๊ฐ’๋ณด๋‹ค๋Š” max-width๊ฐ’์„ ์ฃผ๋Š”๊ฒŒ ํšจ์œจ์ ์ด๋‹ค. โ†’ ๊ฒฐ๊ตญ์€ ํ•ด์ƒ๋„ ์ด์Šˆ ๋•Œ๋ฌธ!


3. ํšŒ๊ณ 

์–ด์ œ ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์–ด๋Š์ •๋„ ๊ฐœ๋…์„ ์žก์•„๋‘์–ด์„œ ์˜ค๋Š˜์˜ ์ˆ˜์—…์€ ๋งŽ์ด ์–ด๋ ต์ง€ ์•Š์•˜๋‹ค. ํ•˜์ง€๋งŒ ์ค‘๊ฐ„์ค‘๊ฐ„ ํ•จ์ˆ˜์™€ ๋ฐ˜๋ณต๋ฌธ์„ ๋ฐฐ์šฐ๋Š”๋ฐ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ธฐ์ดˆ๊ฐ€ ๋ถ€์กฑํ•ด์„œ ๊ทธ๋Ÿฐ์ง€ ์• ๋งคํ•˜๊ฒŒ ์ดํ•ด๊ฐ€ ๊ฐ”๋‹ค. ๋ณต์Šตํ•˜๋ฉด์„œ ์ฒœ์ฒœํžˆ ํ•ด๋ณด๋‹ˆ๊นŒ ์ดํ•ด๊ฐ€ ๊ฐ€๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค. ๊ทธ๋ž˜๋„ ํ˜ผ์ž ํ•จ์ˆ˜ ์งœ๋ณด๋ผ ๊ทธ๋Ÿฌ๋ฉด ์•„์ง์€ ๋ชปํ•˜๊ฒ ๋‹ค....ใ…Žใ…Žใ…Ž

์งง๊ณ  ๊ตต์—ˆ๋˜ Sass์˜ ์ˆ˜์—…์€ ์˜ค๋Š˜ ๋๋‚ฌ๋‹ค. ๋‹ค ๋ฐฐ์šฐ๊ณ  ๋Š๋‚€ ์ ์€ ์ •๋ง ์ž˜ ํ™œ์šฉํ•œ๋‹ค๋ฉด ์ฝ”๋“œ์˜ ์žฌํ™œ์šฉ, ๊ฐ„๊ฒฐํ™” ๋“ฑ ์žฅ์ ์ด ์ •๋ง ๋งŽ์•„๋ณด์˜€๋‹ค. ์˜ค๋Š˜ ๋ฐฐ์šด ๋‚ด์žฅํ•จ์ˆ˜๋“ค๋„ ์ž˜ ์‚ฌ์šฉํ•  ์ค„ ์•ˆ๋‹ค๋ฉด ๋‹ค์‹œ๋Š” CSS๋งŒ์œผ๋กœ ์ฝ”๋”ฉํ•˜๋Š” ๊ฑฐ๋Š” ์•ˆํ• ๋“ฏ ์‹ถ๋‹ค. ํ•˜์ง€๋งŒ 3์ผ๋ฐ–์— ์•ˆ๋ฐฐ์›Œ์„œ ์•„์ง์€ Only CSS๊ฐ€ ์ œ์ผ ํŽธํ•˜๋‹ค. ๋‚ด์ผ์€ TailwindCSS๋ฅผ ํ•˜๋ฃจ ๋ฐฐ์šฐ๋Š”๋ฐ ์™„์ „ ๋ฐœ๋งŒ ๋‹ด๊ตฌ๋Š” ์ˆ˜์ค€์œผ๋กœ ๋ฐฐ์šฐ๋Š” ๊ฑฐ๋ผ ์ด๊ฒŒ ๋งž๋‚˜? ์‹ถ๊ธดํ•˜๋‹ค..๐Ÿ˜ญ๐Ÿ˜ญ ๋” ๋งŽ์ด ๋ฐฐ์šฐ๊ณ ์‹ถ์–ด์š”ใ… ใ… 

๊ทธ๋ฆฌ๊ณ  ์˜ค๋Š˜ ๋“œ๋””์–ด HTML/CSS ํ”„๋กœ์ ํŠธ ํŒ€์ด ๋ฐœํ‘œ๋˜์—ˆ๋‹ค. 2๋ถ„์€ ์ž˜ ๋ชจ๋ฅด๋Š” ๋™๊ธฐ๋ถ„์ด์˜€๋Š”๋ฐ 1๋ถ„์€ ๋ผ์šด์ง€์—์„œ๋„ ๋งŽ์ด ๋ณด์ด๋˜ ์ด๋ฆ„์ด๋ผ ๋‚˜ ํ˜ผ์ž๋งŒ์˜ ์นœ๊ทผ๊ฐ์„ ๋Š๊ผˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ž˜ํ•˜๊ธฐ๋กœ ์†Œ๋ฌธ๋‚œ ๋™๊ธฐ๋ถ„์ด๋ผ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ๊ฑฑ์ •์€ ํ•œ ์‹œ๋ฆ„ ๋†จ๋‹คใ…Žใ…Žใ…Žใ…Žใ…Žใ…Žใ…Žใ…Ž ๋ชจ๋ฅด๋Š”๊ฑฐ ์žˆ์œผ๋ฉด ๋งŽ์ด๋งŽ์ด ๋ฌผ์–ด๋ด์•ผ๊ฒ ๋‹ค. ๋™๊ธฐ๋ถ„๋“คํ•œํ…Œ ํ”ผํ•ด๊ฐ€ ๋˜์ง€ ์•Š๋„๋ก ํ”„๋กœ์ ํŠธ ์ •๋ง ์—ด์‹ฌํžˆ ํ•ด์•ผ์ง€!!

profile
ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž ์ทจ์ค€์ƒ์ž…๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€