์ํฉ
A ํ์ด์ง์์ aํ๊ทธ ์ฌ๋ฌ๊ฐ์ ๋งํฌ๋ฅผ ๊ฑธ์ด์ ๋๋ฅด๋ฉด Bํ์ด์ง์ ๊ฐ๊ฐ ๋ค๋ฅธ ์์น๋ก ์ฐ๊ฒฐ๋๊ฒ ํ๋ ค๊ณ ํ๋ค. (์ฌ๊ธฐ์ Aํ์ด์ง์ Bํ์ด์ง๋ ๊ฐ๊ธฐ ๋ค๋ฅธ HTML์ด๋ค.)
Aํ์ด์ง
<div class="link">
<a href="../folder/text.html#content01">์ ๋ชฉ1</a>
<a href="../folder/text.html#content02">์ ๋ชฉ2</a>
<a href="../folder/text.html#content03">์ ๋ชฉ3</a>
<a href="../folder/text.html#content04">์ ๋ชฉ4</a>
...
</div>
Bํ์ด์ง
<h4 id="content01">์ปจํ
์ธ ์ ๋ชฉ 1</h4>
<div>์ปจํ
์ธ ...</div>
<h4 id="content02">์ปจํ
์ธ ์ ๋ชฉ 2</h4>
<div>์ปจํ
์ธ ...</div>
<h4 id="content03">์ปจํ
์ธ ์ ๋ชฉ 3</h4>
<div>์ปจํ
์ธ ...</div>
<h4 id="content04">์ปจํ
์ธ ์ ๋ชฉ 4</h4>
<div>์ปจํ
์ธ ...</div>
<h4 id="content05">์ปจํ
์ธ ์ ๋ชฉ 5</h4>
<div>์ปจํ
์ธ ...</div>
...
๋ฌธ์
ํญ์ ์๋จ์ css๊ฐ fixed๋ก ๊ณ ์ ๋๋ header๊ฐ ์์ด์ ๋งํฌ๋ก ์ด๋ํ์ ์ ์ํ๋ ์ ํํ ์์น์ ์ฒ์๋ถํฐ ๋ณด์ด์ง ์๊ณ ์ค๊ฐ๋ถํฐ ๋ณด์ด๋ ํ์์ด ์์๋ค.
์กฐ๊ฑด
Aํ์ด์ง์์ aํ๊ทธ๋ฅผ ๋๋ฅด๋ฉด Bํ์ด์ง์ ํด๋น ํด์์์ด๋๋ฅผ ๊ฐ์ง h4๊ฐ header ๋ฐ๋ก ์๋ ์ค๋๋ก ์คํฌ๋กค์ด ์ด๋๋์ด์ผ ํ๋ค.
ํด๊ฒฐ
Bํ์ด์ง์์ ์๋ ์ฝ๋๋ฅผ ์คํ์์ผ์ฃผ์๋ค.
// URL์ ํด์๊ฐ์ด ๋ณ๊ฒฝ๋ ๋๋ง๋ค ์คํฌ๋กค ์์น ์กฐ์
window.addEventListener("hashchange", function() {
var hash = location.hash;
if (hash !== "") {
var target = document.querySelector(hash);
if (target) {
var headerHeight = document.querySelector("header").offsetHeight;
var targetPosition = target.getBoundingClientRect().top;
window.scrollTo({
top: targetPosition + window.pageYOffset - headerHeight - 100,
behavior: "smooth"
});
}
}
});
// ์ด๊ธฐ ๋ก๋ฉ ์ URL์ ํด์๊ฐ์ ๋ฐ๋ผ ์คํฌ๋กค ์์น ์กฐ์
window.addEventListener("load", function() {
var hash = location.hash;
if (hash !== "") {
var target = document.querySelector(hash);
if (target) {
var headerHeight = document.querySelector("header").offsetHeight;
var targetPosition = target.getBoundingClientRect().top;
window.scrollTo({
top: targetPosition + window.pageYOffset - headerHeight - 100,
behavior: "auto"
});
}
}
});
ํด๋น ์ฝ๋๋ ํ์ด์ง ๋ก๋ฉ ์ ๋ธ๋ผ์ฐ์ ์ URL์์ ํด์๊ฐ์ ์ถ์ถํ๊ณ , ํด๋น ํด์๊ฐ์ ๊ฐ์ง ์์๊ฐ ์๋์ง ์ฐพ๋๋ค. ๊ทธ๋ฆฌ๊ณ ํด๋น ์์์ ์์น๋ฅผ ๊ณ์ฐํ์ฌ ์คํฌ๋กค ์์น๋ฅผ ์กฐ์ ํ๋ค.
๋ํ, URL์ ํด์๊ฐ์ด ๋ณ๊ฒฝ๋ ๋๋ง๋ค ์คํฌ๋กค ์์น๋ฅผ ์กฐ์ ํ๋๋ก ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ฅผ ๋ฑ๋กํ๋ค.
'๐จ JavaScript > ์์ฉํ์ฌ ์๋ํor๋ฌธ์ ํด๊ฒฐํ๊ธฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๋ํ : ํ์ ๋์ด ๊ณ์ฐํด์ ์๋๋ก ์๊ธฐ (0) | 2023.05.02 |
---|