-
Notifications
You must be signed in to change notification settings - Fork 9
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
adding Hugo Giraudel's linear gradient mixin; initial pass needs cleanup
- Loading branch information
1 parent
d630c77
commit 5a180d6
Showing
3 changed files
with
101 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,89 @@ | ||
@charset 'UTF-8'; | ||
|
||
// | ||
// @linear-gradient | ||
// | ||
// @author Hugo Giraudel | ||
// | ||
// Mixin to create a linear gradient with a plain color fallback. | ||
// | ||
// $direction - Linear gradient direction | ||
// $color-stops - List of color-stops composing the gradient | ||
// | ||
// Style guide: Mixins.Gradient.LinearGradient | ||
// | ||
|
||
/// Convert angle | ||
/// @author Chris Eppstein | ||
/// @param {Number} $value - Value to convert | ||
/// @param {String} $unit - Unit to convert to | ||
/// @return {Number} Converted angle | ||
@function convert-angle($value, $unit) { | ||
$convertable-units: deg grad turn rad; | ||
$conversion-factors: 1 (10grad/9deg) (1turn/360deg) (3.1415926rad/180deg); | ||
@if index($convertable-units, unit($value)) and index($convertable-units, $unit) { | ||
@return $value | ||
/ nth($conversion-factors, index($convertable-units, unit($value))) | ||
* nth($conversion-factors, index($convertable-units, $unit)); | ||
} | ||
|
||
@warn "Cannot convert `#{unit($value)}` to `#{$unit}`."; | ||
} | ||
|
||
/// Test if `$value` is an angle | ||
/// @param {*} $value - Value to test | ||
/// @return {Bool} | ||
@function is-direction($value) { | ||
$is-direction: index((to top, to top right, to right top, to right, to bottom right, to right bottom, to bottom, to bottom left, to left bottom, to left, to left top, to top left), $value); | ||
$is-angle: type-of($value) == 'number' and index('deg' 'grad' 'turn' 'rad', unit($value)); | ||
|
||
@return $is-direction or $is-angle; | ||
} | ||
|
||
/// Convert a direction to legacy syntax | ||
/// @param {Keyword | Angle} $value - Value to convert | ||
/// @require {function} is-direction | ||
/// @require {function} convert-angle | ||
@function legacy-direction($value) { | ||
@if is-direction($value) == false { | ||
@warn "Cannot convert `#{$value}` to legacy syntax because it doesn't seem to be an angle or a direction"; | ||
} | ||
|
||
$conversion-map: ( | ||
to top : bottom, | ||
to top right : bottom left, | ||
to right top : left bottom, | ||
to right : left, | ||
to bottom right : top left, | ||
to right bottom : left top, | ||
to bottom : top, | ||
to bottom left : top right, | ||
to left bottom : right top, | ||
to left : right, | ||
to left top : right bottom, | ||
to top left : bottom right | ||
); | ||
|
||
@if map-has-key($conversion-map, $value) { | ||
@return map-get($conversion-map, $value); | ||
} | ||
|
||
@return 90deg - convert-angle($value, 'deg'); | ||
} | ||
|
||
/// Mixin printing a linear-gradient | ||
/// as well as a plain color fallback | ||
/// and the `-webkit-` prefixed declaration | ||
/// @access public | ||
/// @param {String | List | Angle} $direction - Linear gradient direction | ||
/// @param {Arglist} $color-stops - List of color-stops composing the gradient | ||
@mixin linear-gradient($direction, $color-stops...) { | ||
@if is-direction($direction) == false { | ||
$color-stops: ($direction, $color-stops); | ||
$direction: 180deg; | ||
} | ||
|
||
background: nth(nth($color-stops, 1), 1); | ||
background: -webkit-linear-gradient(legacy-direction($direction), $color-stops); | ||
background: linear-gradient($direction, $color-stops); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
@charset "UTF-8"; | ||
|
||
// Gradient | ||
// | ||
// Mixins for creating gradients | ||
// | ||
// Style guide: Mixins.Gradient | ||
// | ||
@import | ||
'linear-gradient' | ||
; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters