Skip to content

Instantly share code, notes, and snippets.

@Elirena
Created July 4, 2018 15:17
Show Gist options
  • Save Elirena/fca2ffe195874ccfd5da6f21adb9abd6 to your computer and use it in GitHub Desktop.
Save Elirena/fca2ffe195874ccfd5da6f21adb9abd6 to your computer and use it in GitHub Desktop.
btn hover effects
<div class="wrapper">
<div class="o-hover__block">
<a class="c-btn c-btn--line" href="#" data-hover-name="HOVER.LINE">
HOVER<span>.</span>LINE</a>
</div>
<div class="o-hover__block">
<a class="c-btn c-btn--double-line" href="#" data-hover-name="DOUBLE.LINE">
DOUBLE<span>.</span>LINE</a>
</div>
<div class="o-hover__block">
<a class="c-btn c-btn--big-line" href="#" data-hover-name="BIG.LINE">
BIG<span>.</span>LINE</a>
</div>
<div class="o-hover__block">
<a class="c-btn c-btn--border-line" href="#" data-hover-name="BIG.LINE">
BORDER<span>.</span>LINE</a>
</div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
@import 'https://fonts.googleapis.com/css?family=Lato:900';
@vr__col-black: #000;
@vr__col-white: #FFF;
@vr__col-red: #e64040;
//-----------------------------------------------------------
html {
font-family: 'Lato', sans-serif;
}
body {
background-color: @vr__col-black;
}
.wrapper {
position: relative;
max-width: 1024px;
margin: 100px auto;
}
//-----------------------------------------------------------
.o-hover__block {
text-align: center;
margin: 60px 0;
}
// DEFAULT BUTTON -------------------------------------------
.c-btn {
color: @vr__col-white;
text-decoration: none;
position: relative;
display: inline-block;
font-size: 40px;
height: 100%;
&:after {
content: '';
display: block;
position: absolute;
}
&:before {
content: '';
display: block;
position: absolute;
}
// FIRTS BUTTON -------------------------------------------
&--line {
&:after {
transform-origin: right;
transform: scaleX(0);
bottom: 0;
height: 2px;
width: 100%;
background-color: @vr__col-white;
transition: transform .6s cubic-bezier(.55, 0, .1, 1);
}
&:hover {
&:after {
transform: scaleX(1);
transform-origin: left;
transition: transform .6s cubic-bezier(.55, 0, .1, 1);
}
}
}
// SECOND BUTTON -------------------------------------------
&--double-line {
&:after {
transform-origin: right;
transform: scaleX(0);
top: 0;
height: 2px;
width: 100%;
background-color: @vr__col-white;
transition: transform .6s cubic-bezier(.55, 0, .1, 1);
}
&:before {
transform-origin: left;
transform: scaleX(0);
bottom: 0;
height: 2px;
width: 100%;
background-color: @vr__col-white;
transition: transform .6s cubic-bezier(.55, 0, .1, 1);
}
&:hover {
&:after {
transform: scaleX(1);
transform-origin: left;
transition: transform .6s cubic-bezier(.55, 0, .1, 1);
}
&:before {
transform: scaleX(1);
transform-origin: right;
transition: transform .6s cubic-bezier(.55, 0, .1, 1);
}
}
}
// THIRD BUTTON -------------------------------------------
&--big-line {
&:after {
content: attr(data-hover-name);
color: @vr__col-black;
height: 100%;
width: 100%;
top: 0;
opacity: 0;
transition: all .2s cubic-bezier(.55, 0, .1, 1);
}
&:before {
content: '';
display: block;
position: absolute;
transform-origin: right;
transform: scaleX(0);
height: 100%;
width: 100%;
top: 0;
background-color: @vr__col-white;
transition: transform .6s cubic-bezier(.55, 0, .1, 1);
}
&:hover {
&:after {
opacity: 1;
transition: all .3s cubic-bezier(.55, 0, .1, 1);
transition-delay: .3s;
}
&:before {
transform: scaleX(1);
transform-origin: left;
transition: transform .6s cubic-bezier(.55, 0, .1, 1);
}
}
}
// FOURTH BUTTON -------------------------------------------
&--border-line {
background: none;
border: 0;
box-sizing: border-box;
box-shadow: inset 0 0 0 2px transparent;
padding: 12px;
&:after,
&:before {
box-sizing: border-box;
border: 2px solid transparent;
width: 0;
height: 0;
}
&:after {
top: 0;
left: 0;
transition: border-color 0s ease-in .8s, width 0.2s ease-in 0.6s, height 0.2s ease-in 0.4s;
}
&:before {
bottom: 0;
right: 0;
transition: border-color 0s ease-in 0.4s, width 0.2s ease-in 0.2s, height 0.2s ease-in;
}
&:hover {
&:after,
&:before {
width: 100%;
height: 100%;
}
&:after {
border-top-color: @vr__col-red;
border-right-color: @vr__col-red;
transition: width 0.2s ease-out, height 0.2s ease-out 0.2s;
}
&:before {
border-bottom-color: @vr__col-red;
border-left-color: @vr__col-red;
transition: border-color 0s ease-out 0.4s, width 0.2s ease-out 0.4s, height 0.2s ease-out 0.6s;
}
}
}
}
// RED DOT -------------------------------------------
span {
color: @vr__col-red;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment