[๐Ÿž]css

cocobirdsยท2023๋…„ 10์›” 17์ผ
0
post-thumbnail

postion:fixed๋กœ ๋ณ€๊ฒฝ ํ›„ ์Šคํฌ๋กค ์‹œ ์ ํ”„ ๋™์ž‘

์ตœ์ƒ๋‹จ์— nav์™€ ๋กœ๊ณ  ๋“ฑ์ด ์žˆ๋Š” header ์˜์—ญ(๋ฐ”๋กœ ์œ„์—๋Š” ์ด๋ฒคํŠธ ๋ฐฐ๋„ˆ๊ฐ€ ์žˆ๋Š” ๊ตฌ์กฐ)์ด position:relative ๊ฐ’์„ ๋จน๊ณ  ์žˆ๊ณ , ์•„๋ž˜๋กœ ์Šคํฌ๋กค ํ–ˆ์„ ๋•Œ fixed๋กœ ๋ณ€๊ฒฝํ•ด์„œ ๊ณ ์ •ํ•ด์•ผ ํ•˜๋Š”๋ฐ ์Šคํฌ๋กค ์‹œ ๋ถ€์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ(๋ก๋ฐ•๊ฑฐ๋ฆผ) ์ƒ๋‹จ์— fix ๋˜์—ˆ๋‹ค. ์Šค๋ฌด์Šคํ•˜๊ฒŒ header๊ฐ€ ์ œ์ž๋ฆฌ์— ์ฑก- ๋ถ™์—ˆ์œผ๋ฉด ์ข‹๊ฒ ์–ด์„œ ์ฐพ์•„๋ดค๋‹ค.

1. ์ปจํ…ํŠธ ์˜์—ญ์˜ ์œ„์น˜ ๊ฐ„๊ฒฉ์ฃผ๊ธฐ

header ์˜์—ญ์€ ๊ทธ๋Œ€๋กœ ๋‘๊ณ , content ์˜์—ญ์— header์˜ height ๋งŒํผ์˜ top ์œ„์น˜๋ฅผ ์ค˜์„œ ์Šคํฌ๋กค ๋˜๋ฉด์„œ header๊ฐ€ ์ ํ”„ํ•˜๋“ฏ์ด ๊ธฐ์กด์˜ ์œ„์น˜์—์„œ ์ตœ์ƒ๋‹จ์— fix๋  ๋•Œ, ๊ทธ ์‚ฌ์ด ๊ฐ„๊ฒฉ์„ ๋„์šฐ๋ฉด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋ถ™๊ฒŒ ๋œ๋‹ค.

content ์˜์—ญ์˜ ์œ„์น˜๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ์กด์˜ content์˜ ์œ„์น˜์— ๋”ฐ๋ผ ๋ ˆ์ด์•„์›ƒ์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ๋‹ค.

stackoverflow) Smooth scroll header with fixed position

font-smooth

  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;

์›นํฐํŠธ๋ฅผ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด css์˜ font-smoothing ์†์„ฑ์„ ์‚ฌ์šฉ. ์ด ์†์„ฑ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ธŒ๋ผ์šฐ์ €์— ํ‘œํ˜„๋˜๋Š” ํ…์ŠคํŠธ๊ฐ€ ๋ Œ๋”๋ง ๋  ๋•Œ ์ข€ ๋” ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ํ‘œํ˜„์ด ๋œ๋‹ค. ํ‘œ์ค€ ์†์„ฑ์€ ์•„๋‹ˆ๋ผ์„œ ๋ชจ๋“  ๋ธŒ๋ผ์šฐ์ € ๋ฐ ํ™˜๊ฒฝ์— ์ ์šฉ๋˜์ง€๋Š” ์•Š๋Š”๋‹ค. Safari ๋ฐ Mac ๋“ฑ์—์„œ๋Š” ์™„๋ฒฝํ•˜๊ฒŒ ๊ตฌํ˜„๋˜์ง€๋งŒ ์ด์™ธ์—๋Š” ์ œํ•œ์ ์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.

