폼 관련 태그들
폼 만들기
- 폼의 정의
사용자가 웹 사이트로 정보를 보낼 수 있는 요소들은 모두 폼 (form)
- 폼의 기본 태그들
<form> - 폼을 만드는 기본 태그
<label> - 폼 요소에 레이블(텍스트)을 붙이는 태그
<fieldset> - 폼 요소를 그룹으로 묶는 태그
<legend> - 그룹으로 묶는 구역에 제목을 붙이는 태그
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<form>
<!-- fieldset는 테두리 박스 -->
<fieldset>
<!-- legend 는 테두리에 제목 -->
<legend>개인 정보</legend>
<ul>
<li>
<!-- for="name" name 과 id="name" name을 맞추어야 label 작동 -->
<label for="name">이름</label>
<input type="text" id="name">
</li>
<li>
<label for="mail">메일주소</label>
<input type="text" id="mail">
</li>
</ul>
</fieldset>
<fieldset>
<!-- legend 는 테두리에 제목 -->
<legend>로그인 정보</legend>
<ul>
<li>
<!-- for="name" name 과 id="name" name을 맞추어야 label 작동 -->
<label for="ID">아이디</label>
<input type="text" id="ID">
</li>
<li>
<label for="password">비밀번호</label>
<input type="text" id="password">
</li>
</ul>
</fieldset>
</form>
</body>
</html>
<input> - 사용자가 입력하는 부분은 거의 <input> 태그를 이용해 처리 type 속성 값에 따라 함께 사용할 수 있는 속성들도 달라진다.
input type
type = “hidden” - 화면상의 폼에는 보이지 않는다.
type = “text” - 주로 아이디나 이름, 주소 등 텍스트 입력
type = “password” - 비밀번호 입력란
type = “search” - 검색 필드
type = “url” - 웹 주소 필드
type = “email” - 메일주소 입력 필드
type = “tel” - 전화번호 입력 필드
type = “number” - 스핀 박스로 숫자 입력하는 필드
type = “range” - 슬라이드 막대를 이용해 숫자 입력하는 필드
range number color (각자 쓰는 방법)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<form>
<fieldset>
<legend>등록 정보</legend>
참여인원 <small>(최대10명)</small>
<input type="number" min="0" max="10"><br>
지원물품 <small>(1인당 5개)</small>
<!-- step="5" -> 배수 형태로 움직임 -->
<input type="number" value="3" min="0" max="50" step="5"><br>
희망단계 <small>(하,중,상)</small>
<input type="range" value="2" min="1" max="3"><br>
<!-- R:red,G:green B:blue -> 3원색을 가지고 색상 조합 -->
<!-- #에 숫자 2개씩 쌍으로 6개 : 16진수를 2개씩 RGB 형태의 색상 숫자로 표시(최대:ff)-->
<input type="color" value="#00ff00"><br>
</fieldset>
</form>
</body>
</html>
type = “radio” - 여러 항목중 하나만 선택할 때
type = “checkbox” - 여러 항목 중 둘 이상을 선택할 때
예제) radio, checkbox (하나, 둘이상 선택)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<form>
<h3>수강 분야(다수선택가능)</h3>
<ul>
<!-- name="grm" ->grm을 가지고 서버로 이동 -->
<!-- 문법을 클릭해도 체크가 되지 않음 -->
<input type="checkbox" name="grm">문법<br>
<input type="checkbox" name="wr">작문<br>
<!-- label -> 독해를 클릭하면 체크가 됨 -->
<label><input type="checkbox" name="rd">독해<br></label>
</ul>
<h3>수강 과목(1과목만 선택 가능)</h3>
<!-- name="subject"->subject 을 똑같이 맞추어야 한마만 선택 가능 -->
<!-- 서버로 갈때는 subject에 eng나 ch를 들고 간다 -->
<!-- label 추가해서 글자를 클릭하면 선택됨 -->
<ul>
<label><input type="radio" name="subject" value="eng">영어회화<br></label>
<label><input type="radio" name="subject" value="ch">중국어회화<br></label>
<label><input type="radio" name="subject" value="jp">일어<br></label>
</ul>
</form>
</body>
</html>
type = “color” - 색상 표에서 색상 선택
type =”date”,type=”month”,type=”week”
date : 날짜를 선택합니다.
month : 월과 연도를 선택합니다.
week : 주와 연도를 선택합니다.
type = ”time”,type=”datetime-local” : 처음 나타나는 시간 입력
예제) time,datetime-local
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h3>검사시간을 선택하세요(오늘)</h3>
시작 시간<input type="time" value="09:00">
종료 시간<input type="time" value="18:00">
<h3>검사시간을 선택하세요(오늘)</h3>
시작시간<input type="datetime-local" value="2016-03-02T09:00">
종료시간<input type="datetime-local" value="2016-03-02T09:00">
</body>
</html>
type = “submit”,type=”reset” : 폼 전송/리셋 버튼
type = “image” submit 버튼 대신 이미지 삽입
input (이미지 삽입)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<form>
<table>
<tr>
<td>아이디<input type="text" size="15"></td>
<td>비밀번호<input type="password" size="15"></td>
<td><input type="image" src="images/login.jpg"></td>
</tr>
</table>
</form>
</body>
</html>
input 속성
autofocus - 페이지를 불러오자마자 원하는 폼 요소에 마우스 커서 표시
placeholder - 입력란에 표시하는 힌트로, 필드를 클릭하면 사라짐
redonly - 내용을 보기만 하고 입력하지 못하게 함
required - 필수 필드 체크
min, max, step - 해당필드의 최솟값,최댓값 (step은 숫자간격)
size : 텍스트 크기
maxlength : 입력 가능한 최대 글자
minlegth : 입력 해야할 최소 글자
예제 ) placeholder
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>프런트엔드 개발자 지원서</h1>
<p> HTML,CSS,Javascript에 대한 기술적 이해와 경험이 있는 분을 찾습니다. </p>
<hr>
<h4>개인정보</h4>
<ul>
<li>이름 <input type="text" autofocus placeholder="공백없이 입력하세요"></li>
<li>연락처 <input type="tel" ></li>
</ul>
<h4>지원 분야</h4>
<ul >
<li><label><input type="radio" name="1" value="pub"> 웹 퍼블리싱 </li></label>
<li><label><input type="radio"name="1" value="ap"> 웹 애플리케이션 개발 </li></label>
<li><label><input type="radio"name="1" value="we"> 개발 환경 개선 </li></label>
</ul>
<h3>지원동기</h3>
<textarea cols="60" rows="5" placeholder="본사 지원 동기를 간략히 써 주세요.">
</textarea>
<div><input type="submit" value="접수하기">
<input type="reset" value="다시 쓰기"></div>
</body>
</html>
여러 데이터 나열해 보여주기
<select>,<optgroup>,<option>
<optgroup> - 여러 항목을 그룹을 묶을 때 사용 (label 속성을 사용해서 그룹제목)
<datalist>,<option> - 데이터 목록에 제시한 값 중에서 선택하면 그 값이 자동으로 텍스트 필드에 입력됨
예제) datelist (목록중 선택)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>여름방학 특강 신청</h1>
<form>
<fieldset>
<legend>수강 신청인</legend>
<ul>
<li>
학번
<input type="text"autofocus>
</li>
<li>
이름
<input type="text" >
</li>
<li>
학과
<!-- multiple 속성은 모양이 늘어나면서 ctrl키를 이용해서 여러개 선택 가능 -->
<!-- size 속성은 콤보 갯수를 설정 -->
<select>
<!-- optgroup 태그는 콤보리스트를 그룹으로 묶음 -->
<!-- label 속성은 그룹 이름 설정 -->
<optgroup label="공과대학">
<!-- value 속성은 서버로 들고 간다 -->
<option value="archi">건축공학과</option>
<option value="mechanic">기계공학과</option>
<option value="archi">산업공학과</option>
<option value="archi">전기공학과</option>
<!-- selected 속성은 초기값 설정 -->
<option value="computer" selected>컴퓨터공학과</option>
<option value="archi">화학공학과</option>
</optgroup>
<optgroup label="인문대학">
<option value="history">사학과</option>
<option value="lang">어문학부</option>
<option value="philo">철학</option>
</optgroup>
</select>
</li>
</ul>
</fieldset>
<fieldset>
<legend>수강 과목을 선택하세요</legend>
<ul>
<li>
관심분야
<!-- list랑 id 속성값(이름) 맞췄는지 확인 -->
<!-- 선택하면 value값이 기본값으로 표시 -->
<input type="text" list="choices">
<datalist id="choices">
<option value="grammar" label="문법"></option>
<option value="voca" label="어휘"></option>
<option value="speaking" label="회화"></option>
<option value="listening" label="리스닝"></option>
<option value="news" label="뉴스청취"></option>
</datalist>
</li>
</ul>
</fieldset>
</form>
</body>
</html>
- <option> 태그의 속성
value - 서버로 넘겨질 값을 지정
label - 사용자를위해 브라우저에 표시할 레이블 따로 지정안할때 value값을 레이블로 사용
기타 다양한 폼 요소들
<button> - 다양한 형태의 버튼 삽입
<output> - 계산 결과를 브라우저에 표시
<progress> - 작업 진행 상태를 브라우저에 표시
예제) progress (바에서 어디까지 진행)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<ul>
<li>
10초 남음
<!-- 60초 중 50초 진행 -->
<progress value="50" max="60"></progress>
</li>
<li>
진행률 30%
<!-- 전체 100% 중 30% 진행 -->
<progress value="30" max="100"></progress>
</li>
</ul>
</body>
</html>
<meter> - 전체 크기 중에서 얼마나 차지하는지를 표현할 때 사용
예제) meter (전체에서 어디까지 진행 progress랑 비슷함)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<ul>
<li>
점유율 0.8
<!-- 전체 기준 1로 0.8만큼 차지 -->
<meter value="0.8"></meter>
</li>
<li>
사용량 64%
<!-- 전체 기준 100으로 64만큼 차지 -->
<meter min="0" max="100" value="64"></meter>
</li>
<li>
트래픽 초과
<!-- high 속성값보다 크면 노란색으로 표시 -->
<!-- low 속성값보다 작으면 노란색으로 표시 -->
<meter min="1024" max="10240" low="2048" high="8192" value="2000"></meter>
</li>
</ul>
</body>
</html>