Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

Modernizr로 HTML5 기능 감지하기: 브라우저 호환성 확인 가이드

Modernizr란 무엇인가?

Modernizr는 최신 웹 기술(HTML5, CSS3 등)이 사용자의 브라우저에서 기본적으로 지원되는지 여부를 감지해주는 경량 자바스크립트 라이브러리입니다.

웹 표준이 빠르게 발전하면서 각 브라우저마다 지원하는 기능의 범위가 달라졌습니다. Modernizr를 사용하면 사용자 브라우저가 특정 기능을 지원하는지 일일이 확인하지 않고도, 자동으로 감지하여 그에 맞는 코드나 스타일을 적용할 수 있습니다. 이를 통해 구형 브라우저 사용자에게도 안정적인 웹 경험을 제공할 수 있습니다.

Modernizr 설치 및 기본 사용법

Modernizr는 공식 사이트에서 다운로드한 후 다음과 같이 페이지에 포함시키면 됩니다.

<script src="modernizr.min.js"></script>

라이브러리가 로드되면 전역 객체인 Modernizr를 통해 각 기능의 지원 여부를 불리언(Boolean) 값으로 확인할 수 있습니다.

JavaScript 예제

if (Modernizr.canvas) {
  // Canvas를 지원하는 경우 실행할 코드
} else {
  // 미지원 브라우저를 위한 대체(fallback) 코드
}

CSS 예제

Modernizr는 감지 결과에 따라 <html> 요소에 canvas, no-canvas 같은 클래스를 자동으로 추가합니다. 따라서 CSS에서도 손쉽게 분기 처리가 가능합니다.

.canvas .chart { display: block; }
.no-canvas .chart { display: none; }

Modernizr로 감지 가능한 주요 기능

아래 표는 Modernizr가 감지할 수 있는 대표적인 웹 기술 목록입니다. 각 기능별로 CSS 클래스명과 JavaScript 확인 방법을 함께 정리했습니다.

감지 항목CSS 클래스JavaScript 확인
@font-face (웹폰트).fontfaceModernizr.fontface
Canvas.canvasModernizr.canvas
Canvas Text.canvastextModernizr.canvastext
HTML5 오디오.audioModernizr.audio
HTML5 오디오 포맷해당 없음Modernizr.audio[format]
HTML5 비디오.videoModernizr.video
HTML5 비디오 포맷해당 없음Modernizr.video[format]
rgba().rgbaModernizr.rgba
hsla().hslaModernizr.hsla
border-image.borderimageModernizr.borderimage
border-radius.borderradiusModernizr.borderradius
box-shadow.boxshadowModernizr.boxshadow
다중 배경(Multiple backgrounds).multiplebgsModernizr.multiplebgs
투명도(Opacity).opacityModernizr.opacity
CSS 애니메이션.cssanimationsModernizr.cssanimations
CSS 멀티 컬럼.csscolumnsModernizr.csscolumns
CSS 그라디언트.cssgradientsModernizr.cssgradients
CSS 반사 효과(Reflections).cssreflectionsModernizr.cssreflections
CSS 2D 변형(Transforms).csstransformsModernizr.csstransforms
CSS 3D 변형(Transforms).csstransforms3dModernizr.csstransforms3d
CSS 전환(Transitions).csstransitionsModernizr.csstransitions
Geolocation API.geolocationModernizr.geolocation
입력 타입(Input Types)해당 없음Modernizr.inputtypes[type]
입력 속성(Input Attributes)해당 없음Modernizr.input[attribute]
localStorage.localstorageModernizr.localstorage
sessionStorage.sessionstorageModernizr.sessionstorage
Web Workers.webworkersModernizr.webworkers
applicationCache.applicationcacheModernizr.applicationcache
SVG.svgModernizr.svg
SVG 클립 패스(Clip Paths).svgclippathsModernizr.svgclippaths
SMIL.smilModernizr.smil
Web SQL Database.websqldatabaseModernizr.websqldatabase
IndexedDB.indexeddbModernizr.indexeddb
Web Sockets.websocketsModernizr.websockets
hashchange 이벤트.hashchangeModernizr.hashchange
History 관리.historymanagementModernizr.historymanagement
드래그 앤 드롭(Drag and Drop).draganddropModernizr.draganddrop
창 간 메시징(Cross-window Messaging).crosswindowmessagingModernizr.crosswindowmessaging
addTest() 플러그인 API해당 없음Modernizr.addTest(str, fn)

정리

Modernizr는 브라우저별 기능 차이로 인한 문제를 해결하는 데 매우 유용한 도구입니다. 사용자 에이전트(User Agent) 문자열을 추측하는 방식이 아니라 실제 기능을 직접 테스트하여 정확한 결과를 제공하며, 이를 통해 점진적 향상(Progressive Enhancement)과 우아한 성능 저하(Graceful Degradation) 전략을 손쉽게 구현할 수 있습니다. 최신 웹 프로젝트에서 크로스 브라우저 호환성을 확보하고 싶다면 Modernizr의 도입을 적극적으로 고려해 보시기 바랍니다.