๐ ๋ถ๋๋ฝ๊ฒ scroll ํ๋ ๋ฐฉ๋ฒ ์์๋ณด๊ธฐ
medium์ ๋ณด๋ค๊ฐ Div์ ๋งจ ์๋๋ก scroll ํ๋ ๋ช ๊ฐ์ง ๋ฐฉ๋ฒ(scrollTop, clientHeight, scrollIntoView)์ ์์ฑํ ๊ธ์ ๋ณด๋ ์ค scrollIntoView ๋ฉ์๋๊ฐ ๊ฐํธํด ๋ณด์ฌ์ ํด๋น ๋ฉ์๋๋ก ์ง์ ๊ธฐ๋ฅ์ ์ง์ ๊ตฌํํ๋ฉด์ ๋ฐฐ์ด ์ ์ ๋จ๊ธด๋ค. scrollIntoView ๋ฉ์๋๋ scrollIntoView()๊ฐ ํธ์ถ ๋ ์์๊ฐ ์ฌ์ฉ์์๊ฒ ํ์๋๋๋ก ์์์ ์์ ์ปจํ
์ด๋๋ฅผ ์คํฌ๋กคํ๋ ๋ฉ์๋์ธ๋ฐ, caniuse ์ฌ์ดํธ์์ ๋ณด๋ฉด ๊ฑฐ์ ๋๋ถ๋ถ์ ๋ธ๋ผ์ฐ์ ์์ ์ง์ํ๋ฏ๋ก ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ง์ ๊ณ ๋ คํ ๋ ์ฌ์ฉํด๋ ๊ด์ฐฎ์ ๋ฉ์๋์ธ๊ฒ์ ํ์ธํ ์ ์๋ค.

MDN์ ์ฐธ๊ณ ํ๋ฉด ์ ์ ์์ง๋ง scrollIntoView ๋ฉ์๋์ ์ธ์๋ ์ด 2๊ฐ๋ฅผ ๋ฐ๋๋ฐ, alignToTop๊ณผ scrollIntoViewOptions๊ฐ ๋๊ฒ ๋ค. ์ฒซ๋ฒ์งธ ์ธ์์ธ booleanํํ์ alignToTop=true๋ element ์์์ ์๋จ์ ๊ธฐ์ค์ผ๋ก, alignToTop=false๋ element ์์์ ํ๋จ์ ๊ธฐ์ค์ผ๋ก ์คํฌ๋กค์ ์ค์ ํ๋ค.
๋ ๋ฒ์งธ ์ธ์์ธ scrollIntoViewOptions๋ ์ต๋ 3๊ฐ์ ๊ฐ์ฒด๋ก ๊ฐ์ ๋๊ฒจ๋ฐ์ ์ ์๋๋ฐ, behavior(auto(default) || smooth), block(start(default) || center || end || nearest), inline(start(default) || center || end || nearest) ๊ฐ์ ๋๊ฒจ๋ฐ๋๋ค. alignToTop ์๋ตํ๋๋ผ๋ ๋ถ๋๋ฌ์ด ์์ง์์ ์ฌ์ฉํด์ผ ํ๊ธฐ ๋๋ฌธ์ scrollIntoViewOptions์์ smooth๋ฅผ ํฌํจํ๊ณ , block์ ์๋จ ํน์ ํ๋จ๊น์ง ๋ด๋ ค๊ฐ์ผํ๋ฏ๋ก block๋ ํฌํจํ๋ค. ์์ธํ ์ฝ๋๋ ์ง์ ์์ฑํ copePen์ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด ๋๋ค. ์ด์ง ์ด์ํ ์ ์ด codepen browser์์ scrollํ๋ฉด ์ ์์ ์ผ๋ก ์๋๋๋๋ฐ `embed` ํ ๊ฒฐ๊ณผ์์ `scroll` ๋ฒํผ์ ๋๋ฅด๋ฉด ํ์ฌ document.body๊น์ง ๊ฐ์ด scroll์ด ๋๋๋ฐ ์ ์ด๋ ๊ฒ ๋๋์ง ์ ๋ชจ๋ฅด๊ฒ ๋ค. ๋ธ๋ผ์ฐ์ ๊น์ง ์์ง์ด๋ ๊ฒ์ด ๋ถํธํ๋ค๋ฉด ์ฐ์ธก ์๋จ์ `edit on codepen` ๊ธ์ ๋๋ฅด๋ฉด ์ฌ์ดํธ์ ๋ค์ด๊ฐ์ง๋๋ฐ ํด๋น ์ฌ์ดํธ์์ ๋ณด๋๊ฒ์ ๊ถ์ฅํ๋ค.
See the Pen Untitled by an (@YWTechIT) on CodePen.
reference
๋๊ธ