svg gradients now support angles
This commit is contained in:
parent
8642187173
commit
4e502dda73
@ -7,7 +7,7 @@ GIT
|
|||||||
PATH
|
PATH
|
||||||
remote: .
|
remote: .
|
||||||
specs:
|
specs:
|
||||||
compass (0.11.beta.7.6b884d3)
|
compass (0.11.beta.7.8642187)
|
||||||
chunky_png (~> 1.1.0)
|
chunky_png (~> 1.1.0)
|
||||||
sass (>= 3.1.0.alpha.249)
|
sass (>= 3.1.0.alpha.249)
|
||||||
|
|
||||||
|
@ -126,18 +126,8 @@ module Compass::SassExtensions::Functions::GradientSupport
|
|||||||
s << ")"
|
s << ")"
|
||||||
end
|
end
|
||||||
def supports?(aspect)
|
def supports?(aspect)
|
||||||
if aspect == "svg"
|
|
||||||
if position_or_angle.nil? || is_position(position_or_angle).to_bool || is_position_list(position_or_angle).to_bool
|
|
||||||
true
|
|
||||||
else
|
|
||||||
true
|
|
||||||
#Compass::Util.compass_warn("Warning: Angle-based gradients are not yet supported in SVG. Found: #{position_or_angle}")
|
|
||||||
#false
|
|
||||||
end
|
|
||||||
else
|
|
||||||
GRADIENT_ASPECTS.include?(aspect)
|
GRADIENT_ASPECTS.include?(aspect)
|
||||||
end
|
end
|
||||||
end
|
|
||||||
def has_aspect?
|
def has_aspect?
|
||||||
true
|
true
|
||||||
end
|
end
|
||||||
@ -356,10 +346,13 @@ module Compass::SassExtensions::Functions::GradientSupport
|
|||||||
stops = color_stops_in_percentages(color_stops)
|
stops = color_stops_in_percentages(color_stops)
|
||||||
|
|
||||||
svg = linear_svg(stops, x1, y1, x2, y2)
|
svg = linear_svg(stops, x1, y1, x2, y2)
|
||||||
puts svg
|
|
||||||
inline_image_string(svg.gsub(/\s+/, ' '), 'image/svg+xml')
|
inline_image_string(svg.gsub(/\s+/, ' '), 'image/svg+xml')
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def angle?
|
||||||
|
position_or_angle.is_a?(Sass::Script::Number) && position_or_angle.numerator_units == ["deg"] && position_or_angle.denominator_units.empty?
|
||||||
|
end
|
||||||
|
|
||||||
def radial_svg_gradient(color_stops, center)
|
def radial_svg_gradient(color_stops, center)
|
||||||
cx, cy = *grad_point(center).value
|
cx, cy = *grad_point(center).value
|
||||||
r = grad_end_position(color_stops, Sass::Script::Bool.new(true))
|
r = grad_end_position(color_stops, Sass::Script::Bool.new(true))
|
||||||
@ -449,7 +442,12 @@ module Compass::SassExtensions::Functions::GradientSupport
|
|||||||
end
|
end
|
||||||
|
|
||||||
def linear_svg(color_stops, x1, y1, x2, y2)
|
def linear_svg(color_stops, x1, y1, x2, y2)
|
||||||
gradient = %Q{<linearGradient id="grad" gradientUnits="userSpaceOnUse" x1="#{x1}" y1="#{y1}" x2="#{x2}" y2="#{y2}">#{color_stops_svg(color_stops)}</linearGradient>}
|
transform = ''
|
||||||
|
if angle?
|
||||||
|
deg = Float(position_or_angle.value)
|
||||||
|
transform = " gradientTransform = \"rotate(#{deg})\""
|
||||||
|
end
|
||||||
|
gradient = %Q{<linearGradient id="grad" gradientUnits="userSpaceOnUse" x1="#{x1}" y1="#{y1}" x2="#{x2}" y2="#{y2}"#{transform}>#{color_stops_svg(color_stops)}</linearGradient>}
|
||||||
svg(gradient)
|
svg(gradient)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -17,6 +17,24 @@
|
|||||||
background: white -o-radial-gradient(center center, #dddddd, #aaaaaa 100px);
|
background: white -o-radial-gradient(center center, #dddddd, #aaaaaa 100px);
|
||||||
background: white radial-gradient(center center, #dddddd, #aaaaaa 100px); }
|
background: white radial-gradient(center center, #dddddd, #aaaaaa 100px); }
|
||||||
|
|
||||||
|
.bg-linear-gradient-angle-svg {
|
||||||
|
background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9Ii00NSIgeTE9IiIgeDI9Ii00NSIgeTI9IiIgZ3JhZGllbnRUcmFuc2Zvcm0gPSAicm90YXRlKC00NS4wKSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzAwMDBmZiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzAwMDAwMCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');
|
||||||
|
background-size: 100%;
|
||||||
|
background-image: -webkit-gradient(linear, -45deg, -45deg, color-stop(0%, #0000ff), color-stop(100%, #000000));
|
||||||
|
background-image: -webkit-linear-gradient(-45deg, #0000ff, #000000);
|
||||||
|
background-image: -moz-linear-gradient(-45deg, #0000ff, #000000);
|
||||||
|
background-image: -o-linear-gradient(-45deg, #0000ff, #000000);
|
||||||
|
background-image: linear-gradient(-45deg, #0000ff, #000000); }
|
||||||
|
|
||||||
|
.bg-linear-gradient-angle2-svg {
|
||||||
|
background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIxMDAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzAwMDBmZiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzAwMDAwMCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');
|
||||||
|
background-size: 100%;
|
||||||
|
background-image: -webkit-gradient(linear, 0% 0%, 100% 100%, color-stop(0%, #0000ff), color-stop(100%, #000000));
|
||||||
|
background-image: -webkit-linear-gradient(top left, #0000ff, #000000);
|
||||||
|
background-image: -moz-linear-gradient(top left, #0000ff, #000000);
|
||||||
|
background-image: -o-linear-gradient(top left, #0000ff, #000000);
|
||||||
|
background-image: linear-gradient(top left, #0000ff, #000000); }
|
||||||
|
|
||||||
.bg-all-gradient-types-with-simplification {
|
.bg-all-gradient-types-with-simplification {
|
||||||
background: #ffcc00;
|
background: #ffcc00;
|
||||||
background: url('/images/4x6.png?busted=true'), url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIxMDAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2RkZGRkZCIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2FhYWFhYSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='), url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY3g9IjUwJSIgY3k9IjUwJSIgcj0iMTAwIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZGRkZGRkIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjYWFhYWFhIi8+PC9yYWRpYWxHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g'), #ffcc00;
|
background: url('/images/4x6.png?busted=true'), url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjAlIiB5MT0iMCUiIHgyPSIxMDAlIiB5Mj0iMTAwJSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2RkZGRkZCIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2FhYWFhYSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='), url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY3g9IjUwJSIgY3k9IjUwJSIgcj0iMTAwIj48c3RvcCBvZmZzZXQ9IjAlIiBzdG9wLWNvbG9yPSIjZGRkZGRkIi8+PHN0b3Agb2Zmc2V0PSIxMDAlIiBzdG9wLWNvbG9yPSIjYWFhYWFhIi8+PC9yYWRpYWxHcmFkaWVudD48L2RlZnM+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsbD0idXJsKCNncmFkKSIgLz48L3N2Zz4g'), #ffcc00;
|
||||||
@ -66,7 +84,7 @@
|
|||||||
background-image: radial-gradient(center center, #dddddd, #aaaaaa 100px); }
|
background-image: radial-gradient(center center, #dddddd, #aaaaaa 100px); }
|
||||||
|
|
||||||
.bg-linear-gradient-with-angle {
|
.bg-linear-gradient-with-angle {
|
||||||
background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9Ii00NSIgeTE9IiIgeDI9Ii00NSIgeTI9IiI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2RkZGRkZCIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2FhYWFhYSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');
|
background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9Ii00NSIgeTE9IiIgeDI9Ii00NSIgeTI9IiIgZ3JhZGllbnRUcmFuc2Zvcm0gPSAicm90YXRlKC00NS4wKSI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2RkZGRkZCIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2FhYWFhYSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');
|
||||||
background-size: 100%;
|
background-size: 100%;
|
||||||
background-image: -webkit-gradient(linear, -45deg, -45deg, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa));
|
background-image: -webkit-gradient(linear, -45deg, -45deg, color-stop(0%, #dddddd), color-stop(100%, #aaaaaa));
|
||||||
background-image: -webkit-linear-gradient(-45deg, #dddddd, #aaaaaa);
|
background-image: -webkit-linear-gradient(-45deg, #dddddd, #aaaaaa);
|
||||||
|
@ -10,6 +10,12 @@ $experimental-support-for-svg: true
|
|||||||
.bg-shortcut-radial-gradient
|
.bg-shortcut-radial-gradient
|
||||||
+background(#fff radial-gradient(center center, #ddd, #aaa 100px))
|
+background(#fff radial-gradient(center center, #ddd, #aaa 100px))
|
||||||
|
|
||||||
|
.bg-linear-gradient-angle-svg
|
||||||
|
+background-image(linear-gradient(-45deg, blue, black))
|
||||||
|
|
||||||
|
.bg-linear-gradient-angle2-svg
|
||||||
|
+background-image(linear-gradient(top left, blue, black))
|
||||||
|
|
||||||
.bg-all-gradient-types-with-simplification
|
.bg-all-gradient-types-with-simplification
|
||||||
+background-with-css2-fallback(image-url("4x6.png"), linear-gradient(top left, #ddd, #aaa), radial-gradient(center center, #ddd, #aaa 100px), #ffcc00)
|
+background-with-css2-fallback(image-url("4x6.png"), linear-gradient(top left, #ddd, #aaa), radial-gradient(center center, #ddd, #aaa 100px), #ffcc00)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user