,

Responsive Website with Login & Registration Form in HTML CSS and JavaScript

Newcomer to web development? a valuable approach to honing basic skills involves constructing a website equipped with login and registration forms. This endeavor allows you to delve into designing a navigation menu bar, creating a homepage, and implementing login and registration functionalities.

Within this blog post, I’ll lead you through the journey of crafting a responsive website, complete with login and registration forms, employing HTML, CSS, and JavaScript. This hands-on project is designed to provide practical experience and instill fundamental web development concepts, including DOM manipulation, event handling, conditional statements, and more.

The website’s homepage in this project showcases a navigation bar and a login button. Upon clicking the button, a login form elegantly appears with a visually appealing blurred background effect. Positioned on the form’s left is an image, while the right side hosts input fields. Opting for signup? A simple click on the signup link seamlessly transitions you to the registration form.

The navigation bar and forms of the website exhibit full responsiveness, ensuring seamless adaptation to various screen sizes. When dealing with smaller screens, activating the hamburger button prompts the navigation bar to elegantly appear from the right side. Additionally, in the forms, the left image section discreetly remains concealed for a more streamlined display on compact screens.

Guide to Building a Website with Login & Registration Form For the creation of a responsive website featuring login and registration forms using HTML, CSS, and vanilla JavaScript, adhere to the uncomplicated step-by-step directions below:

  1. Begin by establishing a folder with any preferred name, within which you’ll organize the requisite files.
  2. Generate a file named index.html, serving as the principal file for your project.
  3. Craft a file named style.css to house the CSS code responsible for styling your website.
  4. Develop a file named script.js to encompass the JavaScript code for your project.
  5. Conclude by downloading the Images folder and situating it within your project directory. This folder encompasses all necessary images for the undertaking.

To initiate the process, incorporate the provided HTML codes into your index.html file. These codes encompass pivotal HTML elements, including header, nav, ul, form, among others, crucial for the project’s structure and functionality.

<!DOCTYPE html>

<!-- Coding By CodeMagnet - codemagnet.in -->
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Website with Login and Registration Form</title>
<!-- Google Fonts Link For Icons -->
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:opsz,wght,FILL,GRAD@48,400,0,0">
<link rel="stylesheet" href="styl.css">
<script src="scrip.js" defer></script>
</head>
<body>
<header>
<nav class="navbar">
<span class="hamburger-btn material-symbols-rounded">menu</span>
<a href="#" class="logo">
<img src="C:\Users\Swarna Khushbu\Desktop\Coding\image.jpg" alt="logo">
<h2>CodeMagnet</h2>
</a>
<ul class="links">
<span class="close-btn material-symbols-rounded">close</span>
<li><a href="#">Home</a></li>
<li><a href="#">Career</a></li>
<li><a href="#">Courses</a></li>
<li><a href="#">About us</a></li>
<li><a href="#">Contact us</a></li>
</ul>
<button class="login-btn">LOG IN</button>
</nav>
</header>

<div class="blur-bg-overlay"></div>
<div class="form-popup">
<span class="close-btn material-symbols-rounded">close</span>
<div class="form-box login">
<div class="form-details">
<h2>Welcome Back</h2>
<p>Please log in using your personal information to stay connected with us.</p>
</div>
<div class="form-content">
<h2>LOGIN</h2>
<form action="#">
<div class="input-field">
<input type="text" required>
<label>Email</label>
</div>
<div class="input-field">
<input type="password" required>
<label>Password</label>
</div>
<a href="#" class="forgot-pass-link">Forgot password?</a>
<button type="submit">Log In</button>
</form>
<div class="bottom-link">
Don't have an account?
<a href="#" id="signup-link">Signup</a>
</div>
</div>
</div>
<div class="form-box signup">
<div class="form-details">
<h2>Create Account</h2>
<p>To become a part of CodeMagnet, please sign up</p>
</div>
<div class="form-content">
<h2>SIGNUP</h2>
<form action="#">
<div class="input-field">
<input type="text" required>
<label>Enter your email</label>
</div>
<div class="input-field">
<input type="password" required>
<label>Create password</label>
</div>
<div class="policy-text">
<input type="checkbox" id="policy">
<label for="policy">
I agree the
<a href="#" class="option">Terms & Conditions</a>
</label>
</div>
<button type="submit">Sign Up</button>
</form>
<div class="bottom-link">
Already have an account?
<a href="#" id="login-link">Login</a>
</div>
</div>
</div>
</div>
</body>
</html>

