2012-06-29 2 views
7

Chcę zapytać, że jeśli przeczytałeś, że jest możliwe, aby podać wartość koloru HSL do SVG element.But gdy próbuję go jak tenJak nadać wartość koloru HSL do elementu svg

var color = hsl(0, 100%, 50%); 

circle.attr("fill" , color); 

I masz błąd „nieoczekiwany numer”

może jedno przypomnienie, co jest poprawny sposób i robi również SVG obsługuje wszystkich kolorów HSL

Dzięki

Odpowiedz

17

Wystarczy

var color = hsl(0,100%,50%); 

linia oznacza, że ​​zadzwonisz hsl funkcję z 0, 100%, 50% parametrów i przypisać zwracaną wartość color zmiennej.

Trzeba użyć cudzysłowów i przekazać kolor jako string:

var color = "hsl(0, 100%, 50%)"; 

circle.attr("fill" , color); 

Aby uzyskać więcej informacji o HSL przeczytać here.

I nie ma znaczenia, czy kolor hsl jest używany przez SVG, czy przez inny element. Jest to po prostu składnia dla określenia color.

UPDATE: Aby dać color zmiennej losowej zachowanie, spróbuj coś takiego:

var color = "hsl("+[0,0,0].map(function(){ return Math.round(100*Math.random())+"%"; }).join(',')+")"; 
+0

dziękuję @engineer dając kolor w cytowanych pracach –

+0

@A_user Zobacz moją aktualizację. – Engineer

+0

Jeśli komuś zależy, wygenerowany losowy kolor jest nieprawidłowy. Zakres odcienia wynosi od 0 do 360 ° i jest pod kątami, a nie w procentach. – akinuri

2

No, ja nie wiem, czy używasz tam bibliotekę JavaScriptu, ale to nie wygląda jak poprawna składnia JS do mnie. Próbowałem tego i wydaje się działać:

var color = "hsl(0, 100%, 50%)"; // use quotes around the value, since there's no hsl() function 
circle.setAttribute("fill", color); // setAttribute(), not attr() 
// this also works and is better than setAttribute() 
circle.style.fill = "hsl(120, 50%, 50%)"; 
+0

dzięki @sergui daje kolor w cytowanych pracach –

0

Nie ma funkcji o nazwie hsl() w JavaScript ani wypełnienie jest atrybutem. To jest styl CSS. w HTML spróbować go w następujący sposób: -

<svg xmlns="http://www.w3.org/2000/svg" version="1.1"> 
    <circle cx="100" cy="100" r="50" style="fill:hsl(0, 100%, 50%);stroke-width:1;stroke:rgb(0,0,0)" /> 
</svg> 

Ponadto, wydaje się, używasz jQuery lub innego podobnego biblioteką JavaScript, zatem spróbować następujący kod: -

var color = "hsl(0, 100%, 50%)"; 
circle.css("fill" , color); 
+1

W SVG wypełnienie * jest * atrybutem odwzorowanym na równoważny styl CSS. –