Send Mail with Style: How to Create an Animated Button Using HTML and CSS

A well-designed website can capture attention and leave a lasting impression. But have you ever thought about adding a little flair to your email forms? An animated send button can be a surprising way to boost engagement and make your emails more interactive.

In this post, we’ll walk you through the steps of creating an eye-catching animated send button using just HTML and CSS.

Step1: Send Mail Button

This code snippet creates a styled “Send Mail” button composed of multiple elements, including a backdrop, text label, and an SVG icon depicting an envelope. The button is designed to provide visual feedback and enhance user interaction with a distinct graphical representation.

<button>
<span class="backdrop">
<span class="action"></span>
</span>
<span class="text">
Send Mail
</span>
<span class="icon">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
<!-- Tray -->
<path stroke-linecap="round" stroke-linejoin="round" d="M2.25 13.5h3.86a2.25 2.25 0 012.012 1.244l.256.512a2.25 2.25 0 002.013 1.244h3.218a2.25 2.25 0 002.013-1.244l.256-.512a2.25 2.25 0 012.013-1.244h3.859m-19.5.338V18a2.25 2.25 0 002.25 2.25h15A2.25 2.25 0 0021.75 18v-4.162c0-.224-.034-.447-.1-.661L19.24 5.338a2.25 2.25 0 00-2.15-1.588H6.911a2.25 2.25 0 00-2.15 1.588L2.35 13.177a2.25 2.25 0 00-.1.661z" />
<!-- Envelope -->
<path stroke-linecap="round" stroke-linejoin="round" d="M21.75 6.75v10.5a2.25 2.25 0 01-2.25 2.25h-15a2.25 2.25 0 01-2.25-2.25V6.75m19.5 0A2.25 2.25 0 0019.5 4.5h-15a2.25 2.25 0 00-2.25 2.25m19.5 0v.243a2.25 2.25 0 01-1.07 1.916l-7.5 4.615a2.25 2.25 0 01-2.36 0L3.32 8.91a2.25 2.25 0 01-1.07-1.916V6.75" />
</svg>
</span>
</button>

Step2: Button Design with CS

This CSS code meticulously styles a button with sophisticated visual effects, incorporating an animated SVG icon, dynamic hover and focus states, and a custom font. It leverages gradients, shadows, and transitions to create a visually appealing and interactive user interface component.

@font-face {
font-family: "Geist Sans";
src: url("https://assets.codepen.io/605876/GeistVF.ttf") format("truetype");
}
* {
box-sizing: border-box;
}
:root {
--speed: 0.25s;
}
body {
display: grid;
place-items: center;
min-height: 100vh;
background: hsl(0 0% 4%);
font-family: "Geist Sans", sans-serif;
background: linear-gradient(to right, #312b2b, #eec19a) !important
}
button {
cursor: pointer;
position: relative;
display: flex;
border: 1px solid hsl(0 0% 100% / 0.25);
border-radius: 100px;
overflow: hidden;
display: grid;
grid-template-columns: auto 3.5em;
gap: 1.5em;
font-family: "Geist Sans", sans-serif;
font-weight: 80;
background:
hsl(280 0% 12%);
color: hsl(0 0% 90%);
padding: 0.5em 0.5em 0.5em 1.5em;
place-items: center;
box-shadow:
0 1px inset hsl(0 0% 100% / 0.5),
0 -10px 20px 10px hsl(0 0% 0% / 0.5) inset,
0 10px 20px 10px hsl(0 0% 50% / 0.25) inset,
0 1px hsl(0 0% 2% / 0.75);
letter-spacing: 0.05ch;
}
button:focus-visible {
outline-offset: 0.5em;
outline-color: hsl(280 80% 80% / 0.5);
}
.icon {
width: 100%;
aspect-ratio: 1;
border-radius: 100%;
}
.backdrop {
position: absolute;
inset: 0.5em;
}
.icon {
overflow: hidden;
}
.icon svg {
width: 50%;
overflow: visible !important;
}
svg path:nth-of-type(2) {
transform-box: fill-box;
transform-origin: 50% 50%;
transition:
fill var(--speed),
rotate var(--speed),
scale var(--speed),
translate var(--speed);
}
svg path:nth-of-type(1) {
translate: 5rem 0;
transform-box: fill-box;
transition: translate var(--speed);
opacity: 0.75;
}
button:is(:hover, :focus-visible) svg path:nth-of-type(2) {
translate: 0 -50%;
rotate: 290deg;
scale: 0.65;
fill: hsl(0 0% 20%);
transition-timing-function: ease, ease, cubic-bezier(.2, .7, .9, 1.5);
}
button:is(:hover, :focus-visible) svg path:nth-of-type(1) {
translate: 0 0;
}
.action {
position: absolute;
right: 0;
height: 100%;
background:
linear-gradient(transparent 50%, hsl(0 0% 30% / 0.5)),
hsl(0 0% 0%);
box-shadow: 0 -1px inset hsl(0 0% 100% / 0.35);
width: 3.5em;
aspect-ratio: 1;
transition: width var(--speed);
border-radius: 100px;
}
.icon {
color: hsl(0 0% 90%);
display: grid;
place-items: center;
z-index: 2;
}
.text {
display: inline-block;
z-index: 2;
padding: 0 2rem;
}
button:is(:hover, :focus-visible) .action {
width: 100%;
}

Send Mail with Style: How to Create an Animated Button Using HTML and CSS Demo

And there you have it! With just a few lines of HTML and CSS, you’ve created an animated “Send Mail” button that responds to hover and click events, enhancing the interactive experience of your webpage.

You Might Be Interested In:

Ashfaq Ahmed is a freelance WordPress developer and owner of codeconvey.com. I developed modern and highly interactive websites. I always focus on improving my development and design skills.

Leave a Comment