Relative positioned, border-based CSS arrows generated by a LESS mixin. Parameters: size, stroke, color, hover-color and radius.
A Pen by Peter Varga on CodePen.
Relative positioned, border-based CSS arrows generated by a LESS mixin. Parameters: size, stroke, color, hover-color and radius.
A Pen by Peter Varga on CodePen.
<div class="demo"> | |
<a class="my-arrow my-arrow-top"></a> | |
<a class="my-arrow my-arrow-bottom"></a> | |
<a class="my-arrow my-arrow-left"></a> | |
<a class="my-arrow my-arrow-right"></a> | |
</div> |
// version 1: | |
// http://codepen.io/peet86/pen/pJePqo |
// USAGE: | |
// Add to any class: | |
//.vp-arrow(@size,@stroke,@color,[@color-hover,@radius]); | |
.my-arrow{ | |
.vp-arrow(100px,5px,#FF6049,#026073,10px); | |
// add anything.. | |
float:left; | |
cursor:pointer; | |
} | |
// LESS MIXIN: | |
.vp-arrow(@size,@stroke,@color,@color-hover:@color,@radius:0px) { | |
//general | |
display:block; | |
position:relative; | |
width: @size; | |
height: @size; | |
&:hover{ | |
&:after{ | |
border-color: @color-hover; | |
} | |
} | |
// better click experience | |
&:after{ | |
content: ''; | |
background:none; | |
width:@size*0.666; | |
height:@size*0.666; | |
position:absolute; | |
z-index:1; | |
-webkit-transform: rotate(-45deg); | |
-moz-transform: rotate(-45deg); | |
transform: rotate(-45deg); | |
-o-transform: rotate(-45deg); | |
} | |
.vp-arrow-directions(@stroke,@color,@color-hover,@j) when (@j < 5) { | |
@directions: top,right,bottom,left,top; | |
@direction: extract(@directions, @j); | |
@s1: extract(@directions,@j); | |
@s2: extract(@directions,@j+1); | |
&-@{direction}:after { | |
border-@{s1}: @stroke solid @color; | |
border-@{s2}: @stroke solid @color; | |
@{s2}:@size/6-@stroke/2; | |
@{s1}:@size/3-@stroke/2; | |
} | |
&-@{direction}:after when ( mod(@j,2) = 0) { | |
-webkit-@{s2}-@{s1}-border-radius: @radius; | |
-moz-@{s2}-@{s1}-border-radius: @radius; | |
border-@{s2}-@{s1}-radius: @radius; | |
} | |
&-@{direction}:after when not ( mod(@j,2) = 0) { | |
-webkit-@{s1}-@{s2}-border-radius: @radius; | |
-moz-@{s1}-@{s2}-border-radius: @radius; | |
border-@{s1}-@{s2}-radius: @radius; | |
} | |
.vp-arrow-directions(@stroke,@color,@color-hover,@j + 1); | |
} | |
.vp-arrow-directions(@stroke,@color,@color-hover,1); | |
} | |
// DEMO STYLE | |
body{background: url('https://s3-us-west-2.amazonaws.com/s.cdpn.io/233828/g.png') center center repeat;} | |
.demo{margin:100px auto;width:400px;} |