Navigation list item hover and focus effect

CSS, Visual · Oct 11, 2021

Creates a custom hover and focus effect for navigation items, using CSS transformations.

  • Use the ::before pseudo-element at the list item anchor to create a hover effect. Hide it using transform: scale(0).
  • Use the :hover and :focus pseudo-class selectors to transition the pseudo-element to transform: scale(1) and show its colored background.
  • Prevent the pseudo-element from covering the anchor element by using z-index.
<nav class="hover-nav">
    <li><a href="#">Home</a></li>
    <li><a href="#">About</a></li>
    <li><a href="#">Contact</a></li>
.hover-nav ul {
  list-style: none;
  margin: 0;
  padding: 0;
  overflow: hidden;

.hover-nav li {
  float: left;

.hover-nav li a {
  position: relative;
  display: block;
  color: #fff;
  text-align: center;
  padding: 8px 12px;
  text-decoration: none;
  z-index: 0;

li a::before {
  position: absolute;
  content: "";
  width: 100%;
  height: 100%;
  bottom: 0;
  left: 0;
  background-color: #2683f6;
  z-index: -1;
  transform: scale(0);
  transition: transform 0.5s ease-in-out;

li a:hover::before,
li a:focus::before {
  transform: scale(1);

More like this

  • CSS Hover Effects

    A collection of cool CSS hover effects to spice up your next web project.

    Collection · 10 snippets

  • Counter

    Creates a custom list counter that accounts for nested list elements.

    CSS, Visual · Dec 30, 2020

  • Custom checkbox

    Creates a styled checkbox with animation on state change.

    CSS, Visual · Oct 11, 2021

  • Custom radio button

    Creates a styled radio button with animation on state change.

    CSS, Visual · Nov 16, 2022