CSS:

/* Importing Google font - Open Sans */

@import url("https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;500;600;700&display=swap");

* {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: "Open Sans", sans-serif;
}

body {
height: 100vh;
width: 100%;
background: url("https://imagetolink.com/ib/Ix4S1ydFnZ.png") center/cover no-repeat;
}

header {
position: fixed;
width: 100%;
top: 0;
left: 0;
z-index: 10;
padding: 0 10px;
}

.navbar {
display: flex;
padding: 22px 0;
align-items: center;
max-width: 1200px;
margin: 0 auto;
justify-content: space-between;
}

.navbar .hamburger-btn {
display: none;
color: #fff;
cursor: pointer;
font-size: 1.5rem;
}

.navbar .logo {
gap: 10px;
display: flex;
align-items: center;
text-decoration: none;
}

.navbar .logo img {
width: 40px;
border-radius: 50%;
}

.navbar .logo h2 {
color: #fff;
font-weight: 600;
font-size: 1.7rem;
}

.navbar .links {
display: flex;
gap: 35px;
list-style: none;
align-items: center;
}

.navbar .close-btn {
position: absolute;
right: 20px;
top: 20px;
display: none;
color: #000;
cursor: pointer;
}

.navbar .links a {
color: #fff;
font-size: 1.1rem;
font-weight: 500;
text-decoration: none;
transition: 0.1s ease;
}

.navbar .links a:hover {
color: #19e8ff;
}

.navbar .login-btn {
border: none;
outline: none;
background: #fff;
color: #275360;
font-size: 1rem;
font-weight: 600;
padding: 10px 18px;
border-radius: 3px;
cursor: pointer;
transition: 0.15s ease;
}

.navbar .login-btn:hover {
background: #ddd;
}

.form-popup {
position: fixed;
top: 50%;
left: 50%;
z-index: 10;
width: 100%;
opacity: 0;
pointer-events: none;
max-width: 720px;
background: #fff;
border: 2px solid #fff;
transform: translate(-50%, -70%);
}

.show-popup .form-popup {
opacity: 1;
pointer-events: auto;
transform: translate(-50%, -50%);
transition: transform 0.3s ease, opacity 0.1s;
}

.form-popup .close-btn {
position: absolute;
top: 12px;
right: 12px;
color: #878484;
cursor: pointer;
}

.blur-bg-overlay {
position: fixed;
top: 0;
left: 0;
z-index: 10;
height: 100%;
width: 100%;
opacity: 0;
pointer-events: none;
backdrop-filter: blur(5px);
-webkit-backdrop-filter: blur(5px);
transition: 0.1s ease;
}

.show-popup .blur-bg-overlay {
opacity: 1;
pointer-events: auto;
}

.form-popup .form-box {
display: flex;
}

.form-box .form-details {
width: 100%;
color: #fff;
max-width: 330px;
text-align: center;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}

.login .form-details {
padding: 0 40px;
background: url("https://imagetolink.com/ib/7zNAzGxryy.jpg");
background-position: center;
background-size: cover;
}

.signup .form-details {
padding: 0 20px;
background: url("https://imagetolink.com/ib/oFYXJSb6zr.jpg");
background-position: center;
background-size: cover;
}

.form-box .form-content {
width: 100%;
padding: 35px;
}

.form-box h2 {
text-align: center;
margin-bottom: 29px;
}

form .input-field {
position: relative;
height: 50px;
width: 100%;
margin-top: 20px;
}

.input-field input {
height: 100%;
width: 100%;
background: none;
outline: none;
font-size: 0.95rem;
padding: 0 15px;
border: 1px solid #717171;
border-radius: 3px;
}

.input-field input:focus {
border: 1px solid #00bcd4;
}

.input-field label {
position: absolute;
top: 50%;
left: 15px;
transform: translateY(-50%);
color: #4a4646;
pointer-events: none;
transition: 0.2s ease;
}

.input-field input:is(:focus, :valid) {
padding: 16px 15px 0;
}

.input-field input:is(:focus, :valid)~label {
transform: translateY(-120%);
color: #00bcd4;
font-size: 0.75rem;
}

.form-box a {
color: #00bcd4;
text-decoration: none;
}

.form-box a:hover {
text-decoration: underline;
}

form :where(.forgot-pass-link, .policy-text) {
display: inline-flex;
margin-top: 13px;
font-size: 0.95rem;
}

form button {
width: 100%;
color: #fff;
border: none;
outline: none;
padding: 14px 0;
font-size: 1rem;
font-weight: 500;
border-radius: 3px;
cursor: pointer;
margin: 25px 0;
background: #00bcd4;
transition: 0.2s ease;
}

form button:hover {
background: #0097a7;
}

.form-content .bottom-link {
text-align: center;
}

.form-popup .signup,
.form-popup.show-signup .login {
display: none;
}

.form-popup.show-signup .signup {
display: flex;
}

.signup .policy-text {
display: flex;
margin-top: 14px;
align-items: center;
}

.signup .policy-text input {
width: 14px;
height: 14px;
margin-right: 7px;
}

@media (max-width: 950px) {
.navbar :is(.hamburger-btn, .close-btn) {
display: block;
}

.navbar {
padding: 15px 0;
}

.navbar .logo img {
display: none;
}

.navbar .logo h2 {
font-size: 1.4rem;
}

.navbar .links {
position: fixed;
top: 0;
z-index: 10;
left: -100%;
display: block;
height: 100vh;
width: 100%;
padding-top: 60px;
text-align: center;
background: #fff;
transition: 0.2s ease;
}

.navbar .links.show-menu {
left: 0;
}

.navbar .links a {
display: inline-flex;
margin: 20px 0;
font-size: 1.2rem;
color: #000;
}

.navbar .links a:hover {
color: #00BCD4;
}

.navbar .login-btn {
font-size: 0.9rem;
padding: 7px 10px;
}
}

@media (max-width: 760px) {
.form-popup {
width: 95%;
}

.form-box .form-details {
display: none;
}

.form-box .form-content {
padding: 30px 20px;
}
}

Once you’ve implemented the styles, open the webpage in your browser to preview your website. At this point, the forms remain concealed and will only become visible through the use of JavaScript. Initially, you’ll encounter the website displaying solely the navigation bar and hero image.

To complete the process, integrate the provided JavaScript code into your script.js file. This code encompasses click event listeners capable of toggling classes on different HTML elements. While the code is straightforward and comprehensible, it’s advisable to refer to the video tutorial above, carefully consider the code comments, and engage in experimentation for a more thorough comprehension.

Javascript:

const navbarMenu = document.querySelector(".navbar .links");

const hamburgerBtn = document.querySelector(".hamburger-btn");
const hideMenuBtn = navbarMenu.querySelector(".close-btn");
const showPopupBtn = document.querySelector(".login-btn");
const formPopup = document.querySelector(".form-popup");
const hidePopupBtn = formPopup.querySelector(".close-btn");
const signupLoginLink = formPopup.querySelectorAll(".bottom-link a");

// Show mobile menu
hamburgerBtn.addEventListener("click", () => {
navbarMenu.classList.toggle("show-menu");
});

// Hide mobile menu
hideMenuBtn.addEventListener("click", () => hamburgerBtn.click());

// Show login popup
showPopupBtn.addEventListener("click", () => {
document.body.classList.toggle("show-popup");
});

// Hide login popup
hidePopupBtn.addEventListener("click", () => showPopupBtn.click());

// Show or hide signup form
signupLoginLink.forEach(link => {
link.addEventListener("click", (e) => {
e.preventDefault();
formPopup.classList[link.id === 'signup-link' ? 'add' : 'remove']("show-signup");
});
});

In summary, crafting a website homepage with incorporated forms provides a practical opportunity to familiarize yourself with diverse website elements and essential web development concepts. I am confident that, by adhering to the steps elucidated in this blog post, you’ve effectively built your personalized website featuring login and registration forms using HTML, CSS, and JavaScript.

To enhance your proficiency in web development, I suggest undertaking the recreation of other websites and login form projects accessible on this platform. This endeavor will offer valuable insights into the utilization of HTML, CSS, and JavaScript in crafting distinctive website components.

Author

Sona Avatar

Written by

Leave a Reply

Trending

CodeMagnet

Your Magnetic Resource, For Coding Brilliance

Programming Languages

Web Development

Data Science and Visualization

Career Section

<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-4205364944170772"
     crossorigin="anonymous"></script>