코딩 이야기/HTML

14) HTML 요소 - 폼

보로라 2024. 4. 18. 16:02

 

 

폼 요소는 서버에 데이터를 전달하기 위한 요소이며 <input>은 대표적인 폼 요소입니다.

<input>은 내용이 없는 빈 요소이며 type 속성을 통해 여러 종류의 입력 양식으로 나타나게 됩니다.

 

type="text"

<input type="text" placeholder="ㅇㅇㅇ">

주로 아이디, 이름, 주소, 전화번호 등 단순한 텍스트를 입력할 때 사용합니다.

 

type="text"에는 placeholder 속성이 존재합니다.

placeholder 속성은 사용자가 입력하기 전 미리 화면에 노출하는 값으로, 입력하는 값의 양식을 표현할 수 있습니다. 

 

 

type="password"

<input type="password">

암호와 같이 공개할 수 없는 내용을 입력할 때 사용합니다.

화면에는 type="text"와 같게 나타나지만 실제로 입력할 때 값을 노출하지 않습니다.

 

 

type="radio"

<input type="radio" name="gender"> 남자
<input type="radio" name="gender"> 여자

라디오 버튼을 만들 때 사용합니다.

라디오 버튼은 중복 선택이 불가능하며 하나의 항목만을 선택해야 합니다.

 

 

type="checkbox"

<input type="checkbox" name="hobby"> 등산
<input type="checkbox" name="hobby"> 독서
<input type="checkbox" name="hobby"> 운동

체크박스를 만들 때 사용합니다.

체크박스는 중복 선택이 가능합니다.

 

 

type="file"

<input type="file">

파일을 서버에 올릴 때 사용합니다.

브라우저에 따라 표현되는 형태는 조금씩 다르지만, 모두 같은 역할을 합니다.

 

 

 type="submit|reset|image|button" 

<form action="./test.html">
    메시지: <input type="text" name="message"><br>
    <input type="submit">
    <input type="reset">
    <input type="image" src="http://placehold.it/50x50?text=click" alt="click" width="50" height="50">
    <input type="button" value="버튼">
</form>

submit, reset, image, button 타입은 모두 클릭 가능한 버튼을 만듭니다.

  • submit : form의 값을 전송하는 버튼
  • reset : form의 값을 초기화하는 버튼
  • image : 이미지를 삽입할 수 있는 버튼 (submit과 동작이 동일함)
  • button : 아무 기능이 없는 버튼

 

 

<select>

<select>는 선택 목록 상자 또는 콤보박스라고도 합니다.

몇 개의 선택지를 리스트 형태로 노출하고 그중 하나를 선택할 수 있게 하는 태그입니다

(multiple 속성을 사용하면 다중 선택도 가능합니다.)

<select>
    <option>서울</option>
    <option>경기</option>
    <option>강원</option>
    ...
</select>

<select>내부의 <option>으로 각 항목을 나타냅니다.

<option>의 속성으로는 selected가 있으며 이는 선택된 항목을 의미합니다.

 

 

<textarea>

한 줄만을 입력할 수 있는 <input type="text" >와 달리 여러 줄의 텍스트를 입력할 때 사용합니다.

<textarea rows="5" cols="30">
    ...
</textarea>

<textarea>에는 텍스트 상자의 크기를 조절하는 rows, cols 속성이 있습니다.

  • cols : 가로 크기를 조절하는 속성
    (한 줄에 들어가는 글자의 수, 수치의 의미는 평균적인 글자의 너비로 정확히 글자 수를 나타내지는 않습니다.)
  • rows : 세로 크기를 조절하는 속성(화면에 보여지는 줄 수)

 

 

<button>

버튼을 만들 때 사용하며 submit, reset, button 3가지의 타입이 있습니다.

<button type="submit|reset|button">ㅇㅇㅇ</button>

각 버튼은  input 타입의 submit, reset, button과 모두 같은 기능을 가진 버튼입니다.

다만, 빈 태그가 아니며 내용을 안에 직접 넣을 수 있으므로 좀 더 자유로운 스타일 표현이 가능합니다.

 

 

<label>

<label> form 요소의 이름과 form 요소를 명시적으로 연결시켜주기 위해 사용합니다.

모든 form 요소에 사용할 수 있습니다.

<label for="name">이름</label>: <input type="text" id="name"><br>
<label for="nickname">이름</label>: <input type="text" id="nickname"><br>
<label for="address">이름</label>: <input type="text" id="address"><br>

form 요소의 id 속성값과 <label> for 속성값을 같게 적어주어야 합니다.

<label>을 사용하면 이를 클릭했을 경우 해당 form 요소를 클릭한 것처럼 동작합니다.

또한, 스크린 리더기를 통해 듣게 되면 해당 form 요소에 접근 시 <label>을 함께 읽어주게 됩니다.

<label>은 사용성, 접근성적인 측면으로 중요한 역할을 하므로 반드시 써주는 것이 좋습니다.

 

 

<fieldset>, <legend>

<fieldset>, <legend>는 form 요소를 구조화 하기 위해 필요한 태그입니다.

  • <fieldset> : 여러 개의 폼 요소를 그룹화하여 구조적으로 만들기 위해 사용
  • <legend> : 폼 요소의 제목으로 <fieldset> 내부에 작성
<fieldset>
    <legend>기본 정보</legend>
    ... 폼 요소들 ...
</fieldset>
<fieldset>
    <legend>부가 정보</legend>
    ... 폼 요소들 ...
</fieldset>

<fieldset>은 보통 form의 성격에 따라 구분합니다.

<legend>는 <fieldset>의 자식으로 반드시 최상단에 위치해야 합니다.

 

 

<form>      

<form>은 form 요소들을 감싸는 태그로 데이터를 묶어서 실제 서버로 전송해주는 역할을 하는 태그입니다.

만약 <fieldset>으로 구조화되어있다면 <fieldset>도 함께 감싸는 역할을 합니다.

<form action="" method="">
    <fieldset>
        <legend>기본 정보</legend>
        ... 폼 요소들 ...
    </fieldset>
    <fieldset>
        <legend>부가 정보</legend>
        ... 폼 요소들 ...
    </fieldset>
</form>

<form>에는 대표적인 2가지 속성이 있습니다.

  • action: 데이터를 처리하기 위한 서버의 주소
  • method: 데이터를 전송하는 방식을 지정

method 속성값에는 get/post 2가지 방식이 존재합니다.

get 방식은 데이터가 전송될 때 주소창에 파라미터 형태로 붙어 데이터가 노출됩니다.

반면, post 방식은 데이터가 전송될 때 데이터가 노출되지 않습니다.