[HTML] 주요 태그와 속성 -form, input, label, select, button, image
by 우와한개발자
[ form ]
<form action="process.jsp" method="post">
- form태그는 블록 요소이나 내부의 input, option등은 인라인요소
1. 속성
1) action
- 입력한 데이터가 전송될 주소
- URL 입력
2) method
- 데이터 전송 방식
- GET(기본값), POST
3) autocomplete
- 자동완성 기능 설정 여부
- on/off
4) novalidate
- 입력양식의 유효성 검증 안함
2. 내부 요소
1) datalist
- 입력값 제안
- datalist의 id 속성의 값은 input요소의 list속성에서 참조
2) keygen
- key-pair generator
- 유저를 안전하게 인증하기 위함(요즘은 잘 사용하지 않고 세션, 웹토큰 등 사용 )
- form이 submit될때, private키와 public키가 생성되고, private키는 클라이언트에 저장되고 public 키는 서버로 보내짐
3) output
- 계산의 결과 또는 스크립트 출력 (잘 사용하지 않음)
[ input ]
- 입력양식을 만들 때 사용하는 form요소의 하위 요소로 주로 사용
1. 속성
1) type
| type | 설명 | 예시 |
| 기본 입력 타입 | ||
| 이메일 형식 검사 | <input type="email" name="email"> | |
| number | 숫자 입력 (min, max, step으로 범위 지정 가능) | <input type="number" min="1" max="10"> |
| password | 입력값 마스킹 처리 | <input type="password" name="pw"> |
| search | 검색어 입력 필드 (검색 UI 제공) | <input type="search" placeholder="검색어 입력"> |
| tel | 전화번호 입력 (모바일 숫자 키패드 표시) | <input type="tel" name="phone"> |
| text | 일반 문자 입력 | <input type="text" name="username"> |
| url | URL 형식 검사 | <input type="url" name="homepage"> |
| 선택 입력 타입 | ||
| checkbox | 여러 개 선택 가능 | <input type="checkbox" name="hobby" value="music"> |
| radio | 하나만 선택 가능 (같은 name 사용) | <input type="radio" name="gender" value="M"> |
| 범위 / 값 제한 관련 | ||
| max | 입력 가능한 최대값 지정 | <input type="number" max="10"> |
| min | 입력 가능한 최소값 지정 | <input type="number" min="1"> |
| range | 범위 선택 슬라이더 (min, max, step으로 범위 설정) | <input type="range" min="0" max="100" step="10"> |
| 파일 업로드 관련 | ||
| accept | 업로드 가능한 파일 타입 제한 | <input type="file" accept="image/*"> |
| file | 파일 업로드 (multiple로 여러 개 선택 가능, accept로 파일 형식 제한) | <input type="file" accept="image/*" multiple> |
| multiple | 여러 개의 값을 선택할 수 있게 함 (file, select 등에서 사용) | <input type="file" multiple> |
| 기타 입력 타입 | ||
| color | 색상 선택 | <input type="color"> |
| hidden | 화면에는 보이지 않지만 name, value 값을 서버로 전송 | <input type="hidden" name="id" value="10"> |
| submit | 폼 제출 버튼 | <input type="submit" value="전송"> |
| date picker 계열 | ||
| date | 날짜 선택 (년월일) | <input type="date"> |
| month | 월 선택 (년월) | <input type="month"> |
| time | 시간 선택 (시:분) | <input type="time"> |
| week | 연도 기준 몇 번째 주인지 선택 | <input type="week"> |
- accept 속성
속성값 설명 예시 파일 확장자 닷(.)으로 시작하는 파일 확장자를 지정하여 업로드 가능한 파일을 제한 <input type="file" accept=".png,.jpg,.pdf"> audio/* 모든 타입의 오디오 파일 허용 <input type="file" accept="audio/*"> video/* 모든 타입의 비디오 파일 허용 <input type="file" accept="video/*"> image/* 모든 타입의 이미지 파일 허용 <input type="file" accept="image/*"> 미디어 타입 매개변수(parameter)를 가지지 않는 유효한 MIME 타입 사용 <input type="file" accept="application/pdf">
2) name
- 폼(form) 데이터 전송용 속성
- form 관련 태그에서 주로 사용
- 자바에서는 camelCase로 DTO,VO의 필드명과 같게
- checkbox와 radio의 경우 name 속성의 값이 같아야 같은 그룹으로 적용
3) form
- input의 form 속성값 = 연결할 form의 id 값 input이 form 태그 바깥에 있어도 해당 form에 소속된것처럼 동작
<form id="loginForm" action="/login">
<input type="text" name="id">
</form>
<input type="password" name="pw" form="loginForm">
<input type="submit" value="로그인" form="loginForm">
4) HTML5에 추가된 새로운 속성
| 속성 | 설명 | 예시 |
| 자동 입력 관련 | ||
| autocomplete | 입력값 자동완성 기능 설정 | <input type="text" autocomplete="on"> |
| autofocus | 페이지 로드 시 자동 포커스 | <input type="text" autofocus> |
| 폼 연결 관련 | ||
| form | input을 특정 form과 연결 | <input type="text" form="loginForm"> |
| 입력 값 제한 관련 | ||
| max | 입력 가능한 최대값 지정 | <input type="number" max="10"> |
| min | 입력 가능한 최소값 지정 | <input type="number" min="1"> |
| pattern | 정규표현식으로 입력값 형식을 제한 | <input type="text" pattern="[0-9]{3}"> |
| required | 필수 입력 필드 지정 | <input type="text" required> |
| step | 입력값 증가 단위 지정 | <input type="number" step="2"> |
| 입력 UI 관련 | ||
| height, width | 이미지 버튼 크기 지정 | <input type="image" src="btn.png" width="100" height="50"> |
| list | datalist와 연결하여 입력값 추천 | <input list="fruits"> |
| multiple | 여러 값 선택 가능 | <input type="file" multiple> |
| placeholder | 입력 힌트 표시 | <input type="text" placeholder="이름 입력"> |
- pattern (정규표현식)
기호 설명 예시 | 여러 값 중 하나 선택 a|b → a 또는 b ( ) 여러 식을 하나로 묶음 `a(b * 0회 이상 반복 ab* → a, ab, abb + 1회 이상 반복 ab+ → ab, abb ? 0 또는 1회 ab? → a, ab {m,n} m~n번 반복 a{1,3} → a, aa, aaa [ ] 문자 중 하나 선택 [abc] → a, b, c [^ ] 특정 문자 제외 [^abc] - 문자 범위 지정 [a-z], [0-9] ^ 문자열 시작 ^abc $ 문자열 끝 abc$
⚠️ boolean 속성 : 속성의 이름만 넣어도 적용되는 속성
속성 설명 required 필수 입력 autofocus 자동 포커스 checked 체크된 상태 selected 선택된 상태 disabled 비활성화 readonly 읽기 전용 multiple 여러 개 선택 가능
[ label ]
- 입력 요소(input)의 설명(이름)을 표시하는 태그
- label의 for 속성값 = input의 id
- label의 for 속성값 = select의 id
<label for="user">아이디</label>
<input type="text" id="user">
[ select ]
- 여러 항목 중 값을 선택하는 입력 태그
- drop down list box
- 내부에 option 태그로 선택 항목 정의
<select name="fruit">
<option value="apple">사과</option>
<option value="banana">바나나</option>
</select>
[ button ]
- 버튼 생성하는 태그
- 클릭시 특정 동작 수행
- type 속성으로 기능 지정(submit, reset, button)
<button type="submit">전송</button> <!-- -->
<button type="reset">초기화</button> <!-- -->
<button type="button">일반버튼</button> <!-- -->
[ textarea ]
- 여러 줄 텍스트를 입력하는 태그
- 게시글, 댓글, 설명 등 긴 문장 입력에 사용
- rows, cols 속성으로 크기 지정 가능
<textarea name="content" rows="5" cols="30">
내용 입력
</textarea>
⚠️멱등성 (Idempotency)
- 같은 요청을 여러 번 실행해도 결과가 동일한 성질
한 번 실행하든 여러 번 실행하든 서버 상태가 동일하게 유지됨
요청 설명 멱등성 GET 데이터를 조회만 하므로 여러 번 호출해도 결과 동일 ⭕ PUT 같은 데이터로 계속 업데이트해도 결과 동일 ⭕ DELETE 이미 삭제된 데이터를 다시 삭제해도 결과 동일 ⭕ POST 요청할 때마다 새로운 데이터가 생성됨 ❌
[img ]
- 이미지를 화면에 표시하는 태그
- 인라인 요소
- 닫는 태그 없음 (empty tag)
<img src="cat.jpg" alt="고양이 사진" width="300" height="200">
| 속성 | 설명 |
| src | 표시할 이미지 경로 또는 base64인코딩문자열 |
| alt | 이미지 설명 (이미지 로딩 실패 시 표시, 웹 접근성 향) |
| width | 이미지 너비 지정 |
| height | 이미지 높이 지정 |
[ audio ]
- 오디오 파일을 재생하는 태그
- HTML5에서 추가됨
<audio src="music.mp3" controls autoplay loop></audio>
| 속성 | 설명 |
| controls | 재생 컨트롤 표시 |
| autoplay | 자동 재생 |
| loop | 반복 재생 |
[ video ]
- 동영상 파일을 재생하는 태그
- HTML5에서 추가됨
<video src="movie.mp4" controls autoplay loop width="400" height="300"></video>
| 속성 | 설명 |
| controls | 재생 컨트롤 표시 |
| autoplay | 자동 재생 |
| loop | 반복 재생 |
| width, height | 영상 크기 |
'Web > HTML' 카테고리의 다른 글
| [HTML] 주요 태그와 속성 - h1, p, br, ul,ol,dl, a, table, 시맨틱태그(Semantic) (0) | 2026.03.09 |
|---|---|
| [HTML] HTML이란? 기본 구조와 속성, 블록요소와 인라인요소 (0) | 2026.03.09 |
블로그의 정보
우와한개발자 님의 블로그
우와한개발자