[HTML5] 웹 폼
웹 폼
웹 페이지에서 사용자 입력을 받는 폼
로그인, 등록, 검색, 예약, 쇼핑 등
요소
폼을 만드는 다양한 태그
<input>, <textarea>, <select> .......
+) <input>태그는 종료 태그가 없다.
작성
폼 태그( <form> )로 둘러싸는 형태, 컨테이너
<form action = "웹 서버의 응용프로그램의 URL(보낼 데이터를 처리할 url)" method = "데이터의 전송 방식 GET | POST" name = "폼이름" enctype = "데이터의 인코딩 타입(폼 데이터를 웹 서버로 전송할 때 암호화 방식(동영상 자료, 파일 크기가 큰 자료 전송시에만 사용함)" target = "윈도우이름"></form>
name 속성
폼이름 지정
action 속성
폼 데이터를 처리할 웹 서버 응용프로그램의 이름 (보낼 url)
submit 버튼이 눌리면 브라우저는 action에 지정된 웹 서버 응용프로그램에 실행 요청
웹 서버 응용프로그램 - JAVA,, JSP, PHP, C, C++ 등 다양한 언어로 작성
method 속성
폼 데이터를 웹 서버로 전송하는 방식
대표적인 전송 방식 : GET(검색어까지 넘기는 전송 방식), POST(로그인과 게시판처럼, 검색어까지 넘어가지 않음)
종류
text, password, submit, textarea, reset의 사용빈도가 높다.
- <input type="text"> : 한 줄 텍스트 입력 창
- <input type = "password"> : 암호 입력을 위한 한 줄 텍스트 입력 창
- <input type = "button"> : 단순 버튼
- <input type = "submit"> : 웹 서버로 폼 데이터를 전송시키는 버튼
- <input type = "reset"> : 입력된 폼 데이터를 초기화하는 버튼
- <input type = "image"> : 이미지 버튼
- <input type = "checkbox"> : 체크박스, 중복 가능
- <input type = "radio"> : 라디오박스, 중복 불가
- <input type = "month | week | date | time | datetime-local"> : 년, 월, 일, 시간 등의 정보 입력창
- <input type = "number | rage"> : 스핀 버튼, 슬라이드바로 편리한 숫자 입력
- <input type = "color"> : 색 입력을 쉽게 하는 컬러 다이얼로그
- <input type = "email | url | tel | seart"> : 이메일, url, 전화번호, 검색 등 형식을 검사
- <input type = "file"> : 로컬 컴퓨터에 파일을 선택하는 폼 요소
- <button type = "button | reset | submit"> : 단순버튼, reset, submit 버튼 (input 방식이랑 똑같긴함)
- <select> : 드롭다운 리스트를 가진 콤보박스
- <textarea> : 여러줄의 텍스트 입력 창
텍스트 입력
<form>
<input type = "text"> : 한줄짜리 입력창
<input type = "password"> : 암호 입력창, 사용자가 입력한 문자 대신 *, · 와 같은 다른 글자로 출력(암호화)
<textarea> : 여러줄 입력 창
</form>
형식
<input type = "text | password" name = "요소이름(각 input type = "text"의 이름을 정확하게 구분해서 작성)" maxlength = "문자개수(입력할 수 있는 문자의 최대 개수)" size = "문자 개수(입력 창의 크기, size = "25" : 25자 크기의 사이즈로 생성해라)"
value = "초기텍스트(나올 때 출력할 텍스트)">
형식
<textarea cols = "열 개수(텍스트 입력창의 크기 지정, 가로 문자수(영문자를 기준))" rows = "행 개수(텍스트 입력창의 크기 지정, 세로 문자수(영문자를 기준))" name = "요소이름" wrap = "OFF | HARD | SOFT (자동 줄바꿈 처리 지정)"> 초기 출력될 텍스트 </textarea>
데이터 목록을 가진 텍스트 입력 창 <datalist>
<datalist>
목록 리스트를 작성하는 태그. <option>태그로 하나의 항목을 표현
<input type = "text">에 입력 가능한 데이터 목록을 작성할 때 사용.
list 속성값과 datalist id값이 서로 같아야 한다.
나라 : <input type = "text" list = "countries">
<datalist id = "countries">
<option value = "가나">
<option value = "스위스>
<option value = "브라질">
</datalist>
![]() |
![]() |
텍스트 / 이미지 버튼
방식 1. <input type = "button | reset | submit | image" value = "버튼에 들어갈 문자열">
방식 2. <button type = "button | reset | submit">버튼에 들어갈 문자열</button>
<input type = "button(일반버튼) | reset(초기화처리) | submit(완료버튼) | image(이미지버튼)" name = "버튼이름" value = "문자열(버튼위에 표시될 문자열(기능등을 설명))" src = "이미지의 url(image를 버튼으로 만들 경우에만 필요">
![]() |
![]() |
체크박스, 라디오버튼
선택적 입력, 미리 선택할 내용을 주어지게 한다.
체크박스 : <input type = "checkbox"> : 여러개의 값을 체크하여 가질 수 있다.
라디오버튼 : <input type = "radio"> : 같은 name 그룹내에서, 여러개의 보기 중 하나의 값만 가질 수 있다.
<input type = "checkbox | radio" name = "요소이름" value = "요소값(폼 요소가 선택된 상태일 때, 웹서버에 전송되는 값)" checked(초기값으로 선택 된 내용으로 출력)>
![]() |
![]() |
![]() |
<option> 태그
선택된 입력: 콤보박스 <select> 태그 드롭다운 리스트에 목록 출력, 목록을 선택하는 입력 방식
<option> 태그로 항목 하나 표현
<select name = "요소 이름" size = "개수(콤보박스 창 크기(보일 수 있는 최대 항목 개수))" multiple(다수 항목 선택 가능)>
여러개의 <option>............</option>태그로 항목 만들기
</select>
<option value = "옵션값(항목이 선택되었을 때 웹 서버에 전송되는 값)" selected(초기 선택된 상태로 보여지는값)>
![]() |
![]() |
![]() |
<label>로 폼 요소의 캡션 만들기
캡션이란?
캡션 | 폼요소 |
사용자ID : | <input type = "text"> |
![]() |
![]() |
<label> 태그로 캡션과 폼 요소를 한 단위로 묶음
캡션 텍스트를 명료하게 하는 관점
방법 1.
<label>사용자 ID: <input type="text> </label>
방법 2.
<label for = "loginID">사용자 ID : </label>
<input type = "text" id = "loginID">
ex)
<html>
<head>
<title>로그인폼</title>
</head>
<body>
<h3>로그인폼</h3>
<hr>
<form name = "fo" method = "get">
<label> 사용자 ID : <input type = "text" size = "15" value = ""></label><br>
<label for="pass"> 비밀번호 : </label>
<input type = "password" id = "pass" size = "15" value = "">
<input type = "submit" value = "완료">
</form>
</body>
</html>
HTML에서의 색 표현
방법 1. 색상 코드
#00 00 00 (R / G / B)
각각 256단계(0~255까지 표현)
16진수.(0~f, 16개의 숫자로 이루어진 숫자 시스템)
0이면 값이 없음. 255가 가장 진한 값.
방법 2. 색 명칭
brown == #A52A2A
blue == #8A2BE2
darkorange, deepskyblue, gold 등등
색 입력 폼
<input type = "color" value = "#00FF00(초기값 지정 가능)"> : 컬러 다이얼로그 출력, 사용자로부터 색 선택
시간 정보 입력 폼 요소
<input type = "month | week | date | time | datetime-local"> : 시간 정보만 입력 가능한 폼 요소
type 속성값 | 입력 데이터 | value의 형식 | 예시 |
<input type = "month"> | 년/월 | 2024-07 | <input type = "month" value = "2024-07"> |
<input type = "week"> | 년/몇번째주 | 2024-W25 | <input type = "week" value = "2024-W25"> |
<input type = "date"> | 년/월/일 | 2024-07-29 | <input type = "date" value = "2024-07-29"> |
<input type = "time"> | 해당 나라의 시간 | 2024-07-29T12:44:20.23 | <input type = "time" value = "2024-07-29T12:44:20.23"> |
<input type = "datetime-local"> | 시/분 | 12:44 | <input type = "datetime-local" value = "12:44"> |
스핀 버튼과 슬라이드로 편리한 숫자 입력
<input type = "number"> : 스핀 버튼으로 정교한 값 입력
<input type = "number" min = "0.0" max = "10.0" step = "0.5"> : spin버튼 클릭시 0.0~10.0 사이에서 0.5씩 증감
<input type = "range"> : 슬라이드바, 대략적인 값 입력
<input type = "range" min = "0" max = "30" list = "temperatures">
<datalist id = "temperatures">
<option value = "12" label = "Low">
<option value = "20" label = "Medium">
<option value = "28" label = "High">
</datalist>
![]() |
![]() |
입력할 정보의 힌트 보여주기 : placeholder
사용자가 입력할 데이터에 힌트를 준다.
<input type = "email" placeholder = "id@host">
<input type = "email">
<input type = "url" placeholder = "https://">
<input type = "tel" placeholder = "010-0000-0000">
<input type = "search" placeholder = "검색어">
아래 예시들에서 볼 수 있듯이, 회색으로 뜨는 글씨들.
![]() |
![]() |
![]() |
![]() |
기존 HTML 한계
웹 문서 구조를 표현하는 태그가 없었다.
기존 태그 - <p><div><h1>등 : 문서의 구조나 의미 전달 어려움이 있었다.
그~~래~~서~~!
문서 구조화
문서 구조화를 해보자! 왜?
- 검색 엔진이 좋아하는 웹 페이지 작성의 필요성 대두
- 정보탐색이 중요해진 시대.
- 사물 인터넷으로 IT 장치들이 스스로 정보 탐색하는 시대
- 사용자가 만든 웹 페이지 가치 극대화 - 탐색이 쉽게끔
시맨틱 웹
웹 문서를 구조화하여 의미있는 내용 탐색이 용이한 웹
시맨틱 태그
문서의 구조와 의미를 전달하는 태그.
CSS3를 이용하여 직접 위치와 색, 모양을 지정해줘야 한다.
지정하지 않으면 텍스트만 출력됨.
<header><section><article><main><summary><mark><time> 등등
구글의 검색엔진 사례
웹 페이지에서 시맨틱 태그 검색.
리뷰, 사람, 제품, 업체, 이벤트, 음악 등 검색결과 제공.
종류
<header> | 페이지나 섹션의 머리말 표현. 페이지 제목, 페이지 소개 등 간단한 설명. |
<nav> | 하이퍼링크들을 모아놓은 특별한 섹션, 페이지 내 목차를 만드는 용도. |
<section> | 문서의 장(chapter, section) 혹은 절을 구성하는 역할. <h1~h6>를 사용한다. 일반 문서의 여러 장이 있듯이, 웹 페이지에 여러 <section>이 존재할 수 있다. |
<article> | 본문과 연관있지만, 독립적인 컨텐츠를 담는 영역. 보조기사, 블로그포스트, 댓글 등 |
<aside> | 본문에서 약간 벗어난 노트나 팁. 신문, 잡지에서 주요 기사 옆의 관련 기사. |
<footer> | 꼬리말 영역, 주로 저자나 저작권 정보 |
시맨틱 블록 태그
<figure>
책이나 보고서 등 본문에 삽입하는 사진, 차트, 삽화, 소스코드 등을 통상적으로 그림으로 표현.
ex) alert()함수에 대한 설명과 실행 결과를 하나의 그림으로 블록화해서 출력함.
![]() |
![]() |
<details> , <summary>
<details> : 상세 정보를 담는 시맨틱 블록 태그
<summary> : <details>로 구성되는 블록의 제목 표현
ex) <details> 태그를 이용하여 Q&A 리스트를 만들고, 사용자가 핸들(▶)(토글)을 클릭하여 항목을 보거나 숨길수 있다.
![]() |
![]() |
시맨틱 인라인 태그
종류
<mark> : 중요한 텍스트임을 표시
<time> : 텍스의내용이 시간임을 표시
<meter> : 주어진 범위나 %의 데이터량 표시
<progress> : 작업의 진행 정도 표시
예시
![]() |
![]() |