본문 바로가기

학습 기록/FE (React, JS, HTML, CSS, ...)

230904 form tag 폼 태그, HTML5

반응형

[23.09.04] 30일차

 

<<진도>>

Front-end

- form 태그

-HTML5 form

 

 <<오늘의 팁>>

사용자 코드 조각 - html.json

+추가) snippet

  "langko html form": {

    "scope": "html", // 범위

    "prefix": "lko", // 단축키

    "body": [ // [] 안이 실제 들어오는 내용

      "<!DOCTYPE html>", // ,로 이어져야한다

      "<html lang=\"ko\">",

      "<head>",

      "<title>$1</title>",

      "<meta charset=\"UTF-8\">",

      "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">",

      "</head>",

      "<body>",

      "$2",

      "</body>",

      "</html>"

    ],

    "description": "lang korean 자동코드"

  }

 

$1, $2는 탭을 1, 2번 하면 가는위치

 

 

 

** Emmet 약어 div#~~ id~~<div>

    div#header

    <div id="header"></div>

 

 

 

url (출처. 모질라재단)

- http : hyper text transfer protocol (하이퍼 텍스트 전송 프로토콜)

브라우저와 웹 서버가 ISO Latin1 영문자를 사용하여 서로 '통신'할 수 있도록 하는 프로토콜(네트워크에서 정보를 교환하는 방법을 기술하는 규칙)입니다.

- domain : 이름

- port : 데이터가 들어오고 나가는 문

(서버에서 지정해주고 클라이언트에겐 보통 안보인다)

- path to resource : 웹서버의 리소스 경로 .확장자는 생략추세

- parameter : 쿼리파라미터 라고도 함 / ? 다음에 오는 key()value()은 한 쌍

               여러 개일 경우 &뒤에 한 쌍씩

- anchor : id에 해당

 

<< form 태그 >>

form-ex01

<!DOCTYPE html>

<html lang="ko">

 

<head>

  <title>form</title>

  <meta charset="UTF-8">

  <meta name="viewport" content="width=device-width, initial-scale=1.0">

</head>

 

<body>

  <!-- [action=""] 이동할 page / 요청page -->

  <!--

    client server에 데이터를 보낼 때 두가지 방식

    method=get / post” 방식

    get : url(file 형태이기는 하다)에 데이터를 싣고 보내는 방식 : 처리 빠름,

    / 덧붙이는 데이터가 한정

    post : 데이터가 page[file] 형태로 서버에 전달 : 쿼리파라미터가 url

    드러나지 않고 암호화되어 보안 효과->시간소요 / 데이터 제한없음.

  -->

  <form action="test.html" method="get">

    <!-- [input] *name은 키key / 입력창 입력내용은 값value -->

    <div>

      <!-- [label] input 텍스트상자 앞에 이름 -->

      <!-- for="" id=""를 동일하게 하나로 취급 -->

      <label for="user_name">이름 : </label>

      <input type="text" name="user_name" id="user_name">

    </div>

    <div>

      <label for="user_id">아이디 : </label>

      <input type="text" name="user_id">

    </div>

    <div>

      <label for="user_pw">비밀번호 : </label>

      <input type="password" name="user_pw" id="user_pw">

    </div>

 

    <!-- [radio] : 여러개 중 1개만 선택 / *같은 name 사용해야 한 묶음 인식 -->

    <div>

      <!-- **radio "value"를 직접 작성해야 서버로 전송됨(URL에 보임) -->

      <!-- checked는 기본 선택상태 -->

      <span>성별 : </span>

      <label for=""></label>

      <input type="radio" name="gender" id="male" value="male" checked>

      <label for=""></label>

      <input type="radio" name="gender" id="female" value="female">

    </div>

 

    <!-- [checkbox] 다중선택이 가능 -->

    <div>

      <!-- *checkbox "value"를 작성해야 서버로 데이터 전송 -->

      <span>취미 : </span>

      <label for="reading">독서</label>

      <input type="checkbox" name="hobby1" id="reading" value="reading">

      <label for="movie">영화감상</label>

      <input type="checkbox" name="hobby2" id="movie" value="movie">

    </div>

 

    <hr>

    <!-- [submt] 제출 버튼 / [value] 버튼안에 내용 -->

    <input type="submit" value="전송">

  </form>

</body>

 

</html>

 

form-ex02

<!DOCTYPE html>

<html lang="ko">

 

<head>

  <title>form</title>

  <meta charset="UTF-8">

  <meta name="viewport" content="width=device-width, initial-scale=1.0">

