Skip to content

Instantly share code, notes, and snippets.

@davidpett
Created March 16, 2017 20:36
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save davidpett/3dc9ba99547f6807a2def15fda8870d0 to your computer and use it in GitHub Desktop.
Save davidpett/3dc9ba99547f6807a2def15fda8870d0 to your computer and use it in GitHub Desktop.
a way to do angles in pseudo selectors
@mixin angle($pseudo, $flip: false, $angle: 2deg) {
// Possible values for $pseudo are: before, after, both
@if $pseudo == 'before' or $pseudo == 'after' or $pseudo == 'both' {
position: relative;
z-index: 1;
$selector: if($pseudo == 'both', '&:before,&:after', '&:#{$pseudo}');
#{$selector} {
background: inherit;
content: '';
display: block;
height: 100%;
left: -1px;
padding: 1px;
background-clip: content-box;
-webkit-background-clip: content-box;
position: absolute;
right: -1px;
z-index: -1;
backface-visibility: hidden;
}
@if $pseudo == 'before' {
#{$selector} {
top: 0;
@if $flip {
transform: skewY($angle * -1);
transform-origin: 0 0;
} @else {
transform: skewY($angle);
transform-origin: 100% 0;
}
}
}
@if $pseudo == 'after' {
#{$selector} {
bottom: 0;
@if $flip {
transform: skewY($angle);
transform-origin: 0 100%;
} @else {
transform: skewY($angle * -1);
transform-origin: 100%;
}
}
}
@if $pseudo == 'both' {
&:before {
top: 0;
@if $flip {
transform: skewY($angle * -1);
transform-origin: 0 0;
} @else {
transform: skewY($angle);
transform-origin: 100% 0;
}
}
&:after {
bottom: 0;
@if $flip {
transform: skewY($angle);
transform-origin: 0 0;
} @else {
transform: skewY($angle * -1);
transform-origin: 100%;
}
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment