Skip to content

섹션에 id를 부여해 URL 앵커로 이동할 수 있게 한다 - #28

Open
1005hoon wants to merge 1 commit into
mainfrom
feat/section-anchors
Open

섹션에 id를 부여해 URL 앵커로 이동할 수 있게 한다#28
1005hoon wants to merge 1 commit into
mainfrom
feat/section-anchors

Conversation

@1005hoon

@1005hoon 1005hoon commented Aug 10, 2026

Copy link
Copy Markdown
Collaborator

Closes #22

변경 사항

섹션 헤더에 고정된 id를 부여해 URL 앵커로 직접 이동할 수 있게 합니다.

  • 섹션 제목을 SectionHeading으로 통일한다
  • <section>에 로케일과 무관한 slug를 id로 지정한다
  • 제목 hover 시 퍼마링크를 표시한다
  • 앵커 이동 시 헤더에 가리지 않도록 scroll offset 적용한다
다크 라이트
pr-about pr-about-light
pr-community pr-community-light

리뷰 요청

아래 두 가지에 대해 의견을 구하고 싶습니다.

  1. 공개 URL에 사용될 slug 이름이 적절한지
  2. permalink를 우선 #으로 표시했는데, 별도 링크 아이콘을 추가하는 편이 나을지

앵커 동작은 prerender된 HTML에서 확인했습니다.

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Aug 10, 2026

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
dalestudy 20f9fd4 Commit Preview URL

Branch Preview URL
Aug 10 2026, 04:44 AM

@1005hoon
1005hoon force-pushed the feat/section-anchors branch 3 times, most recently from a6a8135 to dd59413 Compare August 10, 2026 03:55
@1005hoon
1005hoon marked this pull request as ready for review August 10, 2026 04:11
@1005hoon
1005hoon requested a review from DaleSeo August 10, 2026 04:11
각 페이지의 섹션 제목 스무 개에 로케일과 무관한 영어 슬러그를 id로 부여하고,
제목 옆에 그 섹션을 가리키는 permalink를 노출한다. 링크 하나로
"소개 페이지의 운영진 부분"처럼 특정 위치를 가리킬 수 있다.

- SectionHeading 컴포넌트를 추가하고 제목 스무 개를 교체한다. id는 감싸는
  section에 두고, 컴포넌트는 anchor로 같은 값을 받아 링크를 만든다.
- 슬러그는 src/anchors.ts의 ANCHORS에 모아 두고 section과 컴포넌트가 함께
  참조한다. 외부 링크가 이 값에 의존하므로 한번 공개하면 바꾸지 않는다.
- 미션과 비전, 커피챗과 모각코는 각자 h2를 가진 절이라 div를 section으로
  바꾼다. 관련 CSS가 자식 태그 선택자를 쓰지 않아 화면은 그대로다.
- CTA 배너 제목 세 개는 링크로 가리킬 목적지가 아니라 제외한다.
- #reviews 개별 규칙을 section[id]로 일반화하고, 헤더 높이를 --header-height로
  상수화해 scroll-margin-top이 이를 참조하게 한다.
- 경로에서 로케일을 읽는 useLocale 훅을 추가하면서 __root와 NotFoundPage에
  중복돼 있던 두 줄도 정리한다.

permalink 아이콘은 daleui에 링크 아이콘이 없어 우선 # 문자를 쓴다.

Closes #22
@1005hoon
1005hoon force-pushed the feat/section-anchors branch from dd59413 to 20f9fd4 Compare August 10, 2026 04:44

@DaleSeo DaleSeo left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@1005hoon 님, URL 앵커 구현 감사합니다. 그런데 제가 직접 테스트를 해보니 언어가 바뀔 때 앵커가 깨지는 이슈가 있는 것 같습니다. 그 밖에 다른 피드백은 댓글로 달았습니다.

Image

아 그리고 제가 출장 때문에 리뷰가 늦어서 죄송합니다. 리뷰가 한 명에게 의존하지 않도록 다음 PR 부터는 다른 기여자이신 @devkade 님께도 리뷰를 요청해주시면 좋을 것 같습니다. 😃

Comment on lines +22 to +28
<h2 className={className} style={style}>
<span className="heading-text">{title}</span>
{/* TODO: daleui에 링크 아이콘이 추가되면 Icon으로 교체한다 */}
<a className="heading-anchor" href={`#${anchor}`} aria-label={ANCHOR_LABEL[locale](title)}>
#
</a>
</h2>

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

#22 (comment) 에서 Vercel 블로그처럼 heading을 왼쪽 여백에 배치하면 콘텐츠 영역을 직접 차지하지 않으면서 부가 기능의 시각적 우선순위를 낮게 유지할 수 있다고 제안해 주셨고 제가 동의를 했던 것 같은데요. 현재 구현은 제목 오른쪽 인라인으로 되어 있고 콘텐츠 영역 안에 들어와 있습니다. 혹시 구현 과정에서 배치 방식을 변경하게 된 이유가 있었을까요?

)}

<section className="detail-container" style={{ paddingBlock: "48px 72px" }}>
<section className="detail-container" id={anchors.join} style={{ paddingBlock: "48px 72px" }}>

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AGENTS.md 에 "CTA 배너 제목처럼 링크로 가리킬 이유가 없는 제목은 예외"라고 적어두셨는데, 정작 같은 .join-cta 배너를 쓰는 다른 곳은 <h2> 그대로인데 여기만 앵커가 붙었습니다. 예외로 두지 않을 만한 이유가 따로 있었을까요?

Comment on lines +11 to +12
/** 감싸는 섹션의 id와 같은 값. 외부 링크가 의존하므로 한번 공개하면 바꾸지 않는다. */
anchor: string;

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

같은 슬러그를 <section id={anchors.x}><SectionHeading anchor={anchors.x} /> 두 군데에 따로 적어야 하고, 둘이 어긋나도 타입 검사나 빌드에서 잡아내지 못한 채 클릭해도 아무 반응이 없는 링크만 남게 됩니다. 지금은 AGENTS.md의 가이드로만 강제하고 있는데, 이 둘을 코드 차원에서 묶어둘 방법이 있을까요?

@DaleSeo
DaleSeo requested a review from devkade August 16, 2026 00:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

섹션에 id를 부여해 URL 앵커로 이동할 수 있게 하기

2 participants