들어가기 전에
이전 강의에 이어 폼 요소의 종류인 <label>, <fieldset>, <legend>, <form>에 대해 알아보도록 하겠습니다.
핵심키워드
- label
- fieldset
- legend
- form
학습하기
들어가기 전에
이전 강의에 이어 폼 요소의 종류인 <label>, <fieldset>, <legend>, <form>에 대해 알아보도록 하겠습니다.
핵심키워드
학습하기
<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>은 보통 form의 성격에 따라 구분합니다.
<legend>는 <fieldset>의 자식으로 반드시 최상단에 위치해야 합니다.
<fieldset>
<legend>기본 정보</legend>
... 폼 요소들 ...
</fieldset>
<fieldset>
<legend>부가 정보</legend>
... 폼 요소들 ...
</fieldset>
<form>
<form>은 form 요소들을 감싸는 태그로 데이터를 묶어서 실제 서버로 전송해주는 역할을 하는 태그입니다.
만약 <fieldset>으로 구조화되어있다면 <fieldset>도 함께 감싸는 역할을 합니다.
<form action="" method="">
<fieldset>
<legend>기본 정보</legend>
... 폼 요소들 ...
</fieldset>
<fieldset>
<legend>부가 정보</legend>
... 폼 요소들 ...
</fieldset>
</form>
<form>에는 대표적인 2가지 속성이 있습니다.
method 속성값에는 get/post 2가지 방식이 존재합니다.
get 방식은 데이터가 전송될 때 주소창에 파라미터 형태로 붙어 데이터가 노출됩니다.
반면, post 방식은 데이터가 전송될 때 데이터가 노출되지 않습니다.
코드실습
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>form</title>
</head>
<body>
<form action="">
<h1>Form 관련 요소</h1>
<fieldset>
<legend>기본 정보</legend>
<label for="userid">아이디 : </label> <input type="text" placeholder="영문으로만 써주세요" id="userid"><br>
<label for="userpw">비밀번호 : </label> <input type="password" id="userpw"><br>
성별 : <label for="male">남자</label> <input type="radio" name="gender" id="male" checked>, <label for="female">여자</label> <input type="radio" name="gender" id="female"><br>
</fieldset>
<fieldset>
<legend>부가 정보</legend>
취미 : 영화 감상 <input type="checkbox" name="hobby" checked>, 음악 감상 <input type="checkbox" name="hobby">, 독서 <input type="checkbox" name="hobby"><br>
프로필 사진 업로드 : <input type="file"><br>
사는 지역 : <select>
<option>서울</option>
<option>경기</option>
<option>강원</option>
<option selected>제주</option>
</select><br>
자기소개 : <textarea cols="30" rows="5" placeholder="자기소개는 짧게 해주세요."></textarea><br>
<button type="submit">전송</button>
<button type="reset">취소</button>
</fieldset>
</form>
</body>
</html>
참고링크
https://developer.mozilla.org
comment
2021-07-05
강의 듣다가 그러면 post 태그보다 보안성이 약한 get 태그는 왜 사용하는지 궁금해서 구글링해봤는데 궁금하신 분들은 아래 링크 확인하시면 좋을 것 같아요!! get 태그는 기록이 남기 때문에 오히려 검색같은 기능에 최적화 되어있다고 하네요!
https://stackoverflow.com/questions/51188563/at-html-form-tag-why-should-i-use-get-method-instead-of-post
예시를 보면 레이블과 인풋 태그 동시사용할때 ":"의 위치가 강의와 예시가 다른데 의미 어느곳에 사용해도 상관없나요? 어느곳에 사용하는게 일반적이고 깔끔할까요? 1번과 같이 내용을 안쪽에 몰아넣는게 더 깔끔하지 않나요?
1번<label for="userpw">비밀번호 : </label> <input type="password" id="userpw"><br>
2번<label for="userpw">비밀번호</label> :<input type="password" id="userpw"><br>
Get, Post 전송하는 방식의 차이점을 알게되었습니다.
<label for="username">이름</label>:
<input type="text" placeholder="홍길동" id="username">
id를 갖게하여 이름과 입력값을 묶어준다.
<fieldset>
<legend>기본정보</legend>
</fieldset>
폼을 그룹화 하는 경우에 사용, 예시로는 회원가입하는 경우 필수적으로 정보 입력을 해야 하는 것과 아닌 것들을 구분할 수 있다.
<form action="서버 주소" method="post">...</form>
폼을 그룹화하는 방법, get방식은 로그인 하는 경우 주소에 보낸 값이 보이기 때문에 보안상 부적절하므로 post방식을 사용
감사합니다
lable이 레이블이고 label은 라벨 아닌가요 ?