์ถœ์ฒ˜ - MDN) font-smooth

scroll chanining

์‚ฌ์ด๋“œ๋ฐ”๋ฅผ ๋งŒ๋“ค๊ณ  ์Šคํฌ๋กค์„ ํ•  ๋•Œ ์‚ฌ์ด๋“œ๋ฐ”๊ฐ€ ์ „๋ถ€ ์Šคํฌ๋กค ๋˜๋ฉด ๋ฉ”์ธ ํ™”๋ฉด์ด ์Šคํฌ๋กค์ด ๋œ๋‹ค. ์™œ ๋ฉ”์ธ ํ™”๋ฉด๊นŒ์ง€ ์Šคํฌ๋กค์ด ๋˜๋ƒํ•˜๋ฉด, ์Šคํฌ๋กค์ด ๋˜์ง€ ์•Š๋Š” ๋ถ€๋ถ„์—์„œ ์Šคํฌ๋กค์„ ํ–ˆ์„ ๋•Œ ๋ถ€๋ชจ ์š”์†Œ๋กœ ์Šคํฌ๋กค์ด ์ „๋‹ฌ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋ผ๊ณ  ํ•œ๋‹ค. ์ด๋Ÿฐ ํ˜„์ƒ์„ ์Šคํฌ๋กค ์ฒด์ด๋‹(scroll chaining)์ด๋ผ ํ•œ๋‹ค.

์ด๋Ÿฌํ•œ ํ˜„์ƒ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ css์˜ <overscroll-behavior> ์†์„ฑ์ด ์žˆ๋‹ค.

overscroll-behavior

์Šคํฌ๋กค์ด ๋๊นŒ์ง€ ๊ฐ”์„ ๋•Œ ์Šคํฌ๋กค์ด ์ „๋‹ฌ๋˜๋Š” ๊ฒƒ์„ ๋ง‰๋Š” ์†์„ฑ์ด๋‹ค.

overscroll-behavior: auto | contain | none;

์ถœ์ฒ˜ - MDN) overscroll-behavior
์ถœ์ฒ˜ - ์ •ํ˜„์ˆ˜๋‹˜ ์Šคํฌ๋กค์ฒด์ด๋‹ ํฌ์ŠคํŠธ

scrolling ๋ง‰๊ธฐ (css + js)

๋ชจ๋‹ฌ์ฐฝ์„ ๋„์›Œ์„œ ๋’ค์˜ ์ปจํ…ํŠธ์˜ ์Šคํฌ๋กค์„ ๋ง‰๊ฑฐ๋‚˜ ์‚ฌ์ด๋“œ๋ฐ”+์˜ค๋ฒ„๋ ˆ์ด๋กœ ๋ฐ˜์ฏค ๋’ค์— ๊ฐ€๋ ค์ง„ ์ปจํ…ํŠธ์˜ ์Šคํฌ๋กค์„ ๋ง‰๋Š” ๋ฐฉ๋ฒ•

1. ๋ชจ๋‹ฌ์ฐฝ ์Šคํฌ๋กค ๋ง‰๊ธฐ

  overflow: hidden;
  touch-action: none;

ํด๋ž˜์Šค๋ช…์„ ์ง€์ •ํ•ด์ฃผ๊ณ  javascript์—์„œ ๋ชจ๋‹ฌ์ฐฝ์„ ์—ด์—ˆ์„ ๋•Œ, body ๋ถ€๋ถ„์— ํด๋ž˜์Šค๋ฅผ ์ค€๋‹ค.

  document.body.classList.add('notscroll');

2. ์‚ฌ์ด๋“œ๋ฐ” ์Šคํฌ๋กค ๋ง‰๊ธฐ

  position: fixed;
  top: 0;
  left: 0;
  width: 100%;

์œ„์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์‚ฌ์ด๋“œ๋ฐ”๋ฅผ ์—ด์—ˆ์„ ๋•Œ, body ๋ถ€๋ถ„์— ํด๋ž˜์Šค๋ฅผ ์ฃผ๋ฉด ๋œ๋‹ค.


truncate

 white-space: nowrap;
 overflow: hidden;
 text-overflow: ellipsis;

ํ…์ŠคํŠธ๊ฐ€ ๊ธธ์–ด์„œ ๋ถ€๋ชจ ์š”์†Œ์˜ ๋„ˆ๋น„ ํฌ๊ธฐ๋ฅผ ๋ฒ—์–ด๋‚˜ ๋ฐ”๊นฅ์œผ๋กœ ํŠ€์–ด๋‚˜๊ฐ€๋Š” ํ•œ ์ค„์ธ๋ฐ ๋ถ€๋ชจ ๋„ˆ๋น„ ๋ฐ–์˜ ์ž˜๋ฆฐ ํ…์ŠคํŠธ๋Š” ์ˆจ๊ธฐ๊ณ  ๋ง ์ค„์ž„ํ‘œ๋ฅผ ๋ถ™์—ฌ์•ผ ํ•  ๋•Œ ์œ„์˜ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉ.

์ถœ์ฒ˜ - Dales


transition๊ณผ css property

์š”์†Œ์— ์›€์ง์ž„์„ ์ฃผ๊ณ  ์‹ถ์„ ๋•Œ ๊ฐ„ํ˜น transition์ด ๋จนํžˆ์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ๋ชจ๋“  css property๊ฐ€ ๋Œ€์ƒ์ด ๋˜์ง€๋Š” ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ ์ด์œ ๋Š” ๋ธŒ๋ผ์šฐ์ € ๋™์ž‘๊ณผ ๊ด€๋ จ ๋˜์–ด ์žˆ๋‹ค.

๋Œ€์ƒ์ด ๋  ์ˆ˜ ์žˆ๋Š” css property

// Box model
width height max-width max-height min-width min-height
padding margin
border-color border-width border-spacing

// Background
background-color background-position

// ์ขŒํ‘œ
top left right bottom

// ํ…์ŠคํŠธ
color font-size font-weight letter-spacing line-height
text-indent text-shadow vertical-align word-spacing

// ๊ธฐํƒ€
opacity outline-color outline-offset outline-width
visibility z-index

์ถœ์ฒ˜ - ์ด์›…๋ชจ๋‹˜ Poiemaweb) css3-transition


visibility์™€ display ์ฐจ์ด

์š”์†Œ๋ฅผ ํ™”๋ฉด์— ๋ณด์ด์ง€ ์•Š๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ์œ„์˜ ์†์„ฑ์„ ์ž์ฃผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, ๋‹จ์ˆœํžˆ ๋ณด์ด๊ณ  ์•ˆ ๋ณด์ด๊ณ ์˜ ์ฐจ์ด๋งŒ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ์š”์†Œ๊ฐ€ ์ฐจ์ง€ํ•˜๊ณ  ์žˆ๋˜ ๊ณต๊ฐ„์„ ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•˜๋Š๋ƒ์˜ ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค.

visibility: hidden | visible | collapse;

<display: none> ์„ ์ค„ ๊ฒฝ์šฐ, ๊ทธ ์š”์†Œ๊ฐ€ ์ฐจ์ง€ํ•˜๊ณ  ์žˆ๋˜ ๊ณต๊ฐ„๋„ ํ•จ๊ป˜ ์ˆจ๊ฒจ์ง€๊ฒŒ ๋œ๋‹ค. ๊ทธ ๋‹ค์Œ์œผ๋กœ ์˜ค๋Š” ์š”์†Œ๊ฐ€ ์ˆจ๊ฒจ์ง„ ์š”์†Œ์˜ ์ž๋ฆฌ๋ฅผ ๋Œ€์‹  ์ฐจ์ง€ํ•˜๊ฒŒ ๋œ๋‹ค.

