HTML <input type="color">: 색 선택
color
유형의 <input>
요소는 사용자가 색을 선택하거나 입력할 수 있는 컨트롤입니다.
<input type="color">
에는 16진수 형식(#rrggbb
)의 알파 채널 없는 간단한 색만 입력할 수 있습니다. CSS의 표준 색 이름, 함수 표기법, 알파 채널을 포함하는 16진수 색 코드 등은 지원하지 않습니다.
실제 컨트롤의 외형은 브라우저와 플랫폼에 따라서 모습이 크게 달라질 수 있습니다. 입력받은 값의 형식 검증을 내장한 것을 제외하면 평범한 텍스트 입력 칸일 수도 있고, 플랫폼의 표준 색 선택 도구를 제공할 수도 있고, 브라우저가 별도로 제공하는 색 선택 도구를 보여줄 수도 있습니다.
<p>색을 결정하세요:</p>
<div>
<input type="color" id="head" name="head" value="#e66465">
<label for="head">머리</label>
</div>
<div>
<input type="color" id="body" name="body" value="#f6b73c">
<label for="body">몸통</label>
</div>
input {
margin: 0.4rem;
}
불러오는 중...
값
color
유형의 값은 16진수 형식의 RGB 색을 나타내는 7글자 문자열입니다. value
특성과 입력 값 모두 대문자와 소문자를 가리지 않고 받지만, 실제로 저장되는 값은 항상 소문자를 사용합니다. value
특성과 입력 값이 비어있거나 유효하지 않은 경우에는 값을 #000000
으로 취급하므로, <input type="color">
의 값은 항상 7글자 16진수 RGB 색 코드인 것으로 취급할 수 있습니다.
CSS 표준 색 이름이나 함수 표기법도 <input type="color">
에서는 유효하지 않은 값입니다. 알파 채널을 포함하는 9글자 16진수 색 코드(e.g. #009900aa
)도 잘못된 값이며 #000000
으로 저장합니다.
유효성 검증
사용자 에이전트가 색 선택 칸의 값을 7글자 소문자 16진수 표기법으로 변환할 수 있어야 유효합니다.
HTML 양식 검증은 서버에서 입력 데이터를 검증하는 것의 대안이 될 수 없습니다. HTML 코드를 직접 편집해서 검증을 우회하거나 아예 삭제하는 게 너무나 쉽기 때문입니다. 게다가 HTML을 아예 거치지 않고 서버로 직접 요청을 전송해버릴 수도 있습니다. 서버 측 코드가 입력 데이터 검증에 실패한다면 잘못된 형식이나 유형이나 크기의 데이터가 데이터베이스에 저장되어 큰 문제가 발생할 수 있습니다.
예제
사전에 정의한 색 견본 제공하기
브라우저가 지원하는 경우, <datalist>
와 <option>
요소를 <input type="color">
와 함께 사용하면 사전에 정의한 색 견본(스와치)을 제공할 수 있습니다.
<datalist>
요소는 제안하는 값을 나타내며, 특정 값으로 입력을 제한하지 않습니다. <input type="color">
에서도 마찬가지로, 사용자는 견본 색 외에도 색을 직접 선택할 수 있습니다.
<datalist id="list">
<option>#ff0000</option>
<option>#ee0000</option>
<option>#dd0000</option>
<option>#cc0000</option>
<option>#bb0000</option>
</datalist>
<input type="color" list="list" />
불러오는 중...
명세
브라우저 호환성
데스크톱 | 모바일 | ||||||
---|---|---|---|---|---|---|---|
iOS | Android | ||||||
Safari | Chrome | Firefox | Safari | Chrome | Firefox | Samsung Internet | |
type="color" |