์นํ์ด์ง๋ฅผ ๋ณด๋ฉด ์ํ์ด์ง๋ก ์ด๋ฃจ์ด์ง ํ์ด์ง๋ค๋ ๋ง์ด ์์ต๋๋ค.
์ด๋ฐ ํ์ด์ง๋ค์ ๋ณด๋ฉด ์คํฌ๋กค์ ๋ฐ๋ผ์ ํ์ด์ง๊ฐ ๋ณ๊ฒฝ ๋๋๋ฐ,
๊ฐ ์น์
์ด ํ๋ฉด ์๋จ์ ์ฐฉ! ํ๊ณ ๋ถ๋ ๋ชจ์ต๋ค์ ๋ณผ์๊ฐ ์์ต๋๋ค.
JS์์ ์คํฌ๋กค ์ด๋ฒคํธ๋ฅผ ํตํด ๊ตฌํํ ์ ์์ง๋ง,
CSS๋ฅผ ํตํด ๊ตฌํํด ๋ผ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.!

์์ ํ์ด์ง : ๋ฒคํฌ ์ฝ๋ฆฌ์
๋ฐฑ๋ฒ ๋งํด ๋ดค์ ์ด๋ค๊ฑธ ํ๋ ค๊ณ ํ๋์ง ์ง์ ๋์ผ๋ก ๋ณด๋๊ฒ ์ข์ ๊ฒ ๊ฐ์
์์๋ก ์ค์ ์ ์ฉ๋ ์น์ฌ์ดํธ๋ฅผ ๊ฐ์ ธ์๋ดค์ต๋๋ค.
์ ๊ธฐ๋ฅ์ CSS์ Scroll Snap์ ์ด์ฉํด์ ๊ตฌํํด ๋ผ ์ ์์ต๋๋ค!
๋ฌด์จ ๊ธฐ๋ฅ์ ๋ฐฐ์ฐ๊ธฐ ์ ์ ๊ณต์๋ฌธ์๋ฅผ ๋ณด๋ ์ต๊ด์ ์กฐ๊ธ์ฉ ๋ค์ด๊ณ ์์ต๋๋ค.
๊ทธ๋์ ์ด๋ฒ์๋ ํ๋ฒ ํ์ธํด ๋ณด๊ณ ์ ํฉ๋๋ค ใ
ใ
๊ณต์๋ฌธ์๋ฅผ ๋ณด๋ฉด scroll-snap-type๊ณผ scroll-snap-align์ ์ฝ๋๋ฅผ ํ์ฉํด
์ด๋ฐ ์ด๋ฒคํธ๋ฅผ ๊ตฌํํด ๋ผ ์ ์๊ฒ ์ต๋๋ค.
scroll-snap-type์ ์น์
๋ค์ ๊ฐ์ธ๊ณ ์๋ ๋ถ๋ถ์ ์ ์ฉํ๊ณ
scroll-snap-align์ ๊ฐ ์น์
์ ๊ฐ๊ฐ ์ ์ฉํด ์ฃผ๋ฉด ๋ฉ๋๋ค.
const ScrollSnapWrap = styled.div`
scroll-snap-type: y mandatory;
height: 100vh;
overflow-y: scroll;
`;
const SnapDiv = styled.div`
scroll-snap-align: start;
display: flex;
align-items: center;
justify-content: center;
height: 100vh;
border: 5px solid red;
text-align: center;
font-size: 100px;
`;
export const TestMs = () => {
return (
<>
<ScrollSnapWrap>
<SnapDiv>1</SnapDiv>
<SnapDiv>2</SnapDiv>
<SnapDiv>3</SnapDiv>
<SnapDiv>4</SnapDiv>
<SnapDiv>5</SnapDiv>
</ScrollSnapWrap>
</>
);
};
scroll-snap-type์ ์ด๋ค ๋ฐฉํฅ์ผ๋ก ์คํฌ๋กค์ ํ ๊ฒ์ด๊ณ ,
ํจ๊ณผ ์ ์ฉ์ ๋ํ ์๊ฒฉ๋๋ฅผ ์ ํ ์ ์์ต๋๋ค.
์๊ฒฉ๋๋ฅผ ์ ํ๋ ์ข
๋ฅ๋ mandatory proximity๊ฐ ์์ต๋๋ค.
scroll-snap-align์ ์คํฌ๋กค์ ์์ง์์ ์ ์ด๋ค ๋ถ๋ถ์ ๋ฌ๋ผ๋ถ๊ฒ ํ ์ง๋ฅผ ์ ํฉ๋๋ค.
start center end ์ ์ข
๋ฅ๊ฐ ์๋๋ฐ,
๊ธฐ์ค์ ์๋จ์ผ๋ก ์ค์ง ๊ฐ์ด๋ฐ๋ก ์ค์ง ๋ฐ๋ฅ์ผ๋ก ์ค์ง ๊ฒฐ์ ํด ์ค๋๋ค.

ํด๋น ํ๋ฉด์ mandatory๋ก ์ ์ฉํด ๋ดค๋๋ฐ,
mandatory๊ฐ proximity ๋ณด๋ค ๋ ์๊ฒฉํ๊ฒ ์ ์ฉ์ด ๋๋ ๊ฒ ๊ฐ์ต๋๋ค!
ํด๋น ๊ธฐ๋ฅ์ ํ์ฉํ๋ฉด ๊ฐ๋จํ๊ฒ ๋ฉ์ง ํ๋ฉด์ ๊ตฌํํ ์ ์๊ฒ ์ต๋๋ค!
๊ฐ์ธ์ ์ธ ํ์ต์ ํตํด ๋๋ง์ ๊ฐ๋ฐ ๊ณต๋ต์ง์ ๋ง๋๋ ๊ณผ์ ์
๋๋ค.
ํน ์๊ธฐ ๋ด์ฉ์ ๋ํด ์์ ํด์ผํ ๋ถ๋ถ์ด๋ ๋ ๊ณต๋ถํ์ผ๋ฉด ํ๋ ๋ถ๋ถ์ด ์๋ค๋ฉด
์ธ์ ๋ ๋๊ธ๋ก ์๋ ค์ฃผ์ธ์!
์น์ ์ ๊ธฐ๋ฐํ ํผ๋๋ฐฑ์ ์ธ์ ๋ ๊ฐ์ฌํฉ๋๋ค.
์ฐธ๊ณ ์๋ฃ
Scroll Snap ๊ณต์๋ฌธ์
์๋ ํ์ธ์ ํน์ ํด๋น ๊ธฐ๋ฅ์ ํ์ฉํด์ https://exergy21.imweb.me/ ์ ์ ์ฉ์ํฌ ์ ์์๊น์?!