<div class="background-one">
<div class="link-container">
<a class="link-one" href="https://jhancock532.github.io/link-hover-effects/">Three</a>
</div>
</div>
<div class="background-two link-container">
<a class="link-two" href="https://jhancock532.github.io/link-hover-effects/">Fancy</a>
</div>
<div class="background-three link-container">
<a class="link-three" href="https://jhancock532.github.io/link-hover-effects/">Links</a>
</div>
body {
margin: 0;
height: 100vh;
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-template-rows: 1fr;
}
.background-one {
background-color: #151515;
}
.background-two {
background-color: #151515;
}
.background-three {
background-color: #151515;
}
.link-container {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
height: 100%;
position: relative;
z-index: 0;
}
a {
font-family: "Bungee", cursive;
font-size: 2.5em;
}
.link-one {
color: #53d9d1;
transition: color 1s cubic-bezier(0.32, 0, 0.67, 0);
line-height: 1em;
}
.link-one:hover {
color: #111;
transition: color 1s cubic-bezier(0.33, 1, 0.68, 1);
/* Thanks Chris Coyier, you got my back always. https://css-tricks.com/different-transitions-for-hover-on-hover-off/ */
}
.link-one::before {
content: "";
position: absolute;
z-index: -1;
width: 100%;
height: 100%;
top: 0;
right: 0;
background-color: #53d9d1;
clip-path: circle(0% at 50% calc(50%));
transition: clip-path 1s cubic-bezier(0.65, 0, 0.35, 1);
}
.link-one:hover::before {
clip-path: circle(100% at 50% 50%);
}
.link-one::after {
content: "";
position: absolute;
z-index: -1;
width: 100%;
height: 100%;
top: 0;
right: 0;
background-color: #151515;
clip-path: polygon(
40% 0%,
60% 0%,
60% 0%,
40% 0%,
40% 100%,
60% 100%,
60% 100%,
40% 100%
);
/*
Didn't look consistently awesome enough
across different viewing widths.
clip-path: polygon(
50% 50%,
50% 50%,
50% 50%,
50% 50%,
50% 50%,
50% 50%,
50% 50%,
50% 50%,
50% 50%,
50% 50%,
50% 50%,
50% 50%,
50% 50%,
50% 50%,
50% 50%,
50% 50%,
50% 50%,
50% 50%,
50% 50%,
50% 50%,
50% 50%,
50% 50%
);
*/
transition: clip-path 1s cubic-bezier(0.65, 0, 0.35, 1);
}
.link-one:hover::after {
/*
clip-path: polygon(
20% 45%,
10% 40%,
30% 30%,
40% 35%,
60% 35%,
70% 30%,
90% 40%,
80% 45%,
60% 35%,
40% 35%,
20% 45%,
20% 55%,
10% 60%,
30% 70%,
40% 65%,
60% 65%,
70% 70%,
90% 60%,
80% 55%,
60% 65%,
40% 65%,
20% 55%
);
*/
clip-path: polygon(
40% 10%,
60% 10%,
60% 35%,
40% 35%,
40% 90%,
60% 90%,
60% 65%,
40% 65%
);
}
.link-two {
color: #f27b9b;
transition: color 1s cubic-bezier(0.32, 0, 0.67, 0);
}
.link-two:hover {
color: #111;
transition: color 1s cubic-bezier(0.33, 1, 0.68, 1);
}
.link-two::before {
content: "";
position: absolute;
z-index: -2;
width: 100%;
height: 100%;
top: 0;
right: 0;
clip-path: polygon(
0% -20%,
100% -30%,
100% -10%,
0% 0%,
0% 130%,
100% 120%,
100% 100%,
0% 110%
);
background-color: #f27b9b;
transition: clip-path 1s cubic-bezier(0.25, 1, 0.5, 1);
}
.link-two:hover::before {
clip-path: polygon(
0% 10%,
100% 0%,
100% 20%,
0% 30%,
0% 100%,
100% 90%,
100% 70%,
0% 80%
);
}
.link-two::after {
content: "";
position: absolute;
z-index: -1;
width: 5ch;
height: 5ch;
top: 50%;
right: 50%;
transform: translate(50%, -50%) rotate(0deg) scale(0);
transition: transform 1s ease;
background-color: #f27b9b;
}
.link-two:hover::after {
transform: translate(50%, -50%) rotate(135deg) scale(1);
}
.link-three {
color: #eb7132;
}
.link-three::after {
content: "";
position: absolute;
z-index: 2;
width: 50%;
height: 100%;
top: 0%;
left: 0%;
transform: translate(0, -50%) scaleY(0);
transition: transform 1s ease;
mix-blend-mode: difference;
clip-path: polygon(
20% 60%,
100% 60%,
100% 40%,
20% 40%,
20% 0%,
60% 0%,
60% 20%,
20% 20%
);
background-color: #eb7132;
}
.link-three:hover::after {
transform: translate(0, 0%) scaleY(1);
}
.link-three::before {
content: "";
position: absolute;
z-index: 2;
width: 50%;
height: 100%;
bottom: 0%;
right: 0%;
transform: translate(0, 50%) scaleY(0);
transition: transform 1s ease;
mix-blend-mode: difference;
clip-path: polygon(
80% 40%,
0% 40%,
0% 60%,
80% 60%,
80% 100%,
40% 100%,
40% 80%,
80% 80%
);
background-color: #eb7132;
}
.link-three:hover::before {
transform: translate(0%, 0%) scaleY(1);
}
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.