- 웹에서 JS 의존 기능을 HTML/CSS로 대체할 수 있는 최신 방법들을 소개
-
details·summary,datalist,popover등 표준 요소를 활용해 아코디언, 자동완성, 모달, 오프스크린 내비게이션을 구현 - 이러한 접근은 다운로드·평가·메모리 사용량을 줄여 성능과 사용자 경험을 개선
- 각 기능별로 CodePen 예시, MDN 문서, 브라우저 호환성 정보가 함께 제공
- JS를 꼭 필요한 영역에만 사용하고, HTML/CSS의 발전된 기능을 적극 활용해야 함
HTML과 CSS로 JS 기능 대체
- 오랜 기간 JavaScript는 HTML과 CSS로 구현할 수 없는 기능을 담당해 왔음
- 그러나 HTML과 CSS의 기능이 확장되면서, 일부 JS 기능을 네이티브 웹 기술로 대체 가능
- JS는 다운로드·압축 해제·평가·메모리 유지가 필요하므로, 가능한 기능은 HTML/CSS로 이관하는 것이 효율적
- JS는 복잡한 로직에 집중하고, 단순 UI 제어는 HTML/CSS에 위임하는 방향 제시
아코디언 / 확장 콘텐츠 패널
-
details와summary요소로 JS 없이 아코디언 구현 가능- 콘텐츠를 클릭으로 열고 닫을 수 있으며,
open속성으로 기본 상태 지정 - 동일한
name속성을 사용하면 하나의 패널만 열림
- 콘텐츠를 클릭으로 열고 닫을 수 있으며,
- CSS로 스타일링하거나 JS로 열림/닫힘을 제어할 수도 있음
- 관련 자료: MDN
details문서, CodePen 예시, 브라우저 호환성 표
자동완성 제안 입력창
-
input과datalist조합으로 자동 필터링 드롭다운 구현- 입력 시 제안 목록이 자동으로 필터링됨
- 텍스트 외에도
number,time등 다양한 입력 타입 지원
- Firefox는 현재 텍스트 기반 입력만 지원하며, 모바일 접근성 제약 존재
- 관련 자료: MDN
datalist문서, SitePoint 튜토리얼, 브라우저 호환성 표
모달 / 팝오버
-
popover및popovertarget속성으로 JS 없는 모달·팝오버 구현-
auto,hint,manual세 가지 모드 제공 -
auto는 외부 클릭이나 ESC로 닫힘,manual은 수동으로만 닫힘
-
- Firefox 및 iOS는
hint모드 미지원 - 관련 자료: MDN
popover문서, Chrome 블로그, CodePen 예시, 접근성 관련 영상
오프스크린 내비게이션 / 콘텐츠
-
popover기능을 활용해 오프스크린 내비게이션 메뉴 구현 가능-
nav요소를 사용해 의미 부여, CSStranslate로 화면 안팎 이동 - 외부 클릭 시 닫히며,
popover="manual"로 수동 닫기 설정 가능 -
::backdrop가상 요소로 배경 반투명 처리 가능
-
- 관련 자료: MDN Popover API, Chrome 블로그, CodePen 예시
결론
- JS의 강력함을 인정하되, 필요한 곳에만 사용해야 함
- 최근 HTML/CSS의 발전으로 JS 없는 대안이 다수 등장
- 더 많은 예시는 작성자의 블로그 글 “Replace JS with No-JS or Lo-JS Options”에서 확인 가능
- JS 최소화와 성능 최적화를 통한 사용자 경험 개선 강조