[두잇 HTML5+CSS3 웹표준의 정석] HTML Part4
폼 만들기
폼이란?
: 사용자가 웹사이트로 정보를 보낼 수 있는 요소들을 말합니다. (로그인버튼, 회원가입 창 등)
<form> 태그
: 폼 만들기
-<form></form> 태그 사이에 폼 요소와 관련된 태그를 넣습니다.
<form [속성="속성 값"]> 여러 폼 요소 </form>
form 태그 속성
method : 사용자가 입력한 내용을 서버 쪽 프로그램으로 어떻게 넘겨줄지 지정합니다.
속성 값 | get - 주소 표시줄에 사용자가 입력한 내용이 그대로 드러납니다. 256byte~4096byte까지의 데이터만 넘길 수 있다. |
post - 대부분 이 방식 사용한다. 사용자의 입력을 표준입력으로 넘기기 때문에 입력 내용의 길이에 제한받지 않고 사용자가 입력한 내용이 드러나지 않는다. |
name | 여러개의 <form>태그가 있을 경우 구분하기 위해서 사용한다. |
action | 내용들을 처리해 줄 프로그램을 지정한다. |
target | 현재 창이 아닌 다른 위치에 열도록 지정한다. |
autocomplete 속성
: 자동 완성 기능
- 이전에 입력했던 내용이 아래에 표시된다. 기본값이 "on"이고 비밀번호 같이 유출되기 곤란한 것은 "off"로 지정하면 된다.
<form action="register.php" autocomplete="off">
....
</form>
<label> 태그
: 폼 요소에 레이블 붙이기
<label [속성="속성 값"]> 이름 <input ...></label>
또는
<label for="id 이름"> 이름 </label>
<input id="id 이름" [속성="속성값"]
라디오 버튼과 체크박스에서 사용하는 <label> 태그
체크박스 :
- <label> 태그를 사용하지 않는다.
-텍스트만 클릭하면 선택되지 않고 체크박스를 클릭해야한다.
예시)
<ul>
<li><input type="checkbox" value="grm">문법</li>
<li><input type="checkbox" value="wr">작문</li>
<li><input type="checkbox" value="rd">독해</li>
</ul>
라디오 버튼 :
- <label> 태그를 사용할 수 있다.
-텍스트만 클릭하여도 선택된다.
예시)
<ul>
<li>
<label><input type="radio" name="subject" value="eng">영어회화</label>
</label>
<li>
<label><input type="radio" name="subject" value="ch">중국회화</label>
</label>
<li>
<label><input type="radio" name="subject" value="jp">일본회화</label>
</label>
</ul>
<fieldest>, <legend> 태그
: 폼 요소 그룹으로 묶기
- 예를 들어 '사용자 정보' 와 '배송지 정보'와 같이 정보를 나누어 표시할 때 사용한다.
화면을 깔끔히 정리 할 수 있고 폼 안에서 여러구역을 나누어 표시할 때 사용한다.
예시)
<fieldest>
<legend>개인 정보</legend>
<ul>
<li>
<label for="name">이름</label>
<input type="text" id="name">
<li>
<li>
<label for="email">메일 주소</label>
<input type="text" id="email">
<li>
</ul>
</fieldest>
<input> 태그
id 속성 사용하기
-여러번 사용된 폼 요소를 구분하기 위해 사용합니다. (폼뿐만 아니라 html 문서 안의 모든 요소에서 사용한다.)
한개 이상의 문자여야 하고 공백이 있어선 안됩니다.(예시: user-name)
type="hidden"
: 히든 필드 만들기
-화면상에는 보이지 않지만 사용자가 입력을 마치고 폼을 서버로 전송할 때 함께 전송되는 요소입니다.
굳이 보여 줄 필요가 없지만 관리자가 알아야 하는 것을 히든 필드로 입력한다.
<input type="hidden" name="이름" value="서버로 넘길 값">
type="text"
: 텍스트 필드 만들기
-한줄짜리 일반 텍스트를 입력하는 필드이다.
name | 필드를 구별할 수 있도록 이름을 붙입니다. |
size | 텍스트 필드의 길이를 지정합니다. 화면데 몇글자가 보이도록 할 것인지를 지정한다. 예를 들어서 최대 입력 가능한 글자수를 10개인데 size를 5로 지정하면 5개 글자만 화면에 보이고 나머지 5글자는 보이지않는다. |
value | 텍스트 필드 부분에 표시될 내용이다. |
maxlength | 최대 문자 개수를 지정한다. |
type="password"
:비밀번호 입력란 만들기
-화면에 내용이 표시되지 않는다.
type="search"
: 검색상자 만들기
-텍스트 상자를 넣은 것과 똑같이 보이지만 크롬 브라우저나 MS 엣지 브라우저 등 일부 브라우저에서는 검색 창에 검색어를 입력했을 때 오른쪽에 X가 표시되어 입력했던 검색어를 손쉽게 지울 수 있습니다.
type="url"
:URL 입력란 만들기
-전혀 공백이 없고 영문자와 마침표, 슬래시로만 이루어져있다. 또한 반드시 "http://"로 시작하는 사이트 주소를 입력해야한다.
type="email"
: 메일 주소 입력란 만들기
-메일 주소 형식에 맞는지 자동으로 체크해준다.
type="tel"
: 전화번호 입력란 만들기
-일반 텍스트가 아니라 전화번호라는 사실을 인식한다.
type="number"
: 숫자 입력하기
-입력창에 숫자를 직접 입력하는것이 기본적이지만 브라우저에 따라서 스핀 박스가 표시되기도 한다.
예시)
<input type="nember" min="1" max="1" value="1">
type="range"
: 슬라이드 막대로 숫자 지정하기
-막대를 움직여 숫자 값을 입력하게 된다.
min | 필드에 입력할 수 있는 최솟값을 지정하며 기본 최솟값은 0이다. |
max | 필드에 입력할 수 있는 최댓값을 지정하며 기본 최솟값은 100이다. |
step | 짝수나 홀수 등 특정 숫자로 제한하려할 때 숫자 간격을 지정할 수 있다. |
value | 필드에 표시할 초기값이다. |
type="radio", type="checkbox"
: 라디오 버튼과 체크박스 넣기
<input type="radio" [속성="속성값"]
<input type="checkbox" [속성="속성값"]
name | 여러개 있을 경우, 구분하기 위해 이름을 지정합니다. 라디오 버튼은 여러개 중에서 하나만 선택하는 것이기 때문에 관련있는 그룹끼리는 name 속성값을 똑같이 만든다. |
value | 서버로 알려줄 때 넘길 값을 지정한다. 이것은 필수 속성이다. |
checked | 처음에 기본으로 선택해 놓을 항목이 있을 때 사용한다. |
type="color"
: 색상 선택 상자 표시하기
-사용자가 색상을 선택할 수 있게 해준다.
<input type="color" [value="기본 색"[속성="속성값"]>
type="date", type="month", type="week"
: 날짜 표시하기
<input type="dateㅣmonthㅣweek" [value="기본값" 속성="속성값"]
date | 날짜를 선택한다. yyy-mm-dd |
month | 월과 연도를 선택한다. yyy-mm |
week | 주와 연도를 선택한다. yyy-W00 |
type="time", type="datetime", type="datetime-local"
: 시간 지정하기
<input type="timeㅣdatetimeㅣdatetime-local" [value="기본값" 속성="속성값"]
min | 날짜나 시간의 최솟값을 지정한다. |
max | 날짜나 시간의 최댓값을 지정한다. |
step | 스핀 박스의 화살표를 누를 때마다 얼마나 조절할지 지정한다. |
value | 화면에 표시할 초기값을 지정한다. tiem일 경우는 00:00~23:59이고datetime과 datetime-local은 날짜를 적고 T를 쓴 후 24시간제로 시간을 지정한다. (예: 2016-03-23T16:00) |
type="submit", type="reset"
: 서버 전송, 리셋 버튼 넣기
<input type="submitㅣreset" [value="버튼 내용"][속성="속성값"]>
type="image"
: 이미지 버튼 넣기
<input type="image" src="이미지 경로" alt="대체 텍스트" [속성="속성 값"]>
type="file"
: 파일 첨부하기
<input type="file" [속성="속성 값"]>
type="button"
: submit이나 reset 같이 버튼 자체에 기능이 없고 오직 버튼만 넣기 ㄸㅐ문에 스크립트 함수 등 연결해 사용해야한다.
<input type="button" [value="버튼 내용"][속성="속성 값"]>
onclick을 추가해 새창을 여는 window.open()함수를 연결한다.
<input type="button" value="새 탭 열기" onclick="window.open()">
<input> 태그의 다양한 속성
autofocus 속성
:입력커서 표시하기
-텍스트 필드에 마우스 커서가 표시된다.
예시)
<label class="reg" for="uname">이름</label>
<input type="text" id="uname" autofocus required>
placeholder 속성
: 힌트 표시하기
-적당한 힌트 내용 표시하다가 필드를 클릭하면 내용이 사라진다.
예시)
<label class="reg" for="uid">학번</label>
<input type="text" id-"uid" placeholder="하이픈없이 입력">
readonly 속성
: 읽기 전용 필드 만들기
-사용자가 입력하지 못하고 읽게만 만들 수 있습니다. 입력은 할 수 없게 하는 것이다. readonly="true", readonly="false", readonly="readonl", readonly 다 가능하다.
예시)
<label class="reg" for="subj">영어회화</label>
<input type="text" id="subj" value="오전 9:00~11:00" readonly>
required 속성
: 필수 필드 지정하기
-필수적으로 입력해야 하는 내용에는 required="required" 또는 required 속성을 지정해야한다.
min, max, step 속성
: 최솟값, 최댓값, 숫자의 일정한 간격 지정
- date, datetime, datetime-local, month, week, time, number, range에만 사용할 수 있다.
size, minlength, ,axlength 속성
:길이, 최소길이, 최대길이를 지정한다.
여러 데이터 나열해 보여주기
<select>, <optgroup>, <option>
: 사용자가 내용을 입력하는 것이 아니라 여러 옵션중에서 선택하도록한다.
- <option> 태그에는 value 속성을 이용해 서버로 넘겨주기 위한 값을 지정한다.
<select 속성="속성값">
<option value="값" [속성="속성값"]> 내용1 </option>
<option value="값" [속성="속성값"]> 내용2 </option>
<option value="값" [속성="속성값"]> 내용3 </option>
</select>
<select> 태그의 속성
size | 화면에 표시될 드롭다운 메뉴의 항목 개수를 지정한다. -크롬 브라우저의 경우 size에서 지정한 개수보다 하나 더 많은 옵션이 표시된다. size="3"으로 지정하면 4개의 옵션이 표시된다. |
multiple | 컨트롤 키를 누른상태로 여러항목을 선택할 수 있다. |
<option> 태그의 속성
value | 옵션을 선택했을 때 서버로 넘겨질 값을 지정한다. |
selected | 화면에 표시될 때 기본으로 선택되어있는 옵션을 지정한다. |
<optgroup> 태그의 속성
-여러 항목들을 몇 가지 그룹으로 묶어야 할 경우에 사용한다. label 속성을 사용해 그룹의 제목을 붙입니다.
예시)
<optgroup label="공과대학">
<datalist>, <option>태그
- text 필드와 함께 사용하기 때문에 <input> 태그와 함께 사용한다. <input> 태그의 list 속성값과 데이터 목록의 id를 같게 만든다.
<input type="text" list="">
<datalist id="">
<option> </option>
<option> </option>
<option> </option>
</datalist>
value | 서버로 넘겨질 값을 지정한다. |
label | 브라우저에 표시할 레이블입니다. 따로 지정하지 않을 경우, value 값을 레이블로 사용합니다. |
<option value="grammer" label="문법"></option>
태그와 태그 사이에 텍스트를 적는 <select> 태그와는 달리 label 속성으로 지정하여 텍스트를 적는다.
<textarea> 태그
: 여러줄 입력하는 텍스트 영역 만들기
name | 다른 폼 요소와 구분하기 위해서 텍스트 영역의 이름을 지정한다. |
cols | 텍스트 영역의 가로너비를 문자 단위로 지정한다. |
rows | 텍스트 영역의 세로 길이를 줄 단위로 지정한다. 지정한 것보다 줄 개수가 많아지면 스크롤 막대가 생긴다. |
<textarea name="intro" cols="60" rows="5">
...
</textarea>
기타 다양한 폼 요소들
<button> 태그
: 버튼 넣기
- <input> 태그로 버튼을 삽입하는 것과 비슷해 보이지만 <button>태그를 이용하면
1. 화면 낭독기에서 '이 부분에는 버튼이 있다는 것'을 알고 정확히 전달할 수 있다.
2. 아이콘을 추가할 수 있다.
submit | 폼을 서버로 전송한다. |
reset | 폼에 입력한 모든 내용을 초기화한다. |
button | 버튼 형태만 만들 뿐 자체 기능은 없다. |
예시)
<form>
<button type="submit" class="subm">
<img src="" alt=""> 전송하기 </button>
</form>
<progress> 태그
: 진행 상태 보여주기
value | 0보다 크거나 같고 max보다 작거나 같아야한다. 값이 지정되지 않았다면 이 값은 1.0보다 작아야한다. |
max | 작업이 완료되려면 얼마나 많은 작업을 해야하는지 표현한다. 0보다 커야한다. |
예시)
<label> 10초남음 </label>
<!--전체 60초 중 50초 진행-->
<progress value="50" max="60"></progress>
<meter> 태그
: 값이 차지하는 크기 표시
- 전체 크기 중 얼마나 차하는지 표시할 때 사용한다
min, max | 최솟값과 최댓값을 나타내며 지정하지 않을 경우 0과 1로 간주합니다. |
value | 범위 내에서 차지하는 값을 나타냅니다. |
low | "이정도면 낮다"라고 할 정도의 값을 지정한다. |
high | "이정도면 높다"라고 할 정도의 값을 지정한다. |
optimum | "이정도면 적당하다"라고 할 정도의 값을 지정한다. |