ํฐ์คํ ๋ฆฌ ๋ทฐ
์บ๋ฒ์ค์ ์ฌ์ด์ฆ๋ฅผ ํ์ฌ ๋ณด๊ณ ์๋ ์ฐฝ ์ฌ์ด์ฆ์ ๋ฑ ๋ง๊ฒ ์กฐ์ ํ์๊ณ ์กฐ์ ๋ ์บ๋ฒ์ค ๊ธฐ์ค์ผ๋ก ์คํฌ๋กค ๊ฐ์ด ๋ธ๋ผ์ฐ์ ์ฐฝ์ ๋ง๋ฟ์์ ๋ ์ค์ ํด ๋ ์บ๋ฒ์ค ์ ๋๋ฉ์ด์ ์ด ๋ฐ์ํ ์ ์๋๋ก ๋ธ๋ผ์ฐ์ ์ฐฝ๊ณผ ์บ๋ฒ์ค ์ด๋ฏธ์ง ๊ฐ์ height ๊ฐ์ getBoundingClientRect().top์ ํตํด ๊ณ์ฐํ์๋ค.
ํ์ง๋ง ์๋ ์๋ํ๋ ๋ฐ์๋ ๋ฌ๋ฆฌ ์บ๋ฒ์ค ์ ๋๋ฉ์ด์ ์ด ์ ๋๋ก ๋์ํ์ง ์์๋ค.
์ด๋ getBoundingClientRect().top ๊ฐ์ด ์ผ์ ํ๊ฒ ๋์ค๋ ๊ฒ์ด ์๋๋ผ ์๋ ์ฝ์์ ์ถ๋ ฅํด ๋ณธ ๋ฐ์ ๊ฐ์ด ์ฌ์ฉ์๊ฐ ์คํฌ๋กคํ๋ ์๋์ ๋ฐ๋ผ ๊ฐ์ด top์ ๊ฐ์ด ์์ ๋ณํํ๊ธฐ ๋๋ฌธ์ด์๋ค.
์ด๋ฅผ ์ํด ์์์ offsetTop์ ์ด์ฉํ์ฌ ๋ธ๋ผ์ฐ์ ์ฐฝ๊ณผ ์บ๋ฒ์ค ์ด๋ฏธ์ง ๊ฐ์ height ๊ฐ์ ์ป๊ณ ์ ํ๋ค.
offsetTop์ position๊ฐ์ด relative๋ก ์ค์ ๋ ๋ถ๋ชจ ์์ ๊ธฐ์ค์ผ๋ก top๊ฐ์ ์ฐ์ถํ๋ค. ํ์ฌ ๋ณธ ํ๋ก์ ํธ์์ ์บ๋ฒ์ค ์ด๋ฏธ์ง๊ฐ ์ํด ์๋ <div>scroll-section</div>์ position relative ๊ฐ์ ์ง์ ํด์ฃผ์๋ค.
ํ์ง๋ง ์ด ๋ํ ์ ํํ top๊ฐ์ด ์ฐ์ถ๋์ง ์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ฌ ์บ๋ฒ์ค ์ ๋๋ฉ์ด์ ์ด ์ ๋๋ก ๋์์น ์๋ ๋ฌธ์ ๊ฐ ์์๋ค.
์์ ๊ฐ์ ๋ฌธ์ ๋ transform ์์ฑ ๊ฐ์ ํน์ฑ์ ๋ฐ์ํ์ง ์์๊ธฐ ๋๋ฌธ์ ๋ฐ์ ํ ๋ฌธ์ ์๋ค.
์์ ์ด๋ฏธ์ง์ ๊ฐ์ด ๋ณธ๋ ์บ๋ฒ์ค์ ์ด๋ฏธ์ง ์ฌ์ด์ฆ์ธ 1920*1080์ ํ๋ฉด ์์ ๋ฑ ๋ง์ถ๊ธฐ ์ํด ์ผ์ ๋น์จ๋ก 1280*720์ผ๋ก transform scale() ์์ฑ์ ์ฌ์ฉํ์ฌ ์ค์ฌ ๋ ์ํ์ด๋ค.
offsetTop์ ๊ณ์ฐํ ๋ ๊ธฐ์ค์ด ๋๋ ์บ๋ฒ์ค์ ์ฌ์ด์ฆ๋ฅผ ์ฌ์กฐ์ ํ ์ฌ์ด์ฆ์ ๊ฒ์ผ๋ก ๋ง์ถ์ด ๋ธ๋ผ์ฐ์ ์ฐฝ ๊ฐ์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ์ฐํ์๋ค. ํ์ง๋ง transform์ผ๋ก ์์น ์ด๋ ๋ฐ ์ค์ผ์ผ ์กฐ์ ์ ์์์ ์๋ ์์น๋ ํฌ๊ธฐ์ ์ํฅ์ ๋ฏธ์น์ง ์๊ธฐ์, ๊ธฐ๋ณธ์ ์ธ Geometry ์์์ ๋ณธ๋ ์ฐจ์งํ๊ณ ์๋ ๊ณต๊ฐ ์์ญ ์์ฒด๋ ๋ณํ์ง ์์ ์ฑ ์๊ฐ์ ์ผ๋ก ๋ณํ๋ง ์ผ์ด๋๋ค.
์ฆ, offsetTop์ ๊ณ์ฐ์ด ์ฌ์กฐ์ ๋๊ธฐ ์ ์ ์๋ ์บ๋ฒ์ค ์ฌ์ด์ฆ์ธ 1080 ๊ธฐ์ค์ผ๋ก offsetTop์ผ๋ก ๊ณ์ฐ๋๋ฉด์ ๋ธ๋ผ์ฐ์ ์ฐฝ ๊ฐ์ ๊ฑฐ๋ฆฌ ๊ณ์ฐ์ ์ ๋๋ก ๋ฐ์ํ์ง ๋ชปํ ๊ฒ์ด๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๊ธฐ์กด offsetTop ๊ฐ์ (์๋ ์บ๋ฒ์ค ์ฌ์ด์ฆ - ์ฌ์กฐ์ ๋ ์บ๋ฒ์ค ์ฌ์ด์ฆ) / 2์ ๊ฐ์ ์ถ๊ฐ์ ์ผ๋ก ๋ํด ์ฃผ์ด, ํ์ฌ ํ๋ฉด ์์ ๋ณด์ด๋ ์บ๋ฒ์ค์ ์ฌ์ด์ฆ์ ๋ง๋ ๋ธ๋ผ์ฐ์ ์ฐฝ ๊ฐ์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ์ฐํด์ฃผ์๋ค.