Home30 days 30 javascript projectsCustom Greetings With HTML, CSS, and JavaScript

Custom Greetings With HTML, CSS, and JavaScript

Creating a personalized user experience on the web doesn’t always require complex tools—sometimes a simple combination of HTML, CSS, and JavaScript can go a long way. In this tutorial, we’ve built a small yet dynamic greeting card that displays a time-based greeting with the user’s name. Let’s walk through how each part of the code works.

HTML: Structuring the Greeting Card:

The HTML structure defines the basic layout of our greeting card. We’ve created a div with a class of card, which contains two elements inside it: one for the greeting and another for a friendly subtext. The greeting element dynamically displays a message like “Good Morning, John!”, while the subtext remains constant with a positive note—“Hope you have a wonderful day!”. This structure ensures that the card is easy to style and interact with.

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Personalized Greeting</title>
    <style></style>
    <link rel="stylesheet" href="style.css" />
  </head>
  <body>
    <div class="card">
      <div id="greeting">Loading greeting...</div>
      <div class="subtext">Hope you have a wonderful day!</div>
    </div>
    <script src="script.js"></script>
  </body>
</html>

CSS:

he CSS gives the card its modern and visually appealing look. We start with a universal reset to ensure consistency across browsers. The body is styled with a vibrant linear gradient background and uses Flexbox to center the card both vertically and horizontally. The .card class has a white background, rounded corners, padding, and a subtle shadow to make it stand out. On hover, it slightly scales up for an interactive feel. The text inside is styled for readability, using the Poppins font for a clean, friendly appearance.

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

body {
  height: 100vh;
  display: flex;
  justify-content: center;
  align-items: center;
  background: linear-gradient(45deg, #f12711, #f5af19);
  font-family: "Poppins", sans-serif;
}

.card {
  background: white;
  padding: 40px 60px;
  border-radius: 15px;
  box-shadow: 0 15px 25px rgba(0, 0, 0, 0.2);
  text-align: center;
  max-width: 500px;
  width: 90%;
  transition: transform 0.3s ease;
}

.card:hover {
  transform: scale(1.02);
}

#greeting {
  font-size: 2.2em;
  margin-bottom: 10px;
  font-weight: 600;
}

.subtext {
  font-size: 1em;
  color: #333333;
}

Javascript:

The JavaScript is where the magic happens. It prompts the user for their name and stores it in a variable. If the user leaves the input blank or cancels it, a fallback name “Guest” is used. Then, based on the current hour of the day, the script generates a suitable greeting—“Good Morning”, “Good Afternoon”, “Good Evening”, or “Good Night”. This greeting is combined with the user’s name and displayed in the designated greeting element inside the card. This adds a personal touch to the card and makes the page feel more interactive and thoughtful.

let name = prompt("What's your name?");

if (!name || name.trim() === "") {
  name = "Guest";
}

const greetingEl = document.getElementById("greeting");
const currentHour = new Date().getHours();

let greetingMessage = "";

if (currentHour < 12) {
  greetingMessage = `Good Morning, ${name}!`;
} else if (currentHour < 17) {
  greetingMessage = `Good Afternoon, ${name}!`;
} else if (currentHour < 21) {
  greetingMessage = `Good Evening, ${name}!`;
} else {
  greetingMessage = `Good Night, ${name}!`;
}

greetingEl.textContent = greetingMessage;

With just a few lines of code, we’ve created a personalized greeting card that feels welcoming and responsive. This project is a great example of how HTML provides the structure, CSS delivers the style, and JavaScript brings it all to life. It’s simple, elegant, and a perfect beginner-friendly project to practice front-end skills.

RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

16 + two =

Most Popular