웹코딩 기초: 텍스트 상자와 버튼은 어떻게 만들까? HTML 폼(Form) 태그 사용법

웹사이트를 만들다 보면 사용자의 정보를 받아야 할 때가 반드시 옵니다. 회원가입, 로그인, 검색창, 댓글 등 모든 ‘입력’의 순간에 쓰이는 것이 바로 HTML Form(양식)입니다.

오늘은 이 태그들을 조합해서 ‘가장 기본적인 로그인 창’을 직접 코딩해 보겠습니다. 이 원리만 알면 검색창이나 회원가입 페이지도 식은 죽 먹기입니다.

HTML 코드가 작성됨에 따라 화면에 아이디 입력창(Text), 비밀번호 입력창(Password), 로그인 버튼(Submit)이 레고 블록처럼 조립되는 과정을 표현한 3D 아이소메트릭 일러스트.
▲ form은 데이터를 담는 그릇이고, input은 데이터를 담는 도구입니다.

1. 기본 골격: <form> 태그

모든 입력 요소는 <form>이라는 울타리 안에 있어야 서버로 전송될 수 있습니다.

<form action=”/login” method=”POST”>
    <!– 여기에 입력창들이 들어갑니다 –>
</form>

  • action: 입력받은 데이터를 어디로 보낼지(도착지 URL) 정합니다.
  • method: 어떻게 보낼지 정합니다. (로그인처럼 보안이 중요하면 POST, 단순 검색은 GET을 씁니다.)

2. 핵심 부품: <input> 태그 유형별 정리

사용자에게 입력을 받는 태그입니다. type 속성에 무엇을 적느냐에 따라 모양과 기능이 완전히 달라집니다.

① 아이디 입력창 (type=”text”)

가장 기본적인 텍스트 상자입니다.

<input type="text" name="username" placeholder="아이디를 입력하세요">

② 비밀번호 입력창 (type=”password”)

입력한 내용이 점(●●●)으로 가려집니다. 보안 필수 요소입니다.

<input type="password" name="userpw" placeholder="비밀번호">

③ 제출 버튼 (type=”submit”)

이 버튼을 누르면 폼 안의 내용이 서버로 전송됩니다.

<input type="submit" value="로그인">

💡 코드캠의 실전 TIP: <label>을 꼭 쓰세요!

많은 초보자들이 <input>만 덩그러니 씁니다. 하지만 시각장애인용 스크린 리더나 사용 편의성을 위해 <label> 태그로 입력창에 이름을 붙여주는 것이 웹 표준입니다. 아래 완성 코드를 참고하세요.

3. [실습] 로그인 페이지 완성 코드

위의 내용들을 합쳐서 실제 작동하는 로그인 폼을 만들어 봅시다. 이 코드를 복사해서 .html 파일로 저장해 보세요.

<form action=”#” method=”POST”>

  <!– 아이디 입력 –>
  <label for=”userid”>아이디</label>
  <input type=”text” id=”userid” name=”username” placeholder=”ID를 입력하세요” required>

  <!– 비밀번호 입력 –>
  <label for=”userpw”>비밀번호</label>
  <input type=”password” id=”userpw” name=”password” placeholder=”비밀번호 8자리” required>

  <!– 로그인 버튼 –>
  <input type=”submit” value=”로그인 하기”>

</form>

📌 코드 포인트 해석

  • placeholder: 입력창 안에 흐릿하게 보이는 도움말입니다.
  • required: 이 속성을 넣으면 빈칸인 상태로 제출 버튼을 눌렀을 때 “입력란을 작성하세요”라는 경고창이 자동으로 뜹니다. (자바스크립트 없이도 가능!)
  • for & id: 라벨의 for값과 인풋의 id값을 일치시키면, 글자(라벨)만 클릭해도 입력창에 커서가 깜빡입니다.

오늘은 HTML로 웹사이트의 문을 달아보았습니다. <form>은 택배 상자고, <input>은 그 안에 담길 물건이라는 점만 기억하시면 됩니다.

하지만 지금 만든 로그인 창은 디자인이 없어서 조금 투박하죠? HTML은 뼈대일 뿐이니까요. 다음 단계는 CSS로 이 뼈대에 예쁜 옷을 입혀주는 것입니다.

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다