From e58f0b3da2ec2cba8ff187a704f4fd9f620165a3 Mon Sep 17 00:00:00 2001 From: seonghobae <8172694+seonghobae@users.noreply.github.com> Date: Tue, 21 Jul 2026 20:58:42 +0000 Subject: [PATCH] =?UTF-8?q?=EB=B3=B8=EB=AC=B8=EC=9C=BC=EB=A1=9C=20?= =?UTF-8?q?=EA=B1=B4=EB=84=88=EB=9B=B0=EA=B8=B0=20=EB=A7=81=ED=81=AC=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=20=EB=B0=8F=20=EC=A0=91=EA=B7=BC=EC=84=B1=20?= =?UTF-8?q?=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - `
` 태그에 `id="main-content"` 추가 - `` 바로 아래에 '본문으로 건너뛰기' `.skip-link` 추가 - 테스트 케이스 및 검증 업데이트 - .jules/palette.md 업데이트 --- .jules/palette.md | 4 ++++ src/main/kotlin/html4tree/main.kt | 21 ++++++++++++++++++++- src/test/kotlin/html4tree/MainTest.kt | 4 +++- 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/.jules/palette.md b/.jules/palette.md index 9a12c9d..e66c549 100644 --- a/.jules/palette.md +++ b/.jules/palette.md @@ -48,3 +48,7 @@ ## 2024-08-01 - 네이티브 브라우저 UI의 다크 모드 지원 강제 **학습:** CSS 미디어 쿼리(`@media (prefers-color-scheme: dark)`)를 통해 다크 모드를 지원하더라도, 브라우저의 네이티브 UI 요소(스크롤바, 기본 폼 컨트롤, 기본 백그라운드 등)는 테마 변경을 인식하지 못해 어두운 테마 환경에서 밝은 스크롤바가 표시되는 등 시각적 불일치를 초래합니다. **조치:** 항상 HTML 문서의 `` 영역에 `` 메타 태그를 명시적으로 추가하여 브라우저 수준에서 사용자의 시스템 테마(다크 모드 등)를 완전히 상속받아 일관성 있는 네이티브 UI를 렌더링하도록 보장하십시오. + +## 2024-08-01 - 본문으로 건너뛰기 링크 추가 +**학습:** 키보드나 스크린 리더 사용자는 매 페이지마다 반복되는 내비게이션(디렉토리 상위 이동 등)을 거쳐야 메인 콘텐츠(디렉토리 안의 파일 목록)에 도달할 수 있어 피로도를 느낍니다. +**조치:** 항상 반복되는 내비게이션 영역 위( 바로 아래)에 화면에 숨겨져 있다가 포커스를 받을 때 나타나는 '본문으로 건너뛰기' 링크를 추가하고 메인 랜드마크 `
`로 연결하여 접근성을 높이십시오. diff --git a/src/main/kotlin/html4tree/main.kt b/src/main/kotlin/html4tree/main.kt index b455862..6e716b9 100644 --- a/src/main/kotlin/html4tree/main.kt +++ b/src/main/kotlin/html4tree/main.kt @@ -308,6 +308,24 @@ fun process_dir(curr_dir: File, excludeSet: Set? = null, dirFiles: Array opacity: 0.7; font-style: italic; } + .skip-link { + position: absolute; + top: -40px; + left: 0; + background: #0969da; + color: white; + padding: 8px; + z-index: 100; + transition: top 0.2s ease; + } + .skip-link:focus { + top: 0; + } + @media (prefers-reduced-motion: reduce) { + .skip-link { + transition: none; + } + } """ val styleHash = "sha256-" + Base64.getEncoder().encodeToString(MessageDigest.getInstance("SHA-256").digest(cssContent.toByteArray(Charsets.UTF_8))) @@ -331,7 +349,8 @@ ${cssContent} ${css} -
+ +

${curr_dir.getName().escapeHtml()}