Zoeeey
Stack flows in you
Zoeeey
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (155)
    • ๐Ÿ’ก UXUI (4)
      • UXUI (2)
      • UI (2)
      • UX (0)
    • ๐ŸŸจ JavaScript (66)
      • ๊ฐœ๋… (42)
      • ์ •๋ฆฌ (2)
      • ๋ฌธ์ œํ’€๊ธฐ (ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค, ์ฝ”๋”ฉ์• ํ”Œ) (15)
      • ์‘์šฉํ•˜์—ฌ ์ž๋™ํ™”or๋ฌธ์ œํ•ด๊ฒฐํ•˜๊ธฐ (2)
      • ๊ธฐํƒ€ (5)
    • โš›๏ธ React (49)
      • ๊ฐœ๋… (27)
      • ๊ฐœ๋…(Redux) (3)
      • ์ •๋ฆฌ (4)
      • ๋ฌธ์ œํ’€๊ธฐ (์ฝ”๋”ฉ์• ํ”Œ: React) (15)
    • ๐Ÿ“˜ TypeScript (10)
      • ๊ฐœ๋… (8)
      • ๋ฌธ์ œํ’€๊ธฐ (์ฝ”๋”ฉ์• ํ”Œ) (2)
    • ๐ŸŒ HTML,CSS (18)
      • ์‹ค๋ฌด์—์„œ ์ž์ฃผ ๋ฐœ์ƒํ•œ ์˜ค๋ฅ˜๋“ค (10)
      • ๋’ค๋Šฆ๊ฒŒ ์•Œ์•„์„œ ๋ผˆ์•„ํ”ˆ ์œ ์šฉํ•œ CSS (6)
      • ๊ธฐํƒ€ ์ž์ฃผ ์“ฐ๋Š” CSS (2)
    • ๐Ÿ’ป CS (8)
      • CS (5)
      • ์ •๊ทœํ‘œํ˜„์‹ (2)
      • Git,Github (1)

ํƒœ๊ทธ

  • useEffect
  • class
  • array
  • ์‚ผํ•ญ์—ฐ์‚ฐ์ž
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
  • TypeScript
  • UXUI
  • react
  • state
  • redux
  • ์ฝ”๋”ฉ์• ํ”Œ
  • CS
  • ์˜ค๋ฅ˜
  • JavaScript
  • axios
  • CSS
  • Ajax
  • Props
  • object
  • json
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
hELLO ยท Designed By ์ •์ƒ์šฐ.
Zoeeey

Stack flows in you

๐ŸŸจ JavaScript/์‘์šฉํ•˜์—ฌ ์ž๋™ํ™”or๋ฌธ์ œํ•ด๊ฒฐํ•˜๊ธฐ

๋ฌธ์ œํ•ด๊ฒฐ : hash๊ฐ’ ๋ฐ›์•„์„œ scroll ์กฐ์ •ํ•˜๊ธฐ

2023. 5. 12. 14:25

์ƒํ™ฉ

 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
    '๐ŸŸจ JavaScript/์‘์šฉํ•˜์—ฌ ์ž๋™ํ™”or๋ฌธ์ œํ•ด๊ฒฐํ•˜๊ธฐ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • ์ž๋™ํ™” : ํŒ์—… ๋†’์ด ๊ณ„์‚ฐํ•ด์„œ ์•„๋ž˜๋กœ ์Œ“๊ธฐ
    Zoeeey
    Zoeeey
    ๊ธธ๊ฒŒ ์ƒ๊ฐํ•˜๊ณ  ์งง๊ฒŒ ๊ทธ๋ฆฌ๊ธฐ

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”