HTML Button Hover Effects with Box-shadow

HTML Button Hover Effects with Box-shadow
Code Snippet:Button hover effects with box-shadow
Author: Giana
Published: January 18, 2024
Last Updated: January 22, 2024
Downloads: 170
License: MIT
Edit Code online: View on CodePen
Read More

This HTML and CSS code snippet helps you to create button element with hover effects using box-shadow property. When you hover over or focus on a button, experience effects like filling in, pulsating, closing, raising, filling up, sliding, and offsetting. The magic lies in the CSS box-shadow property, bringing your buttons to life with smooth transitions. Each button has a unique color scheme, adding a vibrant touch to your webpage.

How to Create HTML Button Hover Effects With Box-shadow

1. First of all, load the Normalize CSS and Google Fonts by adding the following CDN link into the head tag of your HTML document.

<link href="" rel="stylesheet">
<link rel="stylesheet" href="">

2. Create a container with buttons, each having a specific class for different effects. Customize each button by selecting a class from the provided options: fill, pulse, close, raise, up, slide, or offset.

<div class="buttons">
  <h1>Simple hover effects with <code>box-shadow</code></h1>
  <button class="fill">Fill In</button>
  <button class="pulse">Pulse</button>
  <button class="close">Close</button>
  <button class="raise">Raise</button>
  <button class="up">Fill Up</button>
  <button class="slide">Slide</button>
  <button class="offset">Offset</button>

3. Style the buttons using the following CSS code. It is responsible for creating captivating hover effects using the box-shadow property. Adjust the colors and transitions by modifying the CSS variables under each button’s class.

  box-shadow: [inset?] [top] [left] [blur] [size] [color];

    - We're setting all the blurs to 0 since we want a solid fill.
    - Add the inset keyword so the box-shadow is on the inside of the element
    - Animating the inset shadow on hover looks like the element is filling in from whatever side you specify ([top] and [left] accept negative values to become [bottom] and [right])
    - Multiple shadows can be stacked
    - If you're animating multiple shadows, be sure to keep the same number of shadows on hover/focus as non-hover/focus (even if you have to create a transparent shadow) so the animation is smooth. Otherwise, you'll get something choppy.
     background: #17181c !important;
    min-height: 640px;

.fill:focus {
  box-shadow: inset 0 0 0 2em var(--hover);

.pulse:focus {
  -webkit-animation: pulse 1s;
          animation: pulse 1s;
  box-shadow: 0 0 0 2em transparent;

@-webkit-keyframes pulse {
  0% {
    box-shadow: 0 0 0 0 var(--hover);

@keyframes pulse {
  0% {
    box-shadow: 0 0 0 0 var(--hover);
.close:focus {
  box-shadow: inset -3.5em 0 0 0 var(--hover), inset 3.5em 0 0 0 var(--hover);

.raise:focus {
  box-shadow: 0 0.5em 0.5em -0.4em var(--hover);
  transform: translateY(-0.25em);

.up:focus {
  box-shadow: inset 0 -3.25em 0 0 var(--hover);

.slide:focus {
  box-shadow: inset 6.5em 0 0 0 var(--hover);

.offset {
  box-shadow: 0.3em 0.3em 0 0 var(--color), inset 0.3em 0.3em 0 0 var(--color);
.offset:hover, .offset:focus {
  box-shadow: 0 0 0 0 var(--hover), inset 6em 3.5em 0 0 var(--hover);

.fill {
  --color: #a972cb;
  --hover: #cb72aa;

.pulse {
  --color: #ef6eae;
  --hover: #ef8f6e;

.close {
  --color: #ff7f82;
  --hover: #ffdc7f;

.raise {
  --color: #ffa260;
  --hover: #e5ff60;

.up {
  --color: #e4cb58;
  --hover: #94e458;

.slide {
  --color: #8fc866;
  --hover: #66c887;

.offset {
  --color: #19bc8b;
  --hover: #1973bc;

button {
  color: var(--color);
  transition: 0.25s;
button:hover, button:focus {
  border-color: var(--hover);
  color: #fff;

body {
  color: #fff;
  background: #17181c;
  font: 300 1em "Fira Sans", sans-serif;
  justify-content: center;
  align-content: center;
  align-items: center;
  text-align: center;
  min-height: 100vh;
  display: flex;

button {
  background: none;
  border: 2px solid;
  font: inherit;
  line-height: 1;
  margin: 0.5em;
  padding: 1em 2em;

h1 {
  font-weight: 400;

code {
  color: #e4cb58;
  font: inherit;

Engage users with interactive and visually appealing buttons, creating a modern and dynamic user interface.

That’s all! hopefully, you have successfully created the HTML buttons with hover effects with box-shadow property. If you have any questions or suggestions, feel free to comment below.

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.

About CodeHim

Free Web Design Code & Scripts - CodeHim is one of the BEST developer websites that provide web designers and developers with a simple way to preview and download a variety of free code & scripts. All codes published on CodeHim are open source, distributed under OSD-compliant license which grants all the rights to use, study, change and share the software in modified and unmodified form. Before publishing, we test and review each code snippet to avoid errors, but we cannot warrant the full correctness of all content. All trademarks, trade names, logos, and icons are the property of their respective owners... find out more...