HTML, CSS, Javascript 연습용으로 네이버 회원가입 페이지를 따라 만들어봤습니다.
Javascript로 사용자가 데이터를 입력했는지 확인하기 + 사용자가 입력한 데이터가 조건에 맞는지 확인하기(유효성 검사) -> (데이터가 입력되지 않았거나 조건에 맞지 않다면) 에러메세지 출력하기
이렇게 간단한 기능을 구현해봤습니다.
이 글에서는 결과물과 html, css 소스코드를 간단한 설명과 함께 보여드리려고 합니다.
(휴대폰 인증, Footer 부분 등은 생략하고 만들었습니다. )
하필이면 제가 이거 만들고 나서 며칠 안돼서 네이버에서 회원가입페이지 로고랑 자물쇠 모양이랑 색상이랑 이것저것 수정했더라구요. 제가 만든 건 약간 구버전이 되어버렸네요ㅜ
* 글 하단에 html, css 전체 소스코드를 올려놨습니다. html, css, js 파일은 github에 전부 올려놨어요. github링크도 하단에 같이 첨부해놓았습니다.
1. HTML 코드
간단하게 작성했습니다.
먼저 전체 페이지 구성은 div태그를 이용해 header, wrapper, wrapper 안의 content 이렇게 세 부분으로 작성했습니다.
태그로 묶어서 넣어주고, 버튼도 content 안에 포함시켰습니다.
id 입력폼 부분
content 안에 작성되어있는 id 입력폼 부분 소스코드입니다.
코드를 보시면 “아이디”라는 입력폼의 타이틀을 ,
태그로 감싸 줬는데
h3 태그는 의미상 구분 단위로 쓰기 위해서(입력폼의 제목이라는 뜻) + h3 태그를 모아서 한 번에 스타일을 적용하기 위해서 사용했고,
label 태그는 “아이디”라는 글자를 클릭하면 자동으로 아이디 입력폼에 포커스가 되는 기능을 주기 위해서 사용했습니다.
지금 보니까 h3 태그는 생략해도 큰 문제가 없을 것 같네요..?
*label태그에는 태그를 클릭하면, 동일한 아이디값을 가진 태그에 자동으로 포커스가 되는 기능이 포함되어 있습니다. 저는 이 기능을 사용하기 위해서 태그의 아이디값과 태그의 아이디값을 “id”로 동일하게 설정했습니다.
입력폼은 span태그로 묶어주고, 그 안에 텍스트를 입력받을 태그와 메일주소(“@naver.com”)를 표시해줄 또다른 sapn태그를 넣어줬습니다.
입력폼 전체를 묶은 span 태그에는 box라는 class값을 설정해주고, input 태그에도 int라는 class값을 설정해줬습니다. 아이디 입력폼 뿐 아니라 비밀번호, 이름 등 다른 입력폼에도 같은 클래스 값을 설정해줬습니다. 아이디, 비밀번호, 이름 등 모든 입력폼에 공통적인 스타일을 적용할 것이기 때문입니다. (단, 아이디 입력폼은 다른 입력폼들과 오른쪽 padding 값이 다르기 때문에 나중에 css코드에서 padding-right 스타일만 따로 적용해주기 위해서 int_id라는 class값도 추가로 설정해줬습니다. )
input 태그의 max-length 속성은 입력할 수 있는 글자수를 20자로 제한하는 속성입니다. 네이버에서 20자로 제한하고 있길래 그냥 저도 그렇게 했어요
태그는 아이디값을 잘못 입력했을 때, 입력 폼 아래에 에러 메세지가 표시될 부분을 나타내기 위해 사용했습니다.
각 태그들의 id명, class명은 대부분 실제 네이버 회원가입 페이지에서 그대로 가져왔습니다. (error_next_box, int_id 등)
비밀번호, 이름, 이메일, 휴대전화 등 나머지 입력폼들은 전부 id 입력폼과 비슷한 구성으로 작성했기 때문에 생략하고 넘어가겠습니다.
태그 구성이 조금 다른 생년월일 입력폼만 추가로 볼게요
생년월일 입력폼
생년월일 입력폼 부분의 소스코드입니다.
크게 보면 (입력폼 전체를 묶는)div태그 > bir_wrap > bir_yy, bir_mm, bir_dd 로 구성되어 있습니다.
bir_wrap은 bir_yy, bir_mm, bir_dd 세 요소를 감싸주는 목적으로, css로 세 요소를 배치할 때 필요하기 때문에 추가해줬습니다.
이 외에는 아이디입력폼과 크게 다르지 않기 때문에 특별히 설명할 부분이 없네요
가입하기 버튼
가입하기
버튼 부분은 코드가 간단하죠?
css레이아웃 배치를 염두에 두고 버튼영역(btn_area) > 버튼(button) > 텍스트(span) 이렇게 구분해뒀습니다.
버튼에는 딱히 기능을 추가할 생각이 없었고, 기능을 추가하더라도 어차피 html 소스 전체에 button태그가 하나밖에 없기 때문에 그냥 태그명으로 접근이 가능하니 굳이 id값을 따로 설정하지는 않았습니다.
HTML 코드 작성은 크게 어려운 부분은 아니니까 여기서 마무리할게요!
2. CSS 코드
전체적인 틀 잡기
/* 레이아웃 틀 */ html { height: 100%; } body { margin: 0; height: 100%; background: #f5f6f7; font-family: Dotum,’돋움’,Helvetica,sans-serif; } #logo { width: 240px; height: 44px; cursor: pointer; } #header { padding-top: 62px; padding-bottom: 20px; text-align: center; } #wrapper { position: relative; height: 100%; } #content { position: absolute; left: 50%; transform: translate(-50%); width: 460px; }
1) body, wrapper의 height값을 100%로 설정해줍니다.
height를 %값으로 주게 되면, 상위태그(부모태그)의 높이를 기준으로 높이가 설정됩니다.
(예를 들어 body { height : 1000px } #wrapper { height : 50% } 라면,
wrapper의 height 값은 부모태그인 body태그의 height값 기준 50%인 500px로 설정이 됩니다.)
그래서 height를 %로 설정할 때는 부모태그의 height를 먼저 확인하는 것이 좋습니다.
저는 처음에 wrapper만 height: 100%;로 설정했더니
wrapper의 실제 높이가 0px이 되더라구요(body, html태그의 높이가 설정되어있지 않았기 때문).
wrapper가 content를 감싸줘야 하는데 따로 노는 상황이 되어서 시행착오 끝에
html과 body태그에도 height를 설정해줬더니 제대로 구현이 되었습니다.
2) header에는 text-align: center; 속성을 설정해서 네이버 로고(#logo)가 수평으로 가운데 정렬되도록 해줬습니다.
로고는 이미지 태그인데 text-align으로도 수평 정렬이 되길래 그냥 이렇게 해줬어요.
header의 위 아래 padding값은 고정된 값이기 때문에 px로 설정했고, (px값은 실제 네이버 페이지의 css코드에서 그대로 가져왔어요)
네이버 로고 위에 마우스 커서를 올리면 커서 모양이 포인터로 바뀌는 디테일을 구현하기 위해 cursor: pointer; 속성도 넣어줬습니다.
3) wrapper의 position을 relative로 설정해주고, content는 position: absolute;로 설정했습니다.
이렇게 설정하면 wrapper를 기준점으로 삼아서 content를 배치할 수 있습니다.
wrapper 너비를 기준으로 왼쪽에서 50%만큼 떨어지게 한 다음(left: 50%), transform 속성을 이용해서 content의 너비에서 50%만큼 다시 왼쪽으로 가게 했습니다(transform: translate(-50%)). 이렇게 하면 content를 wrapper안에서 수평으로 중앙정렬 할 수 있습니다.
너비가 고정되어있지 않은 컨텐츠를 중앙정렬할 때 사용하기 좋은 방법인 것 같습니다.
입력 폼 스타일
h3 { margin: 19px 0 8px; font-size: 14px; font-weight: 700; } .box { display: block; width: 100%; height: 51px; border: solid 1px #dadada; padding: 10px 14px 10px 14px; box-sizing: border-box; background: #fff; position: relative; } .int { display: block; position: relative; width: 100%; height: 29px; border: none; background: #fff; font-size: 15px; }
입력 폼 스타일에서 가장 기본이 되는 세 부분입니다!
그림을 좀 못그렸는데 그래도 보면 대충 이해는 가시죠? 아닌가요?ㅎㅎ..
입력폼 부분의 레이아웃은 이렇게 구성되어있습니다.
1) h3은 위로 19px, 아래로 8px 마진을 줘서 자리를 잡아줬구요.
2) box와 int의 높이(height)는 각각 51px, 29px로 고정해주고
3) box와 int의 너비(width)는 100%로 설정했는데, 부모태그인 content의 너비(460px) 기준 100%가 되기 때문에 실제 값은 각각 460px이 되겠습니다.
4) 그리고 box에 padding 값을 줘서 int가 box로부터 위아래로 10px, 양쪽으로 14px만큼 떨어지게(작아지게) 했어요.
단, 아이디 입력폼의 경우 다른 폼과 다르게 오른쪽에 “@naver.com”이 들어갈 공간이 필요하기 때문에
.box.int_id { padding-right: 110px; }
이렇게 오른쪽 padding 값만 따로 110px로 설정해줬어요.
.box.int_pass { padding-right: 40px; } .box.int_pass_check { padding-right: 40px; }
오른쪽에 자물쇠 이미지가 들어가야하는 비밀번호 입력 폼과 비밀번호 재확인 입력 폼도 padding-right를 따로 설정해줬습니다.
5) box의 box-sizing속성은 box의 크기를 어떤 기준으로 계산할지 정하는 속성 입니다.
테두리를 포함해서 계산할지(border-box), 테두리를 제외하고 계산할지(content-box) 등등..
기본값은 content-box입니다. content-box로 설정되어 있는 경우 border가 없다면 괜찮지만 border가 있다면 border size만큼인 1px~2px정도가 내가 정한 box 크기에 +돼서 전체적인 레이아웃이 아주 약간씩 어긋나게 돼요.
그러니 애초에 크기를 정할 때 border크기를 포함시켜서 정하거나(460px + border 1px = 461px로 설정),
아니면 border-box로 설정해주는 것이 좋습니다.
6) 아이디 입력 폼의 “@naver.com”
.step_url { /*@naver.com*/ position: absolute; top: 16px; right: 13px; font-size: 15px; color: #8e8e8e; }
position: absolute, top: 16px, right: 13px -> position이 static이 아닌 부모태그인 box를 기준으로 위에서 16px, 오른쪽에서 13px 떨어진 위치에 배치했습니다.
7) 비밀번호 입력 폼의 자물쇠 이미지
.pswdImg { width: 18px; height: 20px; display: inline-block; position: absolute; top: 50%; right: 16px; margin-top: -10px; cursor: pointer; }
마찬가지로 postion: absolute, top: 50%, right: 16px -> position이 static이 아닌 부모태그 box를 기준으로 위에서 50%, 오른쪽에서 16px만큼 떨어지게 배치했어요.
그리고 margin-top: -10px로 설정해서 위로 다시 10px만큼 올라가게 했어요.
이렇게 한 이유는 세로로 중앙 정렬을 하기 위해서입니다. box높이의 50%만큼 아래로 내려갔다가 -> 자물쇠이미지 높이의 절반(20px/2 = 10px)만큼 다시 위로 올라가면 정확히 중앙에 오게 되니까요.
wrapper에서 content를 가로로 중앙정렬했던 것과 같은 원리입니다.
생년월일 입력 폼 배치
#bir_wrap { display: table; width: 100%; } #bir_yy { display: table-cell; width: 147px; } #bir_mm { display: table-cell; width: 147px; vertical-align: middle; } #bir_dd { display: table-cell; width: 147px; } #bir_mm, #bir_dd { padding-left: 10px; }
생년월일 입력 폼은 table 속성을 이용해서 배치해줬어요.
*참고 : table 속성은 원래 표를 만들 때 사용하는 속성인데요. grid 속성과 비슷하지만, grid가 레이아웃 배치하라고 나온 속성이라면 table 속성은 말그대로 표를 만들라고 나온 속성이기 때문에 레이아웃 배치용으로는 grid를 사용하는 게 바람직하다고 해요. 그런데 grid속성은 비교적 최근에 나온 속성이라 호환되지 않는 브라우저(특히 IE)가 있는 반면, table 속성은 좀 더 많은 브라우저에서 지원이 되기 때문에 table 속성을 이용해서 레이아웃 배치 작업을 하는 경우가 꽤 있는 것 같더라구요. 실제로 네이버 회원가입 페이지의 생년월일 입력 폼 부분은 table 속성을 이용해 배치가 되어있었습니다. 그래서 저도 table을 이용해서 한 번 배치를 해봤는데요.
bir_yy, bir_mm, bir_dd를 각각 table을 구성하는 cell로 설정하고, 세 요소를 감싸고 있는 bir_wrap의 display속성을 table로 설정했습니다.
bir_yy, bir_mm, bir_dd(테이블의 각 셀들)의 너비는 각각 147px로 설정하고,
그 중 bir_mm, bir_dd는 padding-left: 10px로 설정해서 셀들 사이에 10px만큼 간격이 생기게 했어요.
bir_mm에 vertical-align: middle;으로 설정한 이유는 나머지 두 셀과 높이를 맞춰주기 위해서 입니다.
bir_yy, bir_dd가 box안에 int(height:31px)가 들어가 있는 구조라면
bir_mm은 box안에 select(height:29px)가 들어가 있는 구조라 나머지 두 셀과 박스 높이가 약간 달랐어요.
에러메세지 배치
↓
이렇게 에러메세지가 뜨도록
.error_next_box { margin-top: 9px; font-size: 12px; color: red; display: none; } #alertTxt { position: absolute; top: 19px; right: 38px; font-size: 12px; color: red; display: none; }
위와 같이 css 스타일을 적용해줬습니다.
error_next_box가 “8~16자 영문 대 소문자, 숫자, 특수문자를 사용하세요.”와 같은 에러메세지가 출력될 부분이고,
alertTxt는 비밀번호 입력폼에서 “사용불가”와 같은 경고메세지를 출력할 부분입니다.
error_next_box는 margin 값을 이용해서 위에있는 box와 약간 떨어뜨려주면서 자리를 잡아줬습니다.
alertTxt는 “@naver.com”이나 자물쇠 이미지처럼 position: absoulte 속성을 이용해서 자리를 잡아줬어요.
둘 다 display 속성은 none으로 해서 보이지 않게 설정해두었습니다.
이벤트가 발생하면(사용자가 잘못된 데이터를 입력하면) display: block으로 바뀌면서 에러메세지가 나타날거에요. (이 부분은 자바스크립트로 구현)
버튼 스타일
마지막으로 별 거 없는 버튼 스타일입니다.
.btn_area { margin: 30px 0 91px; } #btnJoin { width: 100%; padding: 21px 0 17px; border: 0; cursor: pointer; color: #fff; background-color: #08a600; font-size: 20px; font-weight: 400; font-family: Dotum,’돋움’,Helvetica,sans-serif; }
버튼 영역은 위 30px(위에 있는 입력폼과 간격 띄우기), 아래 91px(원래 버튼 아래에 들어가는 footer영역 높이 정도) 마진을 줬어요.
버튼 크기는 width와 padding으로 잡아줬어요. 버튼 너비(width)를 100%로 설정해서 부모 태그인 content의 너비인 460px로 만들고, 위 아래 padding 값을 줘서 버튼 크기를 위아래로 늘려줬어요.
그리고 버튼 태그에 기본적으로 들어가있는 border(테두리)를 없애주고, 실제로 동작하는 버튼은 아니지만 그래도 커서는 포인터로 설정했어요.
그 외에 색상이나 폰트는 그냥 네이버 css를 복붙했습니다.
이렇게 하면 레이아웃은 완성입니다! 설명이 생략된 부분은 아래에 있는 html, css 전체 소스코드나 github에 올려둔 파일을 참고해주시면 됩니다.
Github 링크
https://github.com/from97/naver_join
HTML, CSS 전체 소스코드
HTML 소스코드
더보기
네이버 : 회원가입
CSS 소스코드
더보기 /* 레이아웃 틀 */ html { height: 100%; } body { margin: 0; height: 100%; background: #f5f6f7; font-family: Dotum,’돋움’,Helvetica,sans-serif; } #logo { width: 240px; height: 44px; cursor: pointer; } #header { padding-top: 62px; padding-bottom: 20px; text-align: center; } #wrapper { position: relative; height: 100%; } #content { position: absolute; left: 50%; transform: translate(-50%); width: 460px; } /* 입력폼 */ h3 { margin: 19px 0 8px; font-size: 14px; font-weight: 700; } .box { display: block; width: 100%; height: 51px; border: solid 1px #dadada; padding: 10px 14px 10px 14px; box-sizing: border-box; background: #fff; position: relative; } .int { display: block; position: relative; width: 100%; height: 29px; border: none; background: #fff; font-size: 15px; } input { font-family: Dotum,’돋움’,Helvetica,sans-serif; } .box.int_id { padding-right: 110px; } .box.int_pass { padding-right: 40px; } .box.int_pass_check { padding-right: 40px; } .step_url { /*@naver.com*/ position: absolute; top: 16px; right: 13px; font-size: 15px; color: #8e8e8e; } .pswdImg { width: 18px; height: 20px; display: inline-block; position: absolute; top: 50%; right: 16px; margin-top: -10px; cursor: pointer; } #bir_wrap { display: table; width: 100%; } #bir_yy { display: table-cell; width: 147px; } #bir_mm { display: table-cell; width: 147px; vertical-align: middle; } #bir_dd { display: table-cell; width: 147px; } #bir_mm, #bir_dd { padding-left: 10px; } select { width: 100%; height: 29px; font-size: 15px; background: #fff url(https://static.nid.naver.com/images/join/pc/sel_arr_2x.gif) 100% 50% no-repeat; background-size: 20px 8px; -webkit-appearance: none; display: inline-block; text-align: start; border: none; cursor: default; font-family: Dotum,’돋움’,Helvetica,sans-serif; } /* 에러메세지 */ .error_next_box { margin-top: 9px; font-size: 12px; color: red; display: none; } #alertTxt { position: absolute; top: 19px; right: 38px; font-size: 12px; color: red; display: none; } /* 버튼 */ .btn_area { margin: 30px 0 91px; } #btnJoin { width: 100%; padding: 21px 0 17px; border: 0; cursor: pointer; color: #fff; background-color: #08a600; font-size: 20px; font-weight: 400; font-family: Dotum,’돋움’,Helvetica,sans-serif; }
[HTML/CSS/Script] 회원가입 페이지 만들기
┖─ 개인 [HTML/CSS/Script] 회원가입 페이지 만들기 YN ・ URL 복사 본문 기타 기능 공유하기 신고하기 [개발환경] IDE – JAVA Eclipse win32-x86 Web – TomCat v8.5 오늘은 최근 팀 프로젝트를 하면서 만들어두었던 회원가입 페이지를 소개하고자 합니다. 처음 HTML 다뤘을 땐 한 동안은 지지리도 못했는데…. 역시 코딩은 계속해야 는다는 걸 이번에도 깨닫습니다. (빡센 복습은 덤으로!) 그럼 저의 완성된 회원가입 페이지를 설명드리도록 하겠습니다! 1. 벤치마킹 저는 심플을 추구하는 편이라 디자인적으로도 깔끔해야 직성이 풀리는 편입니다. :] 그래서 사용자 input 칸 바깥에 박스같은 디자인이 있으면 좋겠다싶어, 어느 사이트로 벤치마킹할까 하다가.. 네이버 회원가입 창을 선택했습니다!! 네이버로 선택한 이유는 국민 포털사이트로 그만큼 사용자가 많기 때문에 디자인적으로나 기능적으로도 많이 신경을 쓰고 개발을 했을 것 같아 선택하게 되었습니다. 그래서 그런지 접속했을 때 딱 깔끔하니 입력해야 될 정보들이 한눈에 잘 보이지않나요? 마음에 들었으니 벤치마킹을 해보겠습니다. 이제 가져올 소스코드를 보도록 하겠습니다. 개발자 도구(F12)를 켜서 아이디 입력부분을 커서로 두니 소스가 나와있습니다. 참고로 좌측에 있는 코드는 HTML 코드이고, 우측은 CSS 코드입니다. 코드를 보다보면 input 칸 마다 span 태그에 class속성을 .ps_box로 지정하여 css에서 border, padding을 줌으로써 박스 디자인을 해주었더라구요. 그러니까 div → span(class=”ps_box”) → input 이런식으로 상위 하위태그를 input 태그마다 감싸주었습니다.(div가 상위, input 하위) 해당 부분은 저에게 필요한 코드이니 제 페이지에 적립을 해두겠습니다. 다음으로 볼 부분은 “input값이 있다? == 유효성검사 처리 필요함” 라고 저는 생각하기 때문에 네이버는 어떻게 처리를 하였는지 한번 보겠습니다. 기대가 되는군요 🙂 입력부분의 경우, 캡처를 해두었는데 span태그 안에 텍스트가 없다가 → 오류가 생기면 그때 태그에 텍스트가 생성됩니다. 그것도 한 문구만 나오는 것이 아니라 오류종류에 따라 텍스트가 출력됩니다. 유효성검사를 어떻게 처리하였는지는(script..) 관리자 도구에서 볼 수 있는 코드는 한계가 있기 때문에 직접 구현을 했어야 했습니다. 작성된 코드는 아래에서 보실 수 있습니다. 우선은 오류가 발생하면 그때서야 오류 텍스트가 출력되는 점이 저에게 힌트가 되어주었습니다. [오류 발생 전] [오류 발생] 2. HTML 이제부터 마크업 구조를 설계해보며 틀을 잡아보겠습니다. 저희 조는 배달어플을 모티브로 컨셉이 잡혀져 있는데요. 컨셉에 맞게 배달어플이라면 필요한 정보가 뭐가 있을까 생각하였습니다. 그렇게 되면 전화번호와 주소는 필수이고, 로그인을 하려면 본인 확인을 위한 ID, PW가 필요하겠죠?? 해서 저는 아이디, 비밀번호, 성명, 전화번호, 주소, 이메일, 개인정보동의 이 정도로 구현을 해보았습니다. 또한 input의 부분은 위에서 벤치마킹한 코드로 넣어주어야겠습니다. [ 코드 ① 타이틀 – 아이디 – 비밀번호(재확인) – 성명 – 전화번호 – 주소 ]
참치라이더 회원가입
< / style > < / head > < body > < p > < h1 align = "center" > 회원 가입 < / h1 > < / p > < div align = "legt" > 만든이 : jerry < / div > < br > < FORM action = "mailto:[email protected] ?subject=안녕하세요" method = "post" enctype = "text/plain" > < table width = "50%" height = "80" border = "1" align = "center" cellpadding = "5" cellspacing = "0" bordercolor = "#9999FF" > < tr align = "center" > < td colspan = "2" align = "cener" bgcolor = "skyblue" > < div style = "font-weight: bold; font-size: 18px" > 회원 기본 정보 < / div > < / td > < / tr > < tr > < td bgcolor = "pink" align = "center" > < div style = "font-weight: bold;" > 아이디: < / div > < / td > < td > < input type = "text" name = "my_id" size = "12" maxlength = "12" > 4~12자의 영문 대소문자와 숫자로만 입력 < / td > < / tr > < tr > < td bgcolor = "pink" align = "center" > < div style = "font-weight: bold;" > 비밀번호: < / div > < / td > < td > < input type = "password" name = "my_pwd" size = "12" maxlength = "12" > 4~12자의 영문 대소문자와 숫자로만 입력 < / td > < / tr > < tr > < td bgcolor = "pink" align = "center" > < div style = "font-weight: bold;" > 비밀번호 확인: < / div > < / td > < td > < input type = "password" name = "my_pwd2" size = "12" maxlength = "12" > < / td > < / tr > < tr > < td bgcolor = "pink" align = "center" > < div style = "font-weight: bold;" > 메일주소: < / div > < / td > < td > < input type = "text" name = "my_mail" size = "30" maxlength = "30" > 예)[email protected] < / td > < / tr > < tr > < td bgcolor = "pink" align = "center" > < div style = "font-weight: bold;" > 이름: < / div > < / td > < td > < input type = "text" name = "my_name" size = "10" maxlength = "10" > < / td > < / tr > < tr align = "center" > < td colspan = "2" bgcolor = "skyblue" > < div style = "font-weight: bold; font-size: 18px" > 개인 신상 정보 < / div > < / td > < / tr > < tr > < td bgcolor = "pink" align = "center" > < div style = "font-weight: bold;" > 주민등록번호: < / div > < / td > < td > < input type = "text" name = "my_num1" size = "6" maxlength = "6" > – < input type = "password" name = "my_num2" size = "7" maxlength = "7" > 예)123456-1234567 < / td > < / tr > < tr > < td bgcolor = "pink" align = "center" > < div style = "font-weight: bold;" > 생일: < / div > < / td > < td > < input type = "text" name = "my_birth" size = "4" maxlength = "4" > 년 < select name = "월" > < option value = "1" selected = "selected" > 1 < / option > < option value = "2" > 2 < / option > < option value = "3" > 3 < / option > < option value = "4" > 4 < / option > < option value = "5" > 5 < / option > < option value = "6" > 6 < / option > < option value = "7" > 7 < / option > < option value = "8" > 8 < / option > < option value = "9" > 9 < / option > < option value = "10" > 10 < / option > < option value = "11" > 11 < / option > < option value = "12" > 12 < / option > < / select > 월 < select name = "일" > < option value = "1" selected = "selected" > 1 < / option > < option value = "2" > 2 < / option > < option value = "3" > 3 < / option > < option value = "4" > 4 < / option > < option value = "5" > 5 < / option > < option value = "6" > 6 < / option > < option value = "7" > 7 < / option > < option value = "8" > 8 < / option > < option value = "9" > 9 < / option > < option value = "10" > 10 < / option > < option value = "11" > 11 < / option > < option value = "12" > 12 < / option > < option value = "13" > 13 < / option > < option value = "14" > 14 < / option > < option value = "15" > 15 < / option > < option value = "16" > 16 < / option > < option value = "17" > 17 < / option > < option value = "18" > 18 < / option > < option value = "19" > 19 < / option > < option value = "20" > 20 < / option > < option value = "21" > 21 < / option > < option value = "22" > 22 < / option > < option value = "23" > 23 < / option > < option value = "24" > 24 < / option > < option value = "25" > 25 < / option > < option value = "26" > 26 < / option > < option value = "27" > 27 < / option > < option value = "28" > 28 < / option > < option value = "29" > 29 < / option > < option value = "30" > 30 < / option > < option value = "31" > 31 < / option > < / select > 일 < / td > < / tr > < tr > < td bgcolor = "pink" align = "center" > < div style = "font-weight: bold;" > 관심분야: < / div > < / td > < td > < FORM name = chkForm action = "" method = post > < input type = "checkbox" name = "chk" value = "COMPUTER" onclick = "check_only(this)" > 컴퓨터 < input type = "checkbox" name = "chk" value = "INTERNET" onclick = "check_only(this)" > 인터넷 < input type = "checkbox" name = "chk" value = "TRABLE" onclick = "check_only(this)" > 여행 < input type = "checkbox" name = "chk" value = "MOVIE" onclick = "check_only(this)" > 영화감상 < input type = "checkbox" name = "chk" value = "MUSIC" onclick = "check_only(this)" > 음악감상 < / FORM > < / td > < / tr > < tr > < td bgcolor = "pink" align = "center" > < div style = "font-weight: bold;" > 자기소개: < / div > < / td > < td > < textarea name = "my_intro" cols = "70" rows = "5" > < / textarea > < / td > < / tr > < / table > < p align = "center" > < input type = "submit" value = "회원 가입" > < input type = "reset" value = "다시 입력" > < / FORM > < / p > < / body > < / html > Colored by Color Scripter cs
* 완성 모습
회원가입 폼
반응형
See the Pen VwpYNBm by CodingCitron (@codingcitron) on CodePen.
회원가입 폼을 만들어 봤다.
만들때마다 느끼지만 상당히 어렵다고 느껴지는..
728×90
키워드에 대한 정보 회원 가입 창
다음은 Bing에서 회원 가입 창 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.
이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!
사람들이 주제에 대해 자주 검색하는 키워드 로그인 페이지 만들기 실무편 | Animated Login page Tutorial (Label Text Animation)
로그인 페이지 만들기
로그인 페이지 코딩
animated login page
login page effect
따라하기 쉬운 웹코딩 로그인 페이지
로그인 페이지 스타일
login html css jquery tutorial
웹강좌 기초편 로그인 페이지
퍼블리셔를 위한 웹강좌
로그인 페이지 퍼블리싱
input 자동완성끄기 필수값 입력
누구나 할수 있는 로그인 페이지
animated login form tutorial
웹퍼블리셔 실무편
빈입력 폼 전송시 텍스트 애니메이션
버튼 클릭 시 폼 애니메이션
login form html css
jquery css login page
login form
animated login form
웹코딩 로그인 퍼블리싱
로그인 #페이지 #만들기 #실무편 #| #Animated #Login #page #Tutorial #(Label #Text #Animation)
YouTube에서 회원 가입 창 주제의 다른 동영상 보기
주제에 대한 기사를 시청해 주셔서 감사합니다 로그인 페이지 만들기 실무편 | Animated Login page Tutorial (Label Text Animation) | 회원 가입 창 , 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.