Simple css3 animated arrow buttons. Quickly customized though SCSS variable settings.
A Pen by J Scott Smith on CodePen.
<div class="container"> | |
<p class="saying">Hi There!</p> | |
<p class="saying hidden">See Ya Later.</p> | |
<a href="#prev" class="prev">Prev</a> | |
<a href="#next" class="next">Next</a> | |
</div> |
Simple css3 animated arrow buttons. Quickly customized though SCSS variable settings.
A Pen by J Scott Smith on CodePen.
$( document ).ready(function() { | |
var prev = $(".prev"); | |
var next = $(".next"); | |
var saying = $(".saying"); | |
prev.on('click', function() { | |
saying.toggleClass('hidden'); | |
}); | |
next.on('click', function() { | |
saying.toggleClass('hidden'); | |
}); | |
}); |
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> |
@import "compass/css3"; | |
// Adjust settings for some quick and nifty arrows | |
// Arrow Style Settings | |
$arrow-size: 2em; | |
$border-width: 2px; | |
$border-type: solid; // solid, dotted, double, groove, ridge | |
$border-arrow-side: $border-width $border-type rgba(white,.75); | |
$border-arrow-side-hover: $border-width $border-type white; | |
$border-arrow-side-click: $border-width $border-type rgba(black,.65); | |
// Scaling, Transistioning | |
$scale-hover: 1.05; | |
$scale-active: 1.025; | |
$scale-hover-speed: 100ms; | |
$scale-active-speed: 50ms; | |
// Hover Area Style Settings | |
$ha-size: 3.5; // arrow size * n | |
$ha-border: $border-arrow-side; | |
$ha-bg: none; // rgba(white,.25) | |
$ha-hover-bg: rgba(black,.05); | |
$ha-active-bg: rgba(white,.1); | |
$ha-border-radius: 5%; | |
.prev, | |
.next { | |
@include transition(transform, $scale-hover-speed); | |
position: absolute; | |
display: block; | |
box-sizing: border-box; | |
width: $arrow-size * $ha-size; | |
height: $arrow-size * $ha-size; | |
// Fix jumpy transitions | |
transform: translatez(0); | |
@include backface-visibility( hidden ); | |
// Hide Text | |
text-indent: 100%; | |
white-space: nowrap; | |
overflow: hidden; | |
// Optional Styling | |
background-color: $ha-bg; | |
border: $ha-border; | |
border-radius: $ha-border-radius; | |
&:after { | |
@include transition(transform, $scale-hover-speed); | |
position: absolute; | |
box-sizing: border-box; | |
border-top: $border-arrow-side; | |
border-left: $border-arrow-side; | |
content: ""; | |
width: $arrow-size; | |
height: $arrow-size; | |
top: 50%; | |
margin-top: - ($arrow-size / 2); | |
} | |
} | |
.prev { | |
left: 0; | |
&:after { | |
@include rotate(-45deg); | |
border-top: $border-arrow-side; | |
border-left: $border-arrow-side; | |
left: 56%; | |
margin-left: - ($arrow-size / 2); | |
} | |
} | |
.next { | |
right: 0; | |
&:after { | |
@include rotate(135deg); | |
border-top: $border-arrow-side; | |
border-left: $border-arrow-side; | |
right: 56%; | |
margin-right: - ($arrow-size / 2); | |
} | |
} | |
// Hover states | |
.prev:hover, | |
.next:hover { | |
@include transform( scale($scale-hover) ); | |
background-color: $ha-hover-bg; | |
&:after { | |
border-top: $border-arrow-side-hover; | |
border-left: $border-arrow-side-hover; | |
} | |
} | |
.prev:hover { | |
&:after { | |
@include transform( rotate(-45deg) scale($scale-hover) ); | |
} | |
} | |
.next:hover { | |
&:after { | |
@include transform( rotate(135deg) scale($scale-hover) ); | |
} | |
} | |
// Active states | |
.prev:active, | |
.next:active { | |
@include transition(transform, $scale-active-speed); | |
@include transform( scale($scale-active) ); | |
background-color: $ha-active-bg; | |
&:after { | |
border-top: $border-arrow-side-click; | |
border-left: $border-arrow-side-click; | |
} | |
} | |
.prev:active { | |
&:after { | |
@include transform( rotate(-45deg) scale($scale-active) ); | |
} | |
} | |
.next:active { | |
&:after { | |
@include transform( rotate(135deg) scale($scale-active) ); | |
} | |
} | |
// Unecessary Page styling | |
body { | |
background-color: salmon; | |
} | |
.container { | |
position: relative; | |
margin: 0 auto; | |
max-width: 640px; | |
padding: 4em; | |
overflow: visible; | |
} | |
.saying { | |
@include transition(opacity, 400ms); | |
position: absolute; | |
width: 100%; | |
left: 0; | |
font-family: Helvetica, Arial, sans-serif; | |
font-size: 2em; | |
font-weight: 100; | |
color: rgba(black,.65); | |
text-align: center; | |
opacity: 1; | |
} | |
.hidden { | |
opacity: 0; | |
} |