<visibility: hidden> ์„ ์ค„ ๊ฒฝ์šฐ, ์š”์†Œ๊ฐ€ ์ฐจ์ง€ํ•˜๊ณ  ์žˆ๋˜ ๊ณต๊ฐ„์„ ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•œ ์ฑ„ ์ˆจ๊น€ ์ฒ˜๋ฆฌ ๋œ๋‹ค.

์ถœ์ฒ˜ - MDN) visibility


overflow

  • ๋‚ด๋ถ€ ์š”์†Œ๊ฐ€ ๋ถ€๋ชจ์˜ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚  ๊ฒฝ์šฐ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ• ์ง€ ์ง€์ •ํ•˜๋Š” ์†์„ฑ.
  • ์†์„ฑ์ด ํšจ๋ ฅ์„ ๊ฐ–๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฐ˜๋“œ์‹œ block level์˜
    width๋‚˜ height์˜ ๊ฐ’์„ ์„ค์ •ํ•ด์ค˜์•ผ ํ•œ๋‹ค.

์ถœ์ฒ˜ - MDN) overflow

2. display : none

์š”์†Œ๋ฅผ ๋ณด์ด์ง€ ์•Š๊ฒŒ ํ•˜๋Š” ์†์„ฑ. ํ™”๋ฉด์— ๋ณด์ด์ง€ ์•Š์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์Šคํฌ๋ฆฐ๋ฆฌ๋”๋„ ์ฝ์ง€ ๋ชปํ•จ.

overflow:hidden, display:none์˜ ์ฐจ์ด

overflow:hidden์ผ ๊ฒฝ์šฐ -> ์ˆจ๊น€์ฒ˜๋ฆฌ, ์Šคํฌ๋ฆฐ๋ฆฌ๋”๊ฐ€ ์ฝ์„ ์ˆ˜ ์žˆ์Œ.
display:none์ผ ๊ฒฝ์šฐ -> ์ˆจ๊น€์ฒ˜๋ฆฌ, ์Šคํฌ๋ฆฐ๋ฆฌ๋”๊ฐ€ ์ฝ์„ ์ˆ˜ ์—†์Œ.


margin: 0 auto ๊ฐ€์šด๋ฐ ์ •๋ ฌ ์•ˆ๋˜๋Š” ์ด์œ 

1. width ์„ ์–ธ ์—ฌ๋ถ€

์š”์†Œ์˜ width๋ฅผ ์„ ์–ธํ•˜์ง€ ์•Š์•˜์„ ๊ฒฝ์šฐ, margin: 0 auto;๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋งŒ์•ฝ width๋ฅผ ์„ ์–ธํ•˜๊ณ  ๋‚จ์€ ๊ณต๊ฐ„์ด ์žˆ๋‹ค๋ฉด margin์œผ๋กœ ์ž๋™์œผ๋กœ ์ฑ„์šฐ๊ฒŒ ๋˜๋Š”๋ฐ,
margin auto ์˜ˆ์‹œ

left, right ๋ฅผ auto๋กœ ํ•˜๊ฒŒ ๋˜๋ฉด margin์„ ์‚ฌ์ด์ข‹๊ฒŒ ๋‚˜๋ˆ ๊ฐ€์ง€๊ฒŒ ๋˜๋ฉด์„œ ๊ฐ€์šด๋ฐ ์ •๋ ฌ ๋œ๋‹ค.
๋ถ€๋ชจ ์š”์†Œ์— margin: 0 auto;๋ฅผ ์คฌ๋Š”๋ฐ ๊ฐ€์šด๋ฐ ๋ฐฐ์น˜๊ฐ€ ๋˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ๋ถ€๋ชจ ์š”์†Œ์˜ width๋ฅผ ์„ ์–ธํ–ˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

2. box-type์ด inline ์ผ ๊ฒฝ์šฐ

display: inline;์€ margin-left, margin-right์ด ๋จนํžˆ์ง€ ์•Š๋Š”๋‹ค.

