123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- @import 'config'
- /*
- * Implicit color stop position.
- */
- pos-in-stops(i, stops)
- len = length(stops)
- if len - 1 == i
- 100%
- else if i
- unit(i / len * 100, '%')
- else
- 0
- /*
- * Normalize color stops:
- *
- * - (color pos) -> (pos color)
- * - (color) -> (implied-pos color)
- *
- */
- normalize-stops(stops)
- stops = clone(stops)
- for stop, i in stops
- if length(stop) == 1
- color = stop[0]
- stop[0] = pos-in-stops(i, stops)
- stop[1] = color
- else if typeof(stop[1]) == 'unit'
- pos = stop[1]
- stop[1] = stop[0]
- stop[0] = pos
- stops
- /*
- * Join color stops with the given translation function.
- */
- join-stops(stops, translate)
- str = ''
- len = length(stops)
- for stop, i in stops
- str += ', ' if i
- pos = stop[0]
- color = stop[1]
- str += translate(color, pos)
- unquote(str)
- /*
- * Standard color stop.
- */
- std-stop(color, pos)
- '%s %s' % (color pos)
- /*
- * Create a linear gradient with the given start position
- * and variable number of color stops.
- *
- * Examples:
- *
- * background: linear-gradient(top, red, green, blue)
- * background: linear-gradient(bottom, red, green 50%, blue)
- * background: linear-gradient(bottom, red, 50% green, blue)
- * background: linear-gradient(bottom, red, 50% green, 90% white, blue)
- *
- */
- linear-gradient(start, stops...)
- error('color stops required') unless length(stops)
- unquote('linear-gradient(' + join(', ',arguments) + ')')
- /*
- * Create a linear gradient image with the given start position
- * and variable number of color stops.
- */
- linear-gradient-image(start, stops...)
- error('node-canvas is required for linear-gradient-image()') unless has-canvas
- stops = stops[0] if length(stops) == 1
- error('gradient image size required') unless start[0] is a 'unit'
- size = start[0]
- start = start[1] or 'top'
- grad = create-gradient-image(size, start)
- stops = normalize-stops(stops)
- add-color-stop(grad, stop[0], stop[1]) for stop in stops
- 'url(%s)' % gradient-data-uri(grad)
|