์ต์๋จ์ nav์ ๋ก๊ณ ๋ฑ์ด ์๋ header ์์ญ(๋ฐ๋ก ์์๋ ์ด๋ฒคํธ ๋ฐฐ๋๊ฐ ์๋ ๊ตฌ์กฐ)์ด position:relative ๊ฐ์ ๋จน๊ณ ์๊ณ , ์๋๋ก ์คํฌ๋กค ํ์ ๋ fixed๋ก ๋ณ๊ฒฝํด์ ๊ณ ์ ํด์ผ ํ๋๋ฐ ์คํฌ๋กค ์ ๋ถ์์ฐ์ค๋ฝ๊ฒ(๋ก๋ฐ๊ฑฐ๋ฆผ) ์๋จ์ fix ๋์๋ค. ์ค๋ฌด์คํ๊ฒ header๊ฐ ์ ์๋ฆฌ์ ์ฑก- ๋ถ์์ผ๋ฉด ์ข๊ฒ ์ด์ ์ฐพ์๋ดค๋ค.
header ์์ญ์ ๊ทธ๋๋ก ๋๊ณ , content ์์ญ์ header์ height ๋งํผ์ top ์์น๋ฅผ ์ค์ ์คํฌ๋กค ๋๋ฉด์ header๊ฐ ์ ํํ๋ฏ์ด ๊ธฐ์กด์ ์์น์์ ์ต์๋จ์ fix๋ ๋, ๊ทธ ์ฌ์ด ๊ฐ๊ฒฉ์ ๋์ฐ๋ฉด ์์ฐ์ค๋ฝ๊ฒ ๋ถ๊ฒ ๋๋ค.
content ์์ญ์ ์์น๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๊ธฐ์กด์ content์ ์์น์ ๋ฐ๋ผ ๋ ์ด์์์ ์ํฅ์ ์ค ์ ์๋ค.
stackoverflow) Smooth scroll header with fixed position
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
์นํฐํธ๋ฅผ ๋ถ๋๋ฝ๊ฒ ์ฌ์ฉํ๊ธฐ ์ํด css์ font-smoothing ์์ฑ์ ์ฌ์ฉ. ์ด ์์ฑ์ ์ฌ์ฉํ๋ฉด ๋ธ๋ผ์ฐ์ ์ ํํ๋๋ ํ ์คํธ๊ฐ ๋ ๋๋ง ๋ ๋ ์ข ๋ ๋ถ๋๋ฝ๊ฒ ํํ์ด ๋๋ค. ํ์ค ์์ฑ์ ์๋๋ผ์ ๋ชจ๋ ๋ธ๋ผ์ฐ์ ๋ฐ ํ๊ฒฝ์ ์ ์ฉ๋์ง๋ ์๋๋ค. Safari ๋ฐ Mac ๋ฑ์์๋ ์๋ฒฝํ๊ฒ ๊ตฌํ๋์ง๋ง ์ด์ธ์๋ ์ ํ์ ์ผ๋ก ์ฌ์ฉ๋๋ค.
์ฌ์ด๋๋ฐ๋ฅผ ๋ง๋ค๊ณ ์คํฌ๋กค์ ํ ๋ ์ฌ์ด๋๋ฐ๊ฐ ์ ๋ถ ์คํฌ๋กค ๋๋ฉด ๋ฉ์ธ ํ๋ฉด์ด ์คํฌ๋กค์ด ๋๋ค. ์ ๋ฉ์ธ ํ๋ฉด๊น์ง ์คํฌ๋กค์ด ๋๋ํ๋ฉด, ์คํฌ๋กค์ด ๋์ง ์๋ ๋ถ๋ถ์์ ์คํฌ๋กค์ ํ์ ๋ ๋ถ๋ชจ ์์๋ก ์คํฌ๋กค์ด ์ ๋ฌ๋๊ธฐ ๋๋ฌธ์ด๋ผ๊ณ ํ๋ค. ์ด๋ฐ ํ์์ ์คํฌ๋กค ์ฒด์ด๋(scroll chaining)์ด๋ผ ํ๋ค.
์ด๋ฌํ ํ์์ ํด๊ฒฐํ๊ธฐ ์ํ css์ <overscroll-behavior>
์์ฑ์ด ์๋ค.
์คํฌ๋กค์ด ๋๊น์ง ๊ฐ์ ๋ ์คํฌ๋กค์ด ์ ๋ฌ๋๋ ๊ฒ์ ๋ง๋ ์์ฑ์ด๋ค.
overscroll-behavior: auto | contain | none;
์ถ์ฒ - MDN) overscroll-behavior
์ถ์ฒ - ์ ํ์๋ ์คํฌ๋กค์ฒด์ด๋ ํฌ์คํธ
๋ชจ๋ฌ์ฐฝ์ ๋์์ ๋ค์ ์ปจํ ํธ์ ์คํฌ๋กค์ ๋ง๊ฑฐ๋ ์ฌ์ด๋๋ฐ+์ค๋ฒ๋ ์ด๋ก ๋ฐ์ฏค ๋ค์ ๊ฐ๋ ค์ง ์ปจํ ํธ์ ์คํฌ๋กค์ ๋ง๋ ๋ฐฉ๋ฒ
overflow: hidden;
touch-action: none;
ํด๋์ค๋ช ์ ์ง์ ํด์ฃผ๊ณ javascript์์ ๋ชจ๋ฌ์ฐฝ์ ์ด์์ ๋, body ๋ถ๋ถ์ ํด๋์ค๋ฅผ ์ค๋ค.
document.body.classList.add('notscroll');
position: fixed;
top: 0;
left: 0;
width: 100%;
์์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ฌ์ด๋๋ฐ๋ฅผ ์ด์์ ๋, body ๋ถ๋ถ์ ํด๋์ค๋ฅผ ์ฃผ๋ฉด ๋๋ค.
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
ํ ์คํธ๊ฐ ๊ธธ์ด์ ๋ถ๋ชจ ์์์ ๋๋น ํฌ๊ธฐ๋ฅผ ๋ฒ์ด๋ ๋ฐ๊นฅ์ผ๋ก ํ์ด๋๊ฐ๋ ํ ์ค์ธ๋ฐ ๋ถ๋ชจ ๋๋น ๋ฐ์ ์๋ฆฐ ํ ์คํธ๋ ์จ๊ธฐ๊ณ ๋ง ์ค์ํ๋ฅผ ๋ถ์ฌ์ผ ํ ๋ ์์ ์ฝ๋๋ฅผ ์ฌ์ฉ.
์์์ ์์ง์์ ์ฃผ๊ณ ์ถ์ ๋ ๊ฐํน transition์ด ๋จนํ์ง ์๋ ๊ฒฝ์ฐ๊ฐ ์๋ค. ๋ชจ๋ 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: hidden | visible | collapse;
<display: none>
์ ์ค ๊ฒฝ์ฐ, ๊ทธ ์์๊ฐ ์ฐจ์งํ๊ณ ์๋ ๊ณต๊ฐ๋ ํจ๊ป ์จ๊ฒจ์ง๊ฒ ๋๋ค. ๊ทธ ๋ค์์ผ๋ก ์ค๋ ์์๊ฐ ์จ๊ฒจ์ง ์์์ ์๋ฆฌ๋ฅผ ๋์ ์ฐจ์งํ๊ฒ ๋๋ค.
<visibility: hidden>
์ ์ค ๊ฒฝ์ฐ, ์์๊ฐ ์ฐจ์งํ๊ณ ์๋ ๊ณต๊ฐ์ ๊ทธ๋๋ก ์ ์งํ ์ฑ ์จ๊น ์ฒ๋ฆฌ ๋๋ค.
- ๋ด๋ถ ์์๊ฐ ๋ถ๋ชจ์ ๋ฒ์๋ฅผ ๋ฒ์ด๋ ๊ฒฝ์ฐ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ์ง ์ง์ ํ๋ ์์ฑ.
- ์์ฑ์ด ํจ๋ ฅ์ ๊ฐ๊ธฐ ์ํด์๋ ๋ฐ๋์ block level์
width๋ height์ ๊ฐ์ ์ค์ ํด์ค์ผ ํ๋ค.
์์๋ฅผ ๋ณด์ด์ง ์๊ฒ ํ๋ ์์ฑ. ํ๋ฉด์ ๋ณด์ด์ง ์์ ๋ฟ๋ง ์๋๋ผ ์คํฌ๋ฆฐ๋ฆฌ๋๋ ์ฝ์ง ๋ชปํจ.
overflow:hidden์ผ ๊ฒฝ์ฐ -> ์จ๊น์ฒ๋ฆฌ, ์คํฌ๋ฆฐ๋ฆฌ๋๊ฐ ์ฝ์ ์ ์์.
display:none์ผ ๊ฒฝ์ฐ -> ์จ๊น์ฒ๋ฆฌ, ์คํฌ๋ฆฐ๋ฆฌ๋๊ฐ ์ฝ์ ์ ์์.
์์์ width๋ฅผ ์ ์ธํ์ง ์์์ ๊ฒฝ์ฐ, margin: 0 auto;
๊ฐ ์๋ํ์ง ์๋๋ค. ๋ง์ฝ width๋ฅผ ์ ์ธํ๊ณ ๋จ์ ๊ณต๊ฐ์ด ์๋ค๋ฉด margin์ผ๋ก ์๋์ผ๋ก ์ฑ์ฐ๊ฒ ๋๋๋ฐ,
left
, right
๋ฅผ auto๋ก ํ๊ฒ ๋๋ฉด margin์ ์ฌ์ด์ข๊ฒ ๋๋ ๊ฐ์ง๊ฒ ๋๋ฉด์ ๊ฐ์ด๋ฐ ์ ๋ ฌ ๋๋ค.
๋ถ๋ชจ ์์์ margin: 0 auto;
๋ฅผ ์คฌ๋๋ฐ ๊ฐ์ด๋ฐ ๋ฐฐ์น๊ฐ ๋์ง ์๋๋ค๋ฉด ๋ถ๋ชจ ์์์ width๋ฅผ ์ ์ธํ๋์ง ํ์ธํ๋ค.
display: inline;
์ margin-left, margin-right
์ด ๋จนํ์ง ์๋๋ค.
๋ฉ๋ด ์ปดํฌ๋ํธ ๋ง๋ค ๋ li ํ๊ทธ ์์ a ํ๊ทธ๋ฅผ ๋ฃ์ด์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์๋ฐ, padding์ ์ค์ผ ํ ๋ li์ ์ฃผ์ง ์๊ณ a ํ๊ทธ์ ์ค์ผ ํด๋ฆญ ์์ญ์ด ๋์ด์ ธ์ ๋น ๊ณต๊ฐ์ ํด๋ฆญํ์ ๋์๋ link ์ด๋์ด ๊ฐ๋ฅํด์ง๋ค.
Position๋ ์์๋ค์ ์์ง๋ฐฉํฅ์ผ๋ก์ ๋ ๋ฒจ์ ์๋ ค์ฃผ๋ ์์ฑ.
๋ ์ด์ด์ธต์ผ๋ก ์ด๋ค์ง ์์๋ค์ ์ด๋ ๋ ๋ฒจ๋ก ์์น์ํฌ๊ฑด์ง ์ ํ๋ค.
์ ์๊ฐ์ ์ ์ด์ฃผ๋ฉด ๋๋๋ฐ, ์ ์๊ฐ์ด ์ปค์ง์๋ก ์์ ๋ ๋ฒจ์ ์ํ๋ค.
img๋ inline box-type์ด์ง๋ง width์ height ๊ฐ์ ์ฃผ๋ฉด ์ฌ์ด์ฆ ์กฐ์ ์ด ๋๋ค. ์๋ง ์ด๋ฏธ์ง ํ์ผ ์์ฒด๊ฐ ๊ฐ์ง๊ณ ์๋ ์ด๋ฏธ์ง ์ฌ์ด์ฆ๊ฐ ์๊ธฐ ๋๋ฌธ์ ๊ทธ๋ดํ ๋ฐ, ๋ช ์์ ์ผ๋ก display:block์ ํด์ฃผ๋ฉด ์คํ์ผ ์ค์ฐจ๋ฅผ ์ค์ผ ์ ์๋ค. block์ผ๋ก ๋ฐ๊ฟ์ฃผ๋ฉด ๊ฐ๋ฐ์๋๊ตฌ์ box-model ํจ๋์ ๋ณด๋ฉด content ๋ถ๋ถ์ ๊ฐ์ด ์ง์ ํด์ค ๊ฐ์ผ๋ก ๋ฑ ๋ง์ถฐ์ง๋ค.
block ๋ด์ ์๋ inline ์์(ํ
์คํธ ํฌํจ)์ ์ ๋ ฌํ ๋ ์ฌ์ฉํ๋ ์์ฑ.
span์ด๋ strong๊ณผ ๊ฐ์ inline ํ๊ทธ์ text-align ์์ฑ์ ์ฃผ๊ณ ์ถ๋ค๋ฉด display:block ์ ์ฃผ๋ฉด ๋๋ค.
font-size: 0;
overflow: hidden;
text-indent: 100%;
white-space: nowrap;
text-indent: -9999em;
sticky๋ก ๊ณ ์ ๋ ์ฒซ๋ฒ์งธ ์์๊ฐ ์คํฌ๋กค ์์น์ ๋ฐ๋ผ ์๋จ์ ๊ณ ์ (sticky)๋ ์ํ์์๋, ๋ค์ ์ค๋ ํ์ ์์๋ค์ ์ฒซ๋ฒ์งธ ์์๊ฐ ์๋ ์๋ฆฌํ ์์น๋ฅผ ์ธ์ํ๋ค. ๊ทธ๋์ ์คํฌ๋กค์ ๋ฐ๋ผ ๋ทฐํฌํธ ๋ด์์ ๊ณ ์ ๋๋ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง, ๋ ์ด์์ ์์์๋ ์ฌ์ ํ ์๋ ์๋ฆฌ์ ๊ณต๊ฐ์ ์ฐจ์งํ๊ณ ์๊ธฐ ๋๋ฌธ์ ๋ฐ๋ก ๋ค์ ์ค๋ ํ์ ์์๋ค์ด ๋ฐ๋ก ์ด์ด์ ธ ๋ณด์ด์ง ์๊ณ ์ฝ๊ฐ์ ๊ณต๋ฐฑ์ด ๋ณด์ด๊ฒ ๋๋ค.