2016-01-18 13 views
5

Mam przycisk skonfigurować tak:Farbowanie SVG zawartość url z css

<button class="buttonclass"><i class="iconclass plus-icon"></i></button> 

moich klas css wyglądać następująco:

.buttonclass { 
    width: 30px; 
    height: 30px; 
    text-align: center; 
    position: relative; 
    border-radius: 20px; 
    background-color: #1DBE60 
} 

.iconclass { 
    width: 20px; 
    height: 20px; 
    margin: 7.5px; 
} 

.buttonclass .iconclass { 
    margin: 0; 
    position: absolute; 
    top: 50%; 
    left: 50%; 
    transform: translate(-50%, -50%); 
} 

.plus-icon { 
    content: url(http://uxrepo.com/static/icon-sets/mfg-labs/svg/plus.svg); 
} 

Jak mogę zmienić kolor „Plus- ikona "z css, jeśli jest to SVG? Próbowałem dodanie klas wypełnić do SVG, zajęcia kolor, tło-klas itd

Oto upadać: http://plnkr.co/edit/6fLYQlpFmDdf7aWenBtp?p=preview

+1

Nie jest to możliwe, gdy używa się SVG jako obrazu tła. https://css-tricks.com/using-svg/ – CBroe

+0

Zwykle używałbyś do tego czcionki ikonowej zamiast svg. –

+0

@CBroe Jaki byłby najlepszy sposób używania svg jako ikony? Czy MUSZĘ używać inline svg? Czy jest jakiś sposób, abym mógł użyć mojej obecnej konfiguracji za pomocą klasy? – developthewebz

Odpowiedz

2

Jeśli jesteś szczęśliwy, aby dodać jedną dodatkową klasę (dla koloru ikonę plusa) to tu jest rozwiązanie CSS-tylko za pomocą zmiennej currentColor CSS :

.buttonclass { 
 
    width: 30px; 
 
    height: 30px; 
 
    text-align: center; 
 
    position: relative; 
 
    border-radius: 20px; 
 
    background-color: #1DBE60 
 
} 
 

 
.iconclass { 
 
    width: 20px; 
 
    height: 20px; 
 
    margin: 7.5px; 
 
} 
 

 
.buttonclass .iconclass { 
 
    margin: 0; 
 
    position: absolute; 
 
    top: 50%; 
 
    left: 50%; 
 
    transform: translate(-50%, -50%); 
 
} 
 

 
.plus-icon { 
 
background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><rect x="0" y="0" width="8" height="8" fill="rgb(29,190,96)" /><rect x="0" y="12" width="8" height="8" fill="rgb(29,190,96)" /><rect x="12" y="0" width="8" height="8" fill="rgb(29,190,96)" /><rect x="12" y="12" width="8" height="8" fill="rgb(29,190,96)" /></svg>'); 
 
background-color: currentColor; 
 
border: 1px solid rgb(29,190,96); 
 
border-radius: 15px; 
 
} 
 

 
.white { 
 
color: rgb(255,255,255); 
 
} 
 

 
.yellow { 
 
color: rgb(255,255,0); 
 
} 
 

 
.green { 
 
color: rgb(0,255,0); 
 
}
<button class="buttonclass"><i class="iconclass plus-icon white"></i></button> 
 
<button class="buttonclass"><i class="iconclass plus-icon yellow"></i></button> 
 
<button class="buttonclass"><i class="iconclass plus-icon green"></i></button>

+0

nie można tego uruchomić – Lee

0

skończyło się tutaj szukasz sposobu pokolorować ikonę SVG. Najczęściej wybierana odpowiedź nie pomogła mi, więc po kilku googlach natknąłem się na ten interesujący codepen.

Długa historia krótkiego i kolorowe ikony Mój svg przy użyciu tego css:

.plus-icon { 
    -webkit-mask: url('../images/plus.svg') no-repeat 50% 50%; 
    mask: url('../images/plus.svg') no-repeat 50% 50%; 
    -webkit-mask-size: cover; 
    mask-size: cover; 
} 

.white { 
    background-color: rgb(255,255,255); 
} 

Aktualizacja:

Nie działa z IE.