WCAG 색상 대비 검사기 - 색상 접근성 검사 온라인
WCAG 2.1 AA 및 AAA 기준에 따른 색상 대비 비율을 검사합니다. 일반 텍스트, 큰 텍스트, UI 구성요소에 대한 즉시 판정 — 100% 클라이언트 사이드.
자주 묻는 질문
WCAG 색상 대비 검사기란 무엇인가요?
WCAG 색상 대비 검사기는 두 색상(일반적으로 전경 텍스트와 배경) 사이의 대비 비율을 계산하고, 해당 조합이 WCAG(웹 콘텐츠 접근성 지침) 2.1 접근성 표준을 충족하는지 평가하는 온라인 도구입니다. AA(최소, 일반 텍스트 4.5:1) 및 AAA(강화, 일반 텍스트 7:1) 두 수준의 적합성을 검사하여 저시력 사용자를 포함한 모든 사용자가 콘텐츠를 읽을 수 있도록 도와줍니다.
이 도구는 어떻게 사용하나요?
HEX, RGB 또는 HSL 형식으로 전경(텍스트) 색상을 입력하거나 색상 선택기를 사용하세요. 배경 색상도 같은 방법으로 입력합니다. 대비 비율이 즉시 계산되어 표시됩니다. WCAG 적합성 표에서 일반 텍스트, 큰 텍스트, UI 구성요소에 대한 AA/AAA 수준의 통과/실패 상태를 확인하세요. 조합이 실패하면 추천 대체 색상을 확인하세요. 교환 버튼으로 전경색과 배경색을 바꿀 수 있습니다.
색상 데이터는 안전한가요? 서버로 전송되나요?
색상 데이터는 100% 안전하며 브라우저를 벗어나지 않습니다. 대비 비율 계산은 클라이언트 사이드 JavaScript에서 전적으로 실행되는 표준 수학 공식을 사용합니다. 색상 값, 결과 또는 기타 데이터가 서버로 전송되지 않습니다.
WCAG AA와 AAA의 차이점은 무엇인가요?
WCAG AA는 대부분의 접근성 법규에서 요구하는 최소 적합성 수준입니다. 일반 텍스트에 4.5:1, 큰 텍스트에 3:1의 대비 비율을 요구합니다. WCAG AAA는 향상된 가독성을 제공하는 강화 적합성 수준으로, 일반 텍스트에 7:1, 큰 텍스트에 4.5:1을 요구합니다.
WCAG에서 '큰 텍스트'란 무엇인가요?
WCAG 2.1에 따르면, 큰 텍스트는 일반 굵기로 18pt(24px) 이상이거나 볼드 굵기로 14pt(18.5px) 이상인 텍스트를 말합니다. 큰 텍스트는 더 읽기 쉽기 때문에 대비 요구사항이 낮습니다(AA: 3:1, AAA: 4.5:1).
대비 비율 공식은 무엇인가요?
WCAG 2.1 대비 비율은 세 단계로 계산됩니다: (1) 각 sRGB 색상 채널을 감마 보정을 통해 선형 광으로 변환, (2) 가중 공식 L = 0.2126*R + 0.7152*G + 0.0722*B로 상대 휘도 계산, (3) (L_밝은색 + 0.05) / (L_어두운색 + 0.05)로 비율 계산. 결과는 1:1(동일한 색상)에서 21:1(최대 대비)까지입니다.
'UI 구성요소' 또는 '비텍스트 대비'란 무엇인가요?
WCAG 2.1 성공 기준 1.4.11(비텍스트 대비)은 정보를 전달하는 시각적 요소(양식 필드 테두리, 버튼 외곽선, 초점 표시자, 아이콘, 차트 요소 등)에 최소 3:1의 대비 비율을 요구합니다. 이는 텍스트 대비 요구사항과 별개이며, 대화형 구성요소와 의미 있는 그래픽이 저시력 사용자에게 구별 가능하도록 보장합니다.
코드 예제
// WCAG Color Contrast Checker
function sRGBtoLinear(channel) {
const c = channel / 255;
return c <= 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);
}
function getRelativeLuminance(r, g, b) {
return (
0.2126 * sRGBtoLinear(r) +
0.7152 * sRGBtoLinear(g) +
0.0722 * sRGBtoLinear(b)
);
}
function getContrastRatio(fg, bg) {
const l1 = getRelativeLuminance(...fg);
const l2 = getRelativeLuminance(...bg);
const lighter = Math.max(l1, l2);
const darker = Math.min(l1, l2);
return (lighter + 0.05) / (darker + 0.05);
}
function checkWCAG(ratio) {
return {
ratio: parseFloat(ratio.toFixed(2)),
aa: {
normalText: ratio >= 4.5,
largeText: ratio >= 3,
uiComponents: ratio >= 3,
},
aaa: {
normalText: ratio >= 7,
largeText: ratio >= 4.5,
},
};
}
// Usage
const fg = [26, 26, 26];
const bg = [255, 255, 255];
const ratio = getContrastRatio(fg, bg);
console.log(`Contrast Ratio: ${ratio.toFixed(2)}:1`);
const result = checkWCAG(ratio);
console.log('AA Normal Text:', result.aa.normalText ? 'Pass' : 'Fail');
console.log('AAA Normal Text:', result.aaa.normalText ? 'Pass' : 'Fail');