웹접근성 브라우저 확대 · 축소 · 초기화 기능 구현 방법
기술정보 25.07.28브라우저 화면 확대, 축소, 초기화 기능 구현 방법 (JavaScript)
웹사이트를 구현할 때 사용자 편의성을 고려한 화면 제어 기능은 점점 더 중요해지고 있습니다.
특히 고령자나 시각이 불편한 사용자를 위한 화면 확대/축소 기능은 접근성을 높이는 데 유용합니다.
이번 포스팅에서는 JavaScript를 사용하여 브라우저의 화면을 확대하거나 축소하고,
다시 기본 크기로 초기화하는 방법을 실용적인 코드 예제와 함께 설명합니다.
Q1. JavaScript로 웹페이지 화면 크기를 조절할 수 있나요?
네. document.body.style.zoom 속성을 이용하면 브라우저 내에서 HTML 요소의 렌더링 배율을 조정할 수 있습니다.
이 방식은 CSS 변환(transform)이나 뷰포트 조정과는 달리 전체 콘텐츠를 간단하게 확대/축소하는 데 유용합니다.
Q2. 확대, 축소뿐 아니라 기본 화면 크기로 초기화하는 기능도 구현할 수 있나요?
가능합니다. JavaScript에서 zoomLevel을 별도로 관리하고,
zoom = 1로 초기화함으로써 사용자가 화면을 원래 비율로 쉽게 복원할 수 있도록 할 수 있습니다.
Q3. 웹접근성이나 UX 측면에서 이런 기능을 구현하는 것이 바람직한가요?
사용자 설정을 존중하는 접근이 중요하지만, 특정 서비스(예: 교육 플랫폼, 고령자 대상 서비스 등)에서는
사용자 화면 조작 기능을 별도로 제공하는 것이 UX 개선에 긍정적으로 작용할 수 있습니다.
단, 확대/축소를 적용할 경우 폰트나 레이아웃이 깨지지 않도록 유연한 CSS 설계가 병행되어야 합니다.
화면 제어 기능 구현 예제
아래는 JavaScript로 구현한 간단한 확대, 축소, 초기화 기능 코드입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | let zoomLevel = 1; function zoomIn() { zoomLevel += 0.1; document.body.style.zoom = zoomLevel.toFixed(2); } function zoomOut() { zoomLevel -= 0.1; document.body.style.zoom = zoomLevel.toFixed(2); } function resetZoom() { zoomLevel = 1; document.body.style.zoom = zoomLevel.toFixed(2); } | cs |
기술 설명
1. zoomLevel 변수
사용자의 확대/축소 상태를 저장합니다. 초기값은 1이며, 10% 단위로 조절됩니다.
2. .toFixed(2)
부동 소수점 연산 시 소수점 둘째 자리까지 고정하여 확대/축소 단계가 일관되도록 합니다.
3. style.zoom
CSS zoom 속성은 모든 브라우저에서 동일하게 지원되는 것은 아니지만, 대부분의 데스크탑 브라우저에서 기본적으로 작동합니다.
모바일 브라우저에서는 다르게 동작할 수 있으므로, 모바일 대응은 별도 구현이 필요합니다.
[ 적용 예제 ]
See the Pen zoom by designkits (@designkits) on CodePen.
주의사항 및 확장 가능성
CSS zoom은 비표준 속성이므로 크로스 브라우징 시 주의가 필요합니다.
표준 방식인 transform: scale()과는 달리 layout에 직접적인 영향을 주기 때문에 일부 구성 요소가 깨질 수 있습니다.
모바일에서는 meta viewport 설정을 통해 확대/축소를 제어해야 하며, JavaScript 확대/축소 방식은 의도한 대로 작동하지 않을 수 있습니다.
향후 키보드 단축키(Ctrl +, Ctrl -, Ctrl 0) 또는 마우스 휠 이벤트와 연동하여 접근성을 강화할 수 있습니다.
웹사이트 사용자에게 화면 크기를 직접 조절할 수 있는 기능을 제공하는 것은 단순한 편의 기능을 넘어 사용자 중심 UI/UX 설계의 중요한 일부가 됩니다.
JavaScript의 zoom 속성과 적절한 로직을 통해 간단하지만 실용적인 확대/축소/초기화 기능을 구현해 보시기 바랍니다.
이 기능은 특히 정보 전달 중심의 포털 사이트, 교육 콘텐츠 플랫폼, 인트라넷 등에서 활용도가 높습니다.
상황에 맞게 커스터마이징하여 여러분의 프로젝트에 적용해보세요.