Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 백준
- Main
- 차이점
- 공부할 거 넘많다~
- TS
- git flow start
- 바닐라JS
- javascript30
- Next.js
- 개발일지
- git
- js
- AJAX
- axios
- 실무는 공식문서로
- 끝까지 잘 마무리하기
- git flow finish
- Mac
- api 라우트
- CSS
- fetch pull 차이
- jQuery
- 책으론 원리만
- 힘들었던 한주
- 클라이언트 컴포넌트
- freecodecamp
- HTML
- 서버 컴포넌트
- JavaScript
- 다시 홧팅
Archives
- Today
- Total
다다의 개발일지 6v6
[HTML & CSS] Learn HTML Forms by Building a Registration Form 본문
Frontend/HTML, CSS
[HTML & CSS] Learn HTML Forms by Building a Registration Form
dev6v6 2025. 2. 12. 23:58https://www.freecodecamp.org/learn/2022/responsive-web-design/learn-html-forms-by-building-a-registration-form/step-1
www.freecodecamp.org
vh unit stands for viewport height,
단위 vh -> viewport height , 화면의 100%가 100vh임
input type이 password일 때 minlength="8" 이렇게 설정할 수 있음.
-> pattern 속성을 이용해서 바꿔보자 (아래 정리)
🔑 pattern 속성을 사용한 비밀번호 유효성 검사
비밀번호 입력 필드에서 type="password"를 사용할 때, pattern 속성을 추가하면 비밀번호가 특정 규칙(정규식)에 맞는지 검사할 수 있다.
<input id="new-password" type="password" pattern="[a-z0-5]{8,}" required />
- pattern="[a-z0-5]{8,}" → 소문자(a-z) 또는 숫자(0~5)로 이루어진 8글자 이상만 허용
- -> A-Z 추가하면 대문자도 가능
- minlength 속성을 삭제 → pattern 속성만으로 최소 길이(8글자 이상)를 지정할 수 있기 때문
- {8,} → 최소 8글자 이상 입력해야 함
Select element
<label>How did you hear about us?
<select>
<option value="">(select one)</option>
<option value="1">freeCodeCamp News</option>
<option value="2">freeCodeCamp YouTube Channel</option>
<option value="3">freeCodeCamp Forum</option>
<option value="4">Other</option>
</select>
</label>

option에 있는 value 값은 서버에 데이터 보낼 때 저렇게 보내짐!
CSS selector
input[type="file"] { /* 이건 속성 selector 인데 type이 file인 input을 가리킨다. */
padding: 1px 2px;
}
fieldset:last-of-type { /* fieldset 중에서 가장 마지막 거! */
border-bottom: none;
}
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Registration Form</title>
<link rel="stylesheet" href="styles.css" />
</head>
<body>
<h1>Registration Form</h1>
<p>Please fill out this form with the required information</p>
<form method="post" action='https://register-demo.freecodecamp.org'>
<fieldset>
<label for="first-name">Enter Your First Name: <input id="first-name" name="first-name" type="text" required /></label>
<label for="last-name">Enter Your Last Name: <input id="last-name" name="last-name" type="text" required /></label>
<label for="email">Enter Your Email: <input id="email" name="email" type="email" required /></label>
<label for="new-password">Create a New Password: <input id="new-password" name="new-password" type="password" pattern="[a-z0-5]{8,}" required /></label>
</fieldset>
<fieldset>
<legend>Account type (required)</legend>
<label for="personal-account"><input id="personal-account" type="radio" name="account-type" class="inline" checked /> Personal</label>
<label for="business-account"><input id="business-account" type="radio" name="account-type" class="inline" /> Business</label>
</fieldset>
<fieldset>
<label for="profile-picture">Upload a profile picture: <input id="profile-picture" type="file" name="file" /></label>
<label for="age">Input your age (years): <input id="age" type="number" name="age" min="13" max="120" /></label>
<label for="referrer">How did you hear about us?
<select id="referrer" name="referrer">
<option value="">(select one)</option>
<option value="1">freeCodeCamp News</option>
<option value="2">freeCodeCamp YouTube Channel</option>
<option value="3">freeCodeCamp Forum</option>
<option value="4">Other</option>
</select>
</label>
<label for="bio">Provide a bio:
<textarea id="bio" name="bio" rows="3" cols="30" placeholder="I like coding on the beach..."></textarea>
</label>
</fieldset>
<label for="terms-and-conditions">
<input class="inline" id="terms-and-conditions" type="checkbox" required name="terms-and-conditions" /> I accept the <a href="https://www.freecodecamp.org/news/terms-of-service/">terms and conditions</a>
</label>
<input type="submit" value="Submit" />
</form>
</body>
</html>
styles.css
body {
width: 100%;
height: 100vh;
margin: 0;
background-color: #1b1b32;
color: #f5f6f7;
font-family: Tahoma;
font-size: 16px;
}
h1, p {
margin: 1em auto;
text-align: center;
}
form {
width: 60vw;
max-width: 500px;
min-width: 300px;
margin: 0 auto;
padding-bottom: 2em;
}
fieldset {
border: none;
padding: 2rem 0;
border-bottom: 3px solid #3b3b4f;
}
fieldset:last-of-type {
border-bottom: none;
}
label {
display: block;
margin: 0.5rem 0;
}
input,
textarea,
select {
margin: 10px 0 0 0;
width: 100%;
min-height: 2em;
}
input, textarea {
background-color: #0a0a23;
border: 1px solid #0a0a23;
color: #ffffff;
}
.inline {
width: unset;
margin: 0 0.5em 0 0;
vertical-align: middle;
}
input[type="submit"] {
display: block;
width: 60%;
margin: 1em auto;
height: 2em;
font-size: 1.1rem;
background-color: #3b3b4f;
border-color: white;
min-width: 300px;
}
input[type="file"] {
padding: 1px 2px;
}
a {
color: #dfdfe2;
}
이번 과정은 앞에 과정들 복습하면서 좀더 심화된 내용 같았다. 스타일 부분에서는 하라는 대로 따라 했기 때문에 잘 와닿진 않았지만 html 부분에서 배운 건 많다!