๐ ๋ถ๋๋ฝ๊ฒ 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
๋๊ธ