<div class="fancy-1">1. Hover me</div>
<div class="fancy-2">2. Hover me</div>
<div class="fancy-3">3. Hover me</div>
<div class="fancy-4">4. Hover me</div>
<div class="fancy-5">5. Hover me</div>
<div class="fancy-6">6. Hover me</div>
<div class="fancy-7">7. Hover me</div>
<div class="fancy-8">8. Hover me</div>
.fancy-1 {
  padding: 10px;
  z-index: 0;
  transition: .4s;
}
.fancy-1:hover {
  color: #fff;
}
.fancy-1:before {
  content: "";
  position: absolute;
  z-index: -1;
  inset: 0;
  background: #000;
  transform: rotate(450deg) scale(0);
  transition: .4s;
}
.fancy-1:hover:before {
  transform: rotate(0deg) scale(1);
}


.fancy-2 {
  padding: 10px;
  z-index: 0;
  transition: .4s;
}
.fancy-2:hover {
  color: #fff;
}
.fancy-2:before {
  content: "";
  position: absolute;
  z-index: -1;
  inset: 0;
  background: #000;
  opacity: 0;
  transform: translate(-50%,-100%) rotate(-90deg);
  transition: .4s,transform 0s .4s;
}
.fancy-2:hover:before {
  transform: translate(0,0) rotate(0deg);
  opacity: 1;
  transition: .4s;
}


.fancy-3 {
  padding: 10px;
  z-index: 0;
  transition: .4s;
}
.fancy-3:hover {
  color: #fff;
}
.fancy-3:before,
.fancy-3:after {
  content: "";
  position: absolute;
  z-index: -1;
  inset: 0 50% 0 0;
  background: #000;
  transform: rotate(450deg) scale(0);
  transition: .4s;
}
.fancy-3:after {
  inset: 0 0 0 50%;
  transform: rotate(-450deg) scale(0);
}
.fancy-3:hover:before,
.fancy-3:hover:after {
  transform: rotate(0deg) scale(1);
}


.fancy-4 {
  padding: 10px;
  z-index: 0;
  transition: .4s;
}
.fancy-4:hover {
  color: #fff;
}
.fancy-4:before,
.fancy-4:after {
  content: "";
  position: absolute;
  z-index: -1;
  inset: 0 50% 0 0;
  background: #000;
  opacity: 0;
  transform: translate(-100%,-100%) rotate(-90deg);
  transition: .4s,transform 0s .4s;
}
.fancy-4:after {
  inset: 0 0 0 50%;
  transform: translate(100%,-100%) rotate(90deg);
}
.fancy-4:hover:before,
.fancy-4:hover:after {
  transform: translate(0,0) rotate(0deg);
  opacity: 1;
  transition: .4s;
}


.fancy-5 {
  padding: 10px;
  z-index: 0;
  transition: .4s;
}
.fancy-5:hover {
  color: #fff;
}
.fancy-5:before,
.fancy-5:after {
  content: "";
  position: absolute;
  z-index: -1;
  inset: 0;
  background: #000;
  opacity: 0;
  clip-path: polygon(0 0,100% 0,0 100%);
  transform: translate(-10%,-50%) rotate(-90deg);
  transform-origin: left;
  transition: .4s,transform 0s .4s;
}
.fancy-5:after {
  clip-path: polygon(100% 100%,100% 0,0 100%);
  transform: translate(10%,50%) rotate(-90deg);
  transform-origin: right;
}
.fancy-5:hover:before,
.fancy-5:hover:after {
  transform: translate(0,0) rotate(0deg);
  opacity: 1;
  transition: .4s;
}


.fancy-6 {
  padding: 10px;
  z-index: 0;
  transition: .4s;
}
.fancy-6:hover {
  color: #fff;
}
.fancy-6:before,
.fancy-6:after {
  content: "";
  position: absolute;
  z-index: -1;
  inset: 0 50% 0 0;
  background: #000;
  opacity: 0;
  transform: translateY(-300%);
  transition: .4s,transform 0s .4s;
}
.fancy-6:after {
  inset: 0 0 0 50%;
  transform: translateY(300%);
}
.fancy-6:hover:before,
.fancy-6:hover:after {
  transform: translateY(0);
  opacity: 1;
  transition: .4s,transform .4s cubic-bezier(0,.5,.5,1.5);
}


.fancy-7 {
  padding: 10px;
  z-index: 0;
  transition: .4s;
}
.fancy-7:hover {
  color: #fff;
}
.fancy-7:before,
.fancy-7:after {
  content: "";
  position: absolute;
  z-index: -1;
  inset: 0;
  background: #000;
  opacity: 0;
  transform: rotate(-25deg);
  transform-origin: left;
  clip-path: inset(0 0 50% 0);
  transition: .4s,transform 0s .4s;
}
.fancy-7:after {
  clip-path: inset(50% 0 0 0);
  transform: rotate(25deg);
}
.fancy-7:hover:before,
.fancy-7:hover:after {
  transform:rotate(0deg);
  opacity: 1;
  transition: .4s;
}


.fancy-8 {
  padding: 10px;
  z-index: 0;
  transition: .4s;
}
.fancy-8:hover {
  color: #fff;
}
.fancy-8:before,
.fancy-8:after {
  content: "";
  position: absolute;
  z-index: -1;
  inset: 0 0 50% 0;
  background: 
    linear-gradient(90deg,#000 10%,#0000 0 20%,#000 0 80%,#0000 0 90%,#000 0) bottom/100% 60%,
    linear-gradient(#000 0 0) top/100% 40%;
  background-repeat: no-repeat;
  opacity: 0;
  transform: translateY(-150%);
  transition: .4s,transform 0s .4s;
}
.fancy-8:after {
  inset: 19% 0 0 0;
  background: 
    linear-gradient(90deg,#0000 10%,#000 0 20%,#0000 0 80%,#000 0 90%,#0000 0) top/100% 37.5%,
    linear-gradient(#000 0 0) bottom/100% 62.5%;
  background-repeat: no-repeat;
  transform: translateY(60%);
}
.fancy-8:hover:before,
.fancy-8:hover:after {
  transform:translateY(0);
  opacity: 1;
  transition: .4s;
}

/**/
[class] {
  display:inline-block;
  font-size:40px;
  font-family:sans-serif;
  margin:25px;
  cursor:pointer;
  position: relative;
}
[class]:before,
[class]:after {
  pointer-events: none;
}

body {
  text-align:center;
  overflow:hidden;
}

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.