Build a Registration Form with HTML and CSS

Creating user-friendly and visually appealing forms is an essential skill for any web developer. I recently worked on a registration form using HTML and CSS and wanted to share my process to help you build your own forms. Here’s a complete breakdown of how I built this form and how you can do the same.

Project Overview

The goal was to create a registration form with the following features:

  • Input fields for first name, last name, email, and password.
  • A radio button to select the account type (personal or business).
  • A file upload option for profile pictures.
  • A clean, professional design.

Writing the HTML Structure

HTML serves as the skeleton of the form. Here’s the basic structure I used:

code<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Registration Form</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div class="form-container">
<h1>Registration Form</h1>
<p>Please fill out this form with the required information</p>
<form action="#" method="post">
<!-- First Name -->
<label for="first-name">Enter Your First Name:</label>
<input type="text" id="first-name" name="first-name" required>

<!-- Last Name -->
<label for="last-name">Enter Your Last Name:</label>
<input type="text" id="last-name" name="last-name" required>

<!-- Email -->
<label for="email">Enter Your Email:</label>
<input type="email" id="email" name="email" required>

<!-- Password -->
<label for="password">Create a New Password:</label>
<input type="password" id="password" name="password" required>

<!-- Account Type -->
<p>Account type (required):</p>
<label>
<input type="radio" name="account-type" value="personal" required> Personal
</label>
<label>
<input type="radio" name="account-type" value="business" required> Business
</label>

<!-- File Upload -->
<label for="profile-pic">Upload a profile picture:</label>
<input type="file" id="profile-pic" name="profile-pic" accept="image/*">

<!-- Submit Button -->
<button type="submit">Register</button>
</form>
</div>
</body>
</html>

Styling the Form with CSS

For styling, I used CSS to create a clean and professional look with rounded corners, padding, and a color scheme that’s easy on the eyes.

code/* General Styles */
body {
font-family: Arial, sans-serif;
background-color: #1e1e30;
color: #f4f4f4;
margin: 0;
padding: 0;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
}

/* Form Container */
.form-container {
background-color: #2c2c44;
padding: 20px;
border-radius: 10px;
width: 90%;
max-width: 400px;
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2);
text-align: center;
}

/* Form Title */
.form-container h1 {
color: #ffcc00;
margin-bottom: 10px;
}

/* Labels and Inputs */
label {
display: block;
margin-bottom: 5px;
text-align: left;
}

input, button {
width: 100%;
padding: 10px;
margin-bottom: 15px;
border: none;
border-radius: 5px;
font-size: 16px;
}

/* Button */
button {
background-color: #ffcc00;
color: #1e1e30;
font-weight: bold;
cursor: pointer;
}

button:hover {
background-color: #d4a700;
}

/* Radio Buttons */
label input[type="radio"] {
width: auto;
margin-right: 10px;
}

/* File Input */
input[type="file"] {
background-color: #1e1e30;
color: #ccc;
border: 1px solid #ccc;
cursor: pointer;
}

Adding Required Validation

HTML5 validation attributes like required, type, and accept ensure the form is user-friendly. If a field isn’t filled, the user is prompted with a helpful error message (as shown in the screenshot).

Testing and Iteration

I tested the form by:

  1. Leaving fields empty to ensure validation works.
  2. Uploading files to check the file input functionality.
  3. Submitting the form to verify all required fields were properly marked.

Challenges and Learnings

  • Validation: HTML5 makes client-side validation easy, but custom messages or additional validation logic can be added with JavaScript.
  • Styling: Finding the right balance between form aesthetics and usability was key.
  • Responsiveness: The form is fully responsive and adjusts to different screen sizes.

Conclusion

This project helped me improve my HTML and CSS skills while understanding the importance of creating accessible, user-friendly forms. Whether you’re a beginner or an experienced developer, building forms is a great way to practice your web development skills.

Related blog posts