</head>

 

<body>

  <!-- action에 반드시 응답할 페이지가 있어야한다. 없으면("") 현재페이지 요청 -->

  <form action="" method="get">

 

    <!-- [fieldset] 칸 묶어주는 역할 / [legend] fieldset의 타이틀 -->

    <fieldset>

      <legend>회원가입</legend>

      <div>

        <label for="user_name">이름 : </label>

        <!-- placeholder : 입력대기 문자표시 -->

        <!-- autofocus : 자동 기본커서 위치 //일반적으로 속성만 있는 것을 맨뒤로 -->

        <input type="text" name="user_name" id="user_name"

        placeholder="이름을 입력하세요" autofocus>

      </div>

      <div>

        <!-- [select], [option] value가 있어야 데이터 전송 -->

        <label for="city">거주지역</label>

        <select name="city" id="city" size="3" multiple>

          <!-- * size="" 기본으로 보이는 양조절 (기본:1) -->

          <!-- * multiple : 다중선택 가능하게 -->

          <option value="seoul" selected>서울</option>

          <!-- selected : 기본선택 지정 -->

          <option value="incheon">인천</option>

          <option value="daegu">대구</option>

          <option value="jeju">제주</option>

        </select>

      </div>

      <div>

        <lable for="info">간단한 소개</lable><br>

        <!-- [textarea] : 텍스트 박스 : 크기조정 가능

          기본 크기 :

          'cols' column (폰트에 따라 변동 - 대략적임)

          'rows' row 10

        -->

        <textarea name="info" id="info" cols="30" rows="10"

        placeholder="간단한 소개를 작성하세요"></textarea>

      </div>

    </fieldset>

    <div>

      <input type="submit" value="회원가입">

      <!-- *reset form안의 내용을 모두 지워버리는 기능 -->

      <input type="reset" value="취소">

      <!-- [button] value X, content로 내용을 넣어준다, 닫는 태그있음.

      button js로 기능 지정해줘야한다 -->

      <!-- <button type="button">회원가입</button> -->

    </div>

  </form>

 

</body>

 

</html>

 

 

[ HTML5 FORM ]

form-ex03

<!DOCTYPE html>

<html lang="ko">

 

<head>

  <title>form</title>

  <meta charset="UTF-8">

  <meta name="viewport" content="width=device-width, initial-scale=1.0">

</head>

 

<body>

 

  <form action="test.html">

    <fieldset>

 

      <legend>HTML5 FORM</legend>

      <div>

        <label for="user_name">이름 : </label>

        <!-- required : 필수 입력 정보 -->

        <input type="text" id="user_name" name="user_name" autofocus required autocomplete="off">

        <!-- autocomplete : 자동완성 저장여부 -->

      </div>

      <div>

        <label for="user_email">이메일 : </label>

        <!-- type "email"은 양식이 맞지않으면 재입력 알림 (~@~) -->

        <!-- 유효성 검증을 client에서 처리하기 때문에 효율적임 -->

        <input type="email" id="user_email" name="user_email" placeholder="이메일을 입력하세요">

      </div>

      <div>

        <label for="user_url">웹사이트 : </label>

        <!-- type "url"은 양식이 맞지않으면 재입력 알림 (http:~) -->

        <input type="url" id="user_url" name="user_url" value="https://www.naver.com" readonly>

        <!-- readonly : 써져있는 것을 변경 불가 -->

        <input type="url" id="user_url" name="user_url" value="https://www.naver.com" disabled>

        <!-- disabled : 아예 커서 포커스가 불가능 -->

      </div>

      <div>

        <label for="order">주문수량 : </label>

        <!-- "number"는 숫자만 입력되고 수량 편하게 조절가능 -->

        <input type="number" id="order" name="order" min="0" max="5">

        <!-- min 최소값 max 최대값 지정 -->

      </div>

      <div>

        <label for="user_date">제출일</label>

        <!-- 달력 제공 (max/min 선택범위 시작/끝 날짜 선택가능)-->

        <input type="date" id="user_date" name="user_data" min="2023-09-03">

      </div>

      <div>

        <label for="user_color">색선택</label>

        <!-- color 선택 (value : 초기색 값)-->

        <input type="color" id="user_color" name="user_color" value="#ff0000">

      </div>

 

    </fieldset>

    <input type="submit" value="가입하기">

  </form>

 

</body>

 

</html>

 

 

 

 

 

반응형