๋ ๋ง์ ๊ฒฝ์ฐ๊ฐ ์์ง๋ง ๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ ํ์ฌ ๊ฐ๋ฐ ์ค์ธ ์ฑ์์ ๋ฐ์ํฉ๋๋ค. ์ด ์๋๋ฆฌ์ค๋ ์คํฌ๋กค ๋ง๋๊ฐ ์๊ณ ํด๋น ์์์ CSS๋ฅผ ํตํด ๋ฒ์ญ์ด ์ ์ฉ๋ ๊ฒฝ์ฐ์๋ง ๋ฐ์ํฉ๋๋ค.
์ฌ๊ธฐ์์ ์๋ฅผ ์ฐธ์กฐํ์ญ์์ค (๋นจ๊ฐ์ ์์ ์๋ก ๋ง์ฐ์ค๋ฅผ ์ด๋)
์ด์ ๊ฐ์ ๊ฒ์ด ์ด๋ก ์ ์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๊ฒ์ ๋๋ค (์ ์๊ฐ์๋)
let rect = el.getBoundingClientRect();
let left = rect.left + window.pageXOffset;
let top = rect.top + window.pageYOffset;
// now we have a more accurate representation of the current top / left coords
ํฅ๋ฏธ๋ก์ด ๋ฒ๊ทธ. ๋ณํ์ผ๋ก ์ธํด ๋ฐ์ํ๋ ๊ฒ์ ํ์ธํ ์ ์์ง๋ง _์ด์ _๋ฅผ ์ดํดํ์ง ๋ชปํฉ๋๋ค. ์ด๊ฒ์ ์ต๊ทผ ์น์์ ์ ๋๋ฉ์ด์ ์ ์ถ์งํ๋ฉด์ ๊ฝค ์ผ๋ฐ์ ์ธ ์ผ์ด ๋ ์ ์๊ธฐ ๋๋ฌธ์ ํด๊ฒฐ๋์ด์ผ ํฉ๋๋ค.
ํธ!
๊ด์ฐฐ๋ ๋์์ CSS ์ฌ์ ์ ๋ฐ๋ผ ์ ํํฉ๋๋ค.
๋ ์ด์์์ด CSS ์์ ๋ชจ๋ธ์ ์ํด ์ ์ด๋๋ ์์์ ๊ฒฝ์ฐ ๋ณํ์ ๋ํด none ์ด์ธ์ ๊ฐ์ ์ฌ์ฉํ๋ฉด ์คํ ์ปจํ ์คํธ์ ํฌํจ ๋ธ๋ก์ด ๋ชจ๋ ์์ฑ๋ฉ๋๋ค. ๊ฐ์ฒด๋ ์์น๊ฐ ๊ณ ์ ๋ ํ์ ํญ๋ชฉ์ ํฌํจํ๋ ๋ธ๋ก ์ญํ ์ ํฉ๋๋ค.
ํดํ์ position: fixed
๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐฐ์น๋ฉ๋๋ค. ์ฆ, ๋ณํ์ ์ ์ฉํ์ฌ NOP์ธ ๊ฒฝ์ฐ์๋ ๊ณ ์ ์์น ์ง์ ์ ์ํด ์์ ์ ์ด๋ํ์ต๋๋ค.
์ฌ์ด ์์ ์ ํดํ์ ๋ค๋ฅธ ์ปจํ
์ด๋(๋๋ body
)๋ก ์ฎ๊ธฐ๋ ๊ฒ์
๋๋ค.
ํ , ๋งค์ฐ ํฅ๋ฏธ๋กญ์ต๋๋ค. ์ ์ด๋ ์ฐ๋ฆฌ๋ ์ง๊ธ ์๊ณ ์๊ณ ๋ง์ฝ ๊ทธ๊ฒ์ด ๋ค์ ๋ฐ์ํ๋ค๋ฉด ์ฌ๊ธฐ ์ฌ๋๋ค์ ์ง์ ํ ์ ์์ต๋๋ค. @surma ์ฐ๊ตฌ๋ฅผ ํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค!
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
ํธ!
๊ด์ฐฐ๋ ๋์์ CSS ์ฌ์ ์ ๋ฐ๋ผ ์ ํํฉ๋๋ค.
ํดํ์
position: fixed
๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐฐ์น๋ฉ๋๋ค. ์ฆ, ๋ณํ์ ์ ์ฉํ์ฌ NOP์ธ ๊ฒฝ์ฐ์๋ ๊ณ ์ ์์น ์ง์ ์ ์ํด ์์ ์ ์ด๋ํ์ต๋๋ค.์ฌ์ด ์์ ์ ํดํ์ ๋ค๋ฅธ ์ปจํ ์ด๋(๋๋
body
)๋ก ์ฎ๊ธฐ๋ ๊ฒ์ ๋๋ค.