CSS3 градиенты как SVG
На моей странице я использую много CSS3 градиентов. Я хотел бы предоставить некоторый запасной вариант SVG для IE и Opera.
Создание откатов SVG для линейного градиента CSS3 довольно просто. Я использую следующий код:
<svg xmlns="http://www.w3.org/2000/svg">
<linearGradient id="g" gradientTransform="rotate(90,.5,.5)">
<stop stop-color="black" offset="0"/>
<stop stop-color="white" offset="1"/>
</linearGradient>
<rect x="0" y="0" width="100%" height="100%" fill="url(#g)"/>
</svg>
Что эквивалентно этому CSS:
background:-webkit-linear-gradient(black,white);
background: -moz-linear-gradient(black,white);
background: -o-linear-gradient(black,white);
background: linear-gradient(black,white);
Теперь, когда речь идет о радиальных градиентах CSS3, все становится немного сложнее. Мне не повезло создать SVG-эквивалент для радиального градиента CSS3, как показано ниже:
background:-webkit-radial-gradient(50% 10%,circle,rgba(255,255,255,.3) 10%,rgba(255,255,255,0) 90%);
background: -moz-radial-gradient(50% 10%,circle,rgba(255,255,255,.3) 10%,rgba(255,255,255,0) 90%);
background: -o-radial-gradient(50% 10%,circle,rgba(255,255,255,.3) 10%,rgba(255,255,255,0) 90%);
background: radial-gradient(circle at 50% 10%,rgba(255,255,255,.3) 10%,rgba(255,255,255,0) 90%);
Пока мне удалось придумать это:
<svg xmlns="http://www.w3.org/2000/svg">
<radialGradient id="g">
<stop stop-opacity=".3" stop-color="white" offset=".1"/>
<stop stop-opacity="0" stop-color="white" offset=".9"/>
</radialGradient>
<rect x="0" y="0" width="100%" height="100%" fill="url(#g)"/>
</svg>
Но это дает мне разные результаты.
Как я могу создать такой же градиент, как исходный в CSS3?
Вот демонстрация двух градиентов: http://jsfiddle.net/QuMnA/
1 ответ
Решение
Вам необходимо указать cx
а также cy
Атрибуты вашего радиального градиента...
<svg xmlns="http://www.w3.org/2000/svg">
<radialGradient id="g" r="1" cx="50%" cy="10%">
<stop stop-opacity=".3" stop-color="white" offset=".1"/>
<stop stop-opacity="0" stop-color="white" offset=".9"/>
</radialGradient>
<rect x="0" y="0" width="100%" height="100%" fill="url(#g)"/>
</svg>