здание прочь JT-Ответим, здесь функция, которая будет делать именно то, что вам нужно в Javascript. Просто вызовите эту функцию, передав элемент и степени как целое число. Я также добавил «left», «right», «up», «down» в качестве необязательных аргументов.
function svg_linear_gradient_direction(element, direction){
if(direction === "left"){
element.setAttributeNS(null, "x1", "100%");
element.setAttributeNS(null, "y1", "0%");
element.setAttributeNS(null, "x2", "0%");
element.setAttributeNS(null, "y2", "0%");
} else if(direction === "right"){
element.setAttributeNS(null, "x1", "0%");
element.setAttributeNS(null, "y1", "0%");
element.setAttributeNS(null, "x2", "100%");
element.setAttributeNS(null, "y2", "0%");
} else if(direction === "down"){
element.setAttributeNS(null, "x1", "0%");
element.setAttributeNS(null, "y1", "0%");
element.setAttributeNS(null, "x2", "0%");
element.setAttributeNS(null, "y2", "100%");
} else if(direction === "up"){
element.setAttributeNS(null, "x1", "0%");
element.setAttributeNS(null, "y1", "100%");
element.setAttributeNS(null, "x2", "0%");
element.setAttributeNS(null, "y2", "0%");
} else if(typeof direction === "number"){
var pointOfAngle = function(a) {
return {
x:Math.cos(a),
y:Math.sin(a)
};
}
var degreesToRadians = function(d) {
return ((d * Math.PI)/180);
}
var eps = Math.pow(2, -52);
var angle = (direction % 360);
var startPoint = pointOfAngle(degreesToRadians(180 - angle));
var endPoint = pointOfAngle(degreesToRadians(360 - angle));
if(startPoint.x <= 0 || Math.abs(startPoint.x) <= eps)
startPoint.x = 0;
if(startPoint.y <= 0 || Math.abs(startPoint.y) <= eps)
startPoint.y = 0;
if(endPoint.x <= 0 || Math.abs(endPoint.x) <= eps)
endPoint.x = 0;
if(endPoint.y <= 0 || Math.abs(endPoint.y) <= eps)
endPoint.y = 0;
element.setAttributeNS(null, "x1", startPoint.x);
element.setAttributeNS(null, "y1", startPoint.y);
element.setAttributeNS(null, "x2", endPoint.x);
element.setAttributeNS(null, "y2", endPoint.y);
}
}
Очень хороший вопрос. Мне просто нужно разъяснение. Вы также рассматриваете изменение gradientUnit? –