Mai mult
img src SVG schimbarea cu stiluri CSS
html
<img src="logo.svg" alt="Logo" class="logo-img">
css
.logo-img path {
fill: #000;
}
Cele de mai sus svg sarcini și este nativ umple: #fff
dar când am folosi cele de mai sus css
să încercați să-l schimbe la negru nu't de schimbare, aceasta este prima mea timp de joc cu SVG și eu nu sunt sigur de ce-l's nu funcționează.
301
16
Daca scopul tau este doar de a schimba culoarea din logo-ul, și tu nu't TREBUIE neapărat să utilizați CSS, apoi don't de a folosi javascript sau jquery cum a fost sugerat de către unele răspunsurile precedente.
Pentru a răspunde exact la întrebarea inițială, doar:
Deschide-logo-ul.svg într-un editor de text.
uita-te pentru umplere: #fff
și înlocuiți-l cu umplere: #000
De exemplu, logo-ul.svg` ar putea arata astfel atunci când este deschis într-un editor de text:
... doar schimba umple și de a salva.
Ai putea seta svg ca o masca. Așa stabilirea unui background-color ar acționa ca culoarea de umplere.
HTML
CSS
JSFiddle: [https://jsfiddle.net/KuhlTime/2j8exgcb/][1]
Vă rugăm să rețineți că această metodă nu este de lucru pentru browser-ul Edge. Puteți verifica acest lucru prin a merge la acest site: https://caniuse.com/#search=mask
Încercați pur CSS:
mai multe informații în acest articol https://blog.union.io/code/2017/08/10/img-svg-fill/
2018: Dacă doriți o culoare dinamică, nu doriți să utilizați javascript și nu doriți o linie SVG, utilizați un CSS variabilă. Funcționează în Chrome, Firefox și Safari. edit: si Edge
În SVG, înlocuiți orice cazuri de
style="completa: #000" " cu " style="completa: var(--color_fill)"
.Răspunsul de la @Praveen este solid.
Nu puteam't ajunge să răspundă în munca mea, așa că am făcut un jquery hover funcție pentru ea.
CSS
JS / JQuery
Acest răspuns se bazează pe răspunsul https://stackoverflow.com/a/24933495/3890888 dar, cu un simplu JavaScript versiune de script-ul folosit.
Aveți nevoie pentru a face SVG să fie un inline SVG. Puteți face uz de acest script, prin adăugarea unei clase
svg
a imaginii:Și apoi, dacă faci:
Sau poate fi:
JSFiddle: http://jsfiddle.net/erxu0dzz/1/
Va trebui mai întâi pentru a injecta SVG în HTML DOM.
Acolo este o bibliotecă open source, numit SVGInject că face acest lucru pentru tine. Se folosește onload` atribut pentru a declanșa injecție.
Aici este un minim exemplu, folosind SVGInject:
După ce imaginea este încărcat
onload="SVGInject(aceasta) va declanșa injecție și
element va fi înlocuit de conținutul din fișierul SVG prevăzut însrc
atribut.Se rezolvă mai multe probleme cu SVG injecție:
Svg s pot fi ascunse până când injectarea s-a terminat. Acest lucru este important dacă un stil este aplicat deja în timpul de încărcare, care altfel ar cauza un scurt "unstyled conținut flash".
De
<img>
elemente injecta automat. Dacă adăugați svg s dinamic, nu't trebuie să vă faceți griji despre asteptare injecție funcționeze din nou.Un șir aleator este adăugat la fiecare ID in SVG, pentru a evita având același ID de mai multe ori în document dacă o SVG este injectat mai mult de o dată.
SVGInject este simplu Javascript și funcționează cu toate browserele care acceptă SVG.
Disclaimer: eu sunt co-autor al SVGInject
De ce nu a crea un webfont cu svg imagine sau imagini, import webfont în css și apoi doar schimba culoarea simbol folosind css atribut de culoare? Nu javascript necesare
Pentru a extinde pe @gringo răspuns, Javascript metoda descrisă în alte răspunsuri funcționează, dar necesită utilizatorul pentru a descărca inutile fișiere imagine, și OMI, se umflă, cod.
Cred că o abordare mai bună ar fi pentru a migra toate 1-culoare grafică vectorială pentru un webfont fișier. Am'am folosit Fort Minunat în trecut, și it works mare pentru a combina icoane personalizate/imagini în format SVG, împreună cu orice icoane 3rd party pot fi utilizați (Font Minunat, Bootstrap icoane, etc.) într-un singur webfont fișier utilizatorul trebuie să descărcați. Puteți personaliza, de asemenea,, așa că include numai icoane 3rd party te're folosind. Acest lucru reduce numărul de cereri pe pagina sa de a face, și te're de ansamblu pagina de greutate, mai ales daca're deja inclusiv icoane 3rd party biblioteci.
Dacă preferați o mai dev orientate opțiune, ai putea Google "npm svg webfont", și de a folosi una dintre nodul module care's cel mai adecvat pentru mediul dumneavoastră.
După ce, ai'am făcut oricare dintre aceste două opțiuni, atunci ai putea schimba cu ușurință culoarea prin CSS, și cel mai probabil,'am accelerat site-ului dvs. în proces.
Dacă sunteți doar la schimbarea imaginii între real color și alb-negru, puteți seta un selector fi:
{filtru:none;}
și un alt ca:
Deoarece SVG este de fapt codul, ai nevoie doar de continut. Am folosit PHP pentru a obține conținut, dar puteți folosi orice vrei.
Apoi, am'am tipărit conținutul "ca este" în interiorul unui container div
Pentru a finnaly set de reguli container's SVG childs pe CSS
Am primit acest rezultat cu un material SVG icon:
Mozilla Firefox 59.0.2 (64-bit) Linux
Google Chrome66.0.3359.181 (Build oficial) (64 de biți) Linux
Opera 53.0.2907.37 Linux
Principala problema in cazul tau este ca esti importul svg dintr-o
<img>
tag-ul, care va ascunde SVG structura.Ai nevoie de a utiliza
<svg> tag în legătură cu
pentru a obține efectul dorit. Pentru a face să funcționeze, aveți nevoie pentru a da un " id " de la calea pe care doriți să le utilizați în fișierul SVG
pentru a putea apoi să le recupereze de la
tag. Încercați indepartate de mai jos.Rețineți că puteți pune orice URL-ul înainte de a fragment
#
dacă doriți să încărcați SVG de la o sursă externă]1 (și nu de a o încorpora în HTML). De asemenea, de obicei, nu specificați umple în CSS. L's mai bine să ia în considerare utilizarea de completare:"currentColor", în SVG sine. Elementul corespunzător's de culoare CSS valoare va fi apoi folosit în loc.Știu asta este o întrebare veche, dar recent am dat peste aceeași problemă și am rezolvat-o de la partea de server. Acesta este un php specifice de răspuns, dar sunt sigur că alte envs au ceva similar. în loc de a folosi tag-ul img-ai face svg ca svg de la get-du-te.
acum, când face fișierul, veți obține complet inline svg
Acest lucru ar putea fi util pentru persoanele care folosesc "PHP", în combinație cu
.svg
imagini care vor să manipuleze cu CSS.Puteți't suprascrie proprietăți în interiorul unui tag-ul img cu CSS. Dar când svg codul sursă este încorporat în HTML cu siguranta pot. Îmi place pentru a rezolva această problemă cu o
require_once
funcție în cazul în care nu includ `.svg.php dosarul lui. L's place să importați o imagine, dar încă mai pot suprascrie stilurile cu CSS!Prima include fișierul svg:
Și include această pictogramă de exemplu:
Acum putem schimba cu ușurință culoarea de umplere ca asta cu CSS:
Am încercat în primul rând pentru a rezolva această problemă cu file_get_contents ()`, dar solutia de mai sus este mult mai rapid.
Simplu..
Puteți utiliza acest cod:
Prima specificați calea de svg și apoi scrie-l's de IDENTITATE, În acest caz "Capa_1". Puteți obține ID-ul de svg, deschizându-l în orice editor.
În css:
Dacă aveți acces la JQuery, apoi se extinde la Praveen's răspunsul se poate programatic schimbare de culoare de diferite elemente imbricate în interiorul SVG prin:
$('svg').găsi('cale, text').css('umple', '#ffffff');
În cadrul găsi, puteți menționa diferite elemente care trebuie să fie schimbat la culoare.