정의 및 사용 방법
min 속성은 해당 요소의 최솟값을 지정합니다.
사용 가능한 요소는 정해져 있으며 그 값의 의미는 요소마다 다릅니다.
사용 가능한 요소
min 속성은 모든 요소에 공통으로 적용할 수 있는 글로벌 속성이 아닙니다.
사용 가능한 요소가 정해져 있고 그 값의 의미는 요소마다 다르며, 특정 유형에서만 지정할 수 있습니다.
알아두세요!
해당 요소에 유효한 max 속성이 설정되어 있다면, min 속성 값은 반드시 그 값보다 작거나 같아야 합니다.
예제
다음은 min 속성이 사용 가능한 요소별로, 그 최솟값이 의미하는 바를 살펴보겠습니다.
<input>
<input>에서 min 속성은 해당 컨트롤 요소가 가질 수 있는 최솟값입니다.
일부 유형에서 사용가능합니다.
사용자가 값을 단계별로 입력하거나 선택할 수 있는 다음의 유형들에서만 적용됩니다.
<input type="date"><input type="time"><input type="datetime-local"><input type="number"><input type="range"><input type="month"><input type="week">
<input type="date">
선택할 수 있는 허용 가능한 최소 날짜를 설정합니다.
즉, 사용자가 선택할 수 있는 가장 첫 번째 날짜를 지정합니다.
날짜는 YYYY-MM-DD 형식으로 입력해야 합니다.
<input type="date" value="2024-10-17" min="2024-10-08">
브라우저에서 제공하는 기본 UI에서는, min로 지정된 날짜 이전의 날짜를 사용자가 선택할 수 없도록 자동으로 제한합니다.
브라우저는 폼 제출 시, 해당 요소에 입력되거나 선택된 날짜가 지정된 최소 날짜 이전인지 아닌지 유효성 검사를 시행합니다.
<input type="time">
선택할 수 있는 허용 가능한 최소 시간을 설정합니다.
즉, 이 값은 사용자가 선택할 수 있는 가장 첫 번째 시간을 지정합니다.
시간은 분 단위까지만 설정하려면 HH:mm 형식으로 입력하고, 초 단위까지 설정하려면 HH:mm:ss 형식으로 입력합니다.
<input type="time" value="09:45" min="09:30" >
주의할 점
브라우저에서 제공하는 기본 UI에서는, min로 지정된 시간 이전의 시간을 사용자가 선택할 수 없도록 자동으로 제한하는 기능을 지원하지 않는 경우가 있습니다.
하지만 브라우저는 폼 제출 시, 해당 요소에 입력되거나 선택된 시간이 지정된 최대 시간 이전인지 아닌지 유효성 검사를 시행합니다.
<input type="datetime-local">
선택할 수 있는 허용 가능한 최소 날짜와 시간을 설정합니다.
이 값은 사용자가 선택할 수 있는 가장 처음 날짜와 시간을 지정합니다.
날짜와 시간은 YYYY-MM-DDThh:mm 형식으로 입력해야 합니다. 초 단위까지 설정하려면 YYYY-MM-DDThh:mm:ss 형식으로 입력합니다.
<!-- value: 2013년 05월 13일 09시 12분(2013-05-13T09:12) -->
<!-- min: 2013년 05월 13일 08시 00분(2013-05-13T08:00) -->
<input
type="datetime-local"
value="2013-05-13T09:12"
min="2013-05-13T08:00">
주의할 점
브라우저에서 제공하는 기본 UI에서는,
min으로 지정된 날짜 이전의 날짜는 사용자가 선택할 수 없도록 자동으로 제한합니다.
하지만, 같은 날짜 내에서 min으로 지정된 시간 이전의 시간을 사용자가 선택할 수 없도록 자동으로 제한하는 기능은 지원하지 않는 경우가 있습니다.
브라우저는 폼 제출 시, 해당 요소에 입력되거나 선택된 날짜와 시간이 지정된 최소 날짜와 시간 이전인지 아닌지 유효성 검사를 시행합니다.
<input type="number">
선택할 수 있는 허용 가능한 최소 숫자를 설정합니다.
즉, 이 값은 사용자가 선택할 수 있는 가장 작은 숫자를 지정합니다.
<input type="number" value="7" min="0">
알아두세요!
이 최솟값 지정은 마우스로 숫자를 늘리거나 줄일 수 있는 화살표(혹은 스피너, spinner)를 사용할 경우에 브라우저가 유효성 검사를 실시해서 최솟값보다 작은 수로 줄일 경우 거부하는 기능입니다. 그런데, 사용자가 최솟값보다 작은 수를 직접 입력할 경우에는 유효성 검사를 실시해서 거부하는 기능을 구현하지 못하고 실패합니다.
하지만 브라우저는 폼 제출 시, 해당 요소에 입력된 숫자가 지정된 최소 숫자보다 작은지 아닌지 유효성 검사를 시행합니다.
<input type="range">
min 속성은 속성은 허용된 범위에서 선택할 수 있는 숫자의 가장 작은 값을 지정합니다.
기본값은 0입니다. 유효한 숫자가 아닌 값이 지정된 경우에는 min 속성의 값이 지정되지 않습니다.
<label for="volume">볼륨</label>
<input type="range" id="volume" min="50">
음수값 사용
min 속성에는 음수값을 사용할 수 있습니다.
<label for="volume">볼륨</label>
<input type="range" id="volume" min="-100">
<meter>
<meter>에서 min 속성은 측정 범위의 하한 숫자 경계에 해당하는 최솟값입니다. 만약 유효하지 않거나 지정되지 않은 경우 최솟값은 0입니다.
<label for="disk-usage">디스크 사용량</label>
<meter id="disk-usage"
min="0.5"
value="0.6">60%</meter>
<!-- max 속성을 지정하지 않으면 max="1"입니다. -->
<input>에서 min 속성의 한계
<input>에서 min 속성을 사용하면 사용자가 허용된 최솟값을 벗어나 입력하거나 선택하는 것을 방지할 수 있습니다.
그러나 다음과 같은 경우에는 이 제한이 적용되지 않습니다.
- 사용자 브라우저의 개발자 도구 등을 사용하여
min속성 자체를 삭제하거나 값을 변경할 수 있습니다. - 폼 전송 단계에서 JavaScript 등을 사용하여 입력 값을 임의로 변조할 수 있습니다.
따라서 min 속성만으로는 해당 요소에 입력되는 최솟값을 완전히 보장할 수 없으므로, 서버 측에서 반드시 추가적인 유효성 검사를 수행해야 합니다.
<input>의 step 속성에 미치는 영향
**간격 기준(Step Base)**은 다음과 같습니다.
min속성이 있는 경우-
min속성이 존재하고 그 값에 오류가 없는 경우 그 값을 기준으로 맞춰진step속성 값의 간격이 조정됩니다.
value속성이 있는 경우-
value속성이 존재하고 그 값에 오류가 없는 경우 그 값을 기준으로 맞춰진step속성 값의 간격이 조정됩니다. 단, 유효한min이 설정되어 있다면min속성의 값을 기준으로 간격이 조정됩니다.
min,value속성이 둘 다 없을 경우-
<input>유형에서 기본 간격 기준(Step Base)이 정의되어 있으면 그 값을 기준으로 사용합니다. -
기본 간격 기준이 정의되지 않으면, 기준 없이 해당
<input>유형 상태(State)에 맞춰 간격이 조정됩니다.
이러한 간격 기준에 따라, 사용자는 해당 컨트롤이 제공하는 인터페이스를 통해 지정된 간격(step)으로 값을 입력하거나 선택할 수 있으며, 브라우저는 폼 제출 시, 해당 요소에 입력되거나 선택된 값이 지정된 간격과 일치하는지 유효성 검사를 시행합니다.
다음은 min 속성이 존재하는 <input type="number">에서 step 속성 값의 간격이 min 속성의 값을 기준으로 맞춰 조정되는 예제입니다.
<input type="number" value="2" step="3" min="1">
해당 요소의 초깃값은 2입니다. step="3"은 마우스로 숫자를 늘리거나 줄일 수 있는 화살표(혹은 스피너, spinner)를 사용할 경우 값을 숫자 3씩 증가하거나 감소하게 합니다. 이때, 초깃값인 2에서 증가할 때 그 다음은 5, 8이 아닌 4, 7로 증가하게 됩니다. 이것은 min="1"이 지정되어 있어서 1을 기준으로 맞춰 숫자 3씩 증가하거나 감소하도록 조정되었기 때문입니다.
접근성 고려 사항
min 속성의 사용 유무만으로는 기능적인 접근성에 문제가 없습니다.
하지만 사용자가 입력하거나 선택할 수 있는 최솟값이 명확하게 안내되지 않는다면, 입력이 제한되는 상황에서 사용자는 당황하거나 오류로 오해할 수 있습니다.
- 최솟값을 알 수 있도록 라벨이나 플레이스홀더를 통해 명확하게 전달합니다.
- 실시간으로 최솟값이 초과되었다는걸 시각적으로 표시하면 사용자는 더 쉽게 파악할 수 있습니다.
예를 들어 다음은 라벨을 통해 명확하게 최솟값을 안내합니다.
<label for="num">구매 개수(최소 2개 이상 구매가능)</label>
<input type="number" id="num" value="2" min="2">
브라우저 호환성
| 속성 |
데스크탑 Chrome
|
데스크탑데스크탑 Edge
|
데스크탑 Firefox
|
Safari
|
|---|---|---|---|---|
min
|
예 | 예 | 예 | 예 |
WebView Android에서 <meter> 태그의 min 속성 지원이 안될 수 있습니다. MDN의 html.elements.meter.min 브라우저 호환성 표를 참고하세요.
명세서
| 명세서 사양 | |
|---|---|
<input> min
|
HTML #attr-input-min |
<meter> min
|
HTML #attr-meter-min |
같이 보기
- HTML max 속성 – 최댓값 지정
- HTML maxlength 속성 – 입력 가능한 최대 문자 수 제한
- HTML minlength 속성 – 최소 입력 문자 수 설정
- HTML required 속성 – 올바른 이해와 사용 방법
- HTML <input> pattern 속성 – 정규 표현식 패턴으로 입력값 형식 설정
- HTML <input> step 속성 – 입력값의 간격을 지정
- HTML disabled 속성 – 올바른 이해와 사용 방법
- HTML <input> type 속성 – 다양한 입력 컨트롤 유형을 지정
- HTML contenteditable 속성 – 에디터 개발을 위해 알아야 할 필수 속성
- HTML readonly 속성 – 텍스트 관련 컨트롤 요소의 편집 여부 제어