3. li ์•ˆ์— a ํƒœ๊ทธ ํด๋ฆญ ์˜์—ญ

๋ฉ”๋‰ด ์ปดํฌ๋„ŒํŠธ ๋งŒ๋“ค ๋•Œ li ํƒœ๊ทธ ์•ˆ์— a ํƒœ๊ทธ๋ฅผ ๋„ฃ์–ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์€๋ฐ, padding์„ ์ค˜์•ผ ํ•  ๋•Œ li์— ์ฃผ์ง€ ์•Š๊ณ  a ํƒœ๊ทธ์— ์ค˜์•ผ ํด๋ฆญ ์˜์—ญ์ด ๋„“์–ด์ ธ์„œ ๋นˆ ๊ณต๊ฐ„์„ ํด๋ฆญํ–ˆ์„ ๋•Œ์—๋„ link ์ด๋™์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค.


z-index

Position๋œ ์š”์†Œ๋“ค์˜ ์ˆ˜์ง๋ฐฉํ–ฅ์œผ๋กœ์˜ ๋ ˆ๋ฒจ์„ ์•Œ๋ ค์ฃผ๋Š” ์†์„ฑ.
๋ ˆ์ด์–ด์ธต์œผ๋กœ ์ด๋ค„์ง„ ์š”์†Œ๋“ค์„ ์–ด๋Š ๋ ˆ๋ฒจ๋กœ ์œ„์น˜์‹œํ‚ฌ๊ฑด์ง€ ์ •ํ•œ๋‹ค.
์ •์ˆ˜๊ฐ’์„ ์ ์–ด์ฃผ๋ฉด ๋˜๋Š”๋ฐ, ์ •์ˆ˜๊ฐ’์ด ์ปค์งˆ์ˆ˜๋ก ์ƒ์œ„ ๋ ˆ๋ฒจ์— ์†ํ•œ๋‹ค.

img ํƒœ๊ทธ

img๋Š” inline box-type์ด์ง€๋งŒ width์™€ height ๊ฐ’์„ ์ฃผ๋ฉด ์‚ฌ์ด์ฆˆ ์กฐ์ ˆ์ด ๋œ๋‹ค. ์•„๋งˆ ์ด๋ฏธ์ง€ ํŒŒ์ผ ์ž์ฒด๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ด๋ฏธ์ง€ ์‚ฌ์ด์ฆˆ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋Ÿดํ…๋ฐ, ๋ช…์‹œ์ ์œผ๋กœ display:block์„ ํ•ด์ฃผ๋ฉด ์Šคํƒ€์ผ ์˜ค์ฐจ๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค. block์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ๋ฉด ๊ฐœ๋ฐœ์ž๋„๊ตฌ์˜ box-model ํŒจ๋„์„ ๋ณด๋ฉด content ๋ถ€๋ถ„์˜ ๊ฐ’์ด ์ง€์ •ํ•ด์ค€ ๊ฐ’์œผ๋กœ ๋”ฑ ๋งž์ถฐ์ง„๋‹ค.

text-align

block ๋‚ด์— ์žˆ๋Š” inline ์š”์†Œ(ํ…์ŠคํŠธ ํฌํ•จ)์„ ์ •๋ ฌํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์†์„ฑ.
span์ด๋‚˜ strong๊ณผ ๊ฐ™์€ inline ํƒœ๊ทธ์— text-align ์†์„ฑ์„ ์ฃผ๊ณ  ์‹ถ๋‹ค๋ฉด display:block ์„ ์ฃผ๋ฉด ๋œ๋‹ค.

text hidden

font-size: 0;
overflow: hidden;
text-indent: 100%;
white-space: nowrap;
text-indent: -9999em;
profile
์ ‘๊ทผ์„ฑ๊ณผ UX, ๋ฐ์ดํ„ฐ ํ‘œํ˜„์— ๊ด€์‹ฌ์ด ๋งŽ์Šต๋‹ˆ๋‹ค.

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