<a href="/#01"> 이동이 안되는 문제

🙏SIR UI/UX 디자인 의뢰(~7/31)
<a href="/#01"> 이동이 안되는 문제

QA

<a href="/#01"> 이동이 안되는 문제

본문

안녕하세요. 그누보드를 사용하는 사이트이고 테마와 빌더는 사용하고 있지 않습니다.

 

홈페이지 공통 header에 <a href="/#01"> 라는 코드로 메인의 <id="01"> 섹션으로 이동하는 링크를 걸어두었습니다.

/sub/sub01.php 같은 다른 페이지에 있다가 <a href="/#01"> 링크를 클릭하면

메인의 <id="01"> 섹션으로 이동하지 않고

url이 https://sir.kr/#01 로 잠깐 보였다가 #01이 사라지더니

<id="01"> 섹션으로 이동하지 않고 메인페이지 상단으로만 보여집니다.

 

<a href="/index.php#01">

<a href="https://sir.kr/#01">

<a href="https://sir.kr/index.php#01">

같은 방식도 해보았지만 증상은 동일했습니다.

 

ㅠㅠ설명을 이해하셨을지 모르겠는데

이런 상황 겪어보신 분 계실까요? 해결방법이 궁금합니다.

이 질문에 댓글 쓰기 :

답변 3

HTML에서 #01 같은 앵커는 같은 페이지 내에서 DOM이 로드된 후에만 작동합니다. 그런데:

  • /sub/sub01.php/index.php#01으로 이동하면

  • 브라우저는 /index.php를 새로 로드하고, 그 후에 #01로 스크롤하려고 시도합니다.

  • 하지만 그 시점에 id="01" 요소가 DOMContentLoaded 이전에 없거나, 스크립트나 스타일에 의해 로딩 지연이 있으면, 자동 스크롤이 실패할 수 있습니다.

특히 #01 섹션이 스크립트로 동적으로 로드되거나, 로드 지연이 발생하는 구조일 때 이런 문제가 자주 발생합니다.

<script>
  document.addEventListener("DOMContentLoaded", function () {
    const hash = window.location.hash;
    if (hash) {
      // 약간의 딜레이 후에 스크롤 (지연 로딩 대응)
      setTimeout(function () {
        const target = document.querySelector(hash);
        if (target) {
          target.scrollIntoView({ behavior: 'smooth' });
        }
      }, 300); // 필요시 500ms로 조정
    }
  });
</script>

위 스크립트 하단에 추가하면 구동됨

 

답변을 작성하시기 전에 로그인 해주세요.
전체 128,852 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT