linearGradient отображается в одном цвете - PullRequest
2 голосов
/ 11 января 2012

Может кто-нибудь указать мне, что не так в этом коде?

HTML:

<!DOCTYPE html >
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>

<script type="text/javascript" src="js/jquery-1.7.1.js"></script>
<style type="text/css">@import "js/jquery.svg/jquery.svg.css";</style> 
<script type="text/javascript" src="js/jquery.svg/jquery.svg.js"></script>
<script type="text/javascript" src="js/svg.js"></script>

<body>
   <div id="svgintro" style="height:800px"></div>
</body>
</html>

JavaScript:

var defs=svg.defs();
svg.linearGradient(defs, 'gradient', [[0, 'white', 1], [1, 'red', 1]], 0, 0, 0, 100, {gradientUnits: 'userSpaceOnUse'});
svg.rect(20, 400, 1500, 40, 10, 10, {fill:'url(#gradient)'});

Это всегда показывает один цвет.

Спасибо.

Решение:

svg.linearGradient(defs, 'gradient', [['0%', 'white'], ['100%', 'red']], 20, 400, 20, 440, {gradientUnits: 'userSpaceOnUse'});

1 Ответ

3 голосов
/ 11 января 2012

Проблема здесь, насколько я могу судить, состоит в том, что атрибуты x1, y1, x2, y2 linearGradient находятся в абсолютных координатах, а не относительно объекта, к которому вы применяете градиент.Таким образом, ваш градиент заканчивается на y:100, но верхняя часть вашего прямоугольника находится на y:400, поэтому он получает только красную часть примененного градиента.

См. Пример http://jsfiddle.net/nrabinowitz/VTKj2/1/, показывающийчто у прямоугольника с вершиной в y:20 правильно применен градиент.

...