1296 Stimmen

Wie kann ich die Farbe eines 'svg'-Elements ändern?

Ich möchte diese Technik verwenden und die Farbe des SVG ändern, aber bisher war ich dazu nicht in der Lage. Ich benutze dies im CSS, aber mein Bild ist immer schwarz, egal was ich mache.

Mein Code:

.change-my-color {
  fill: green;
}

1 Stimmen

Ich bin kein SVG-Experte, aber hast du versucht, fill in background-color zu ändern?

7 Stimmen

@Megan Im svg wird die Hintergrundfarbe mit der 'fill'-Eigenschaft und der Rand mit 'stroke' (wie in Illustrator) festgelegt. w3.org/TR/SVG/propidx.html

21 Stimmen

CSS aus Ihrem HTML-Dokument wird nicht auf SVG-Elemente innerhalb von angewendet.

13voto

Michael Philips Punkte 2530

Ziele auf den Pfad innerhalb des 'svg'-Tags:

   ....

Du kannst es inline machen, wie:

Oder

svg{
   path{
        fill: #ccc

0 Stimmen

Der OP war sich des fill-Attributs bewusst, fragte aber nach einer Lösung, die mit -Elementen funktioniert.

13voto

warfish Punkte 461

Sie können versuchen, es mit diesem CSS-Filter-Hack zu färben:

.colorize-pink {
  filter: brightness(0.5) sepia(1) hue-rotate(-70deg) saturate(5);
}

.colorize-navy {
  filter: brightness(0.2) sepia(1) hue-rotate(180deg) saturate(5);
}

.colorize-blue {
  filter: brightness(0.5) sepia(1) hue-rotate(140deg) saturate(6);
}

0 Stimmen

Bereits 2018 von Manish Menaria vorgeschlagen.

13voto

Sethu Sathyan Punkte 197

Um die Farbe der SVG-Datei einfach zu ändern:

Gehen Sie zur SVG-Datei und erwähnen Sie unter Styles die Farbe im Füllbereich:

.cls-1{fill: #FFFFFF;}

1 Stimmen

Bereits vorgeschlagen von dieser Antwort

0 Stimmen

Funktioniert nicht für Elemente, wie vom OP gefragt.

12voto

2022 Web-Komponente Antwort

Diese (7 Zeilen) native Web-Komponente (JSWC) lädt externen Inhalt und fügt ihn in das DOM ein.

Sie wird in meinem DEV-Blog-Beitrag erklärt und dokumentiert: Web-Komponente.

Vollständiger Quellcode:

customElements.define("load-file", class extends HTMLElement {

  // declare default connectedCallback as sync so await can be used
  async connectedCallback(
      // call connectedCallback with parameter to *replace* SVG (of  persists)
      src = this.getAttribute("src"),
    // attach a shadowRoot if none exists (prevents displaying error when moving Nodes)
    // declare as parameter to save 4 Bytes: 'let '
    shadowRoot = this.shadowRoot || this.attachShadow({mode:"open"})
  ) {
      // load SVG file from src="" async, parse to text, add to shadowRoot.innerHTML
    shadowRoot.innerHTML = await (await fetch(src)).text()

    // append optional  Elements from inside  after parsed 
    shadowRoot.append(...this.querySelectorAll("[shadowRoot]"))

    // if "replaceWith" attribute
    // then replace  with loaded content 
    // childNodes instead of children to include #textNodes also
    this.hasAttribute("replaceWith") && this.replaceWith(...shadowRoot.childNodes)
  }
})

    svg {
      height: 180px; /* Stack Overflow subwindow height */
    }
    path:nth-child(2n+2) {
      fill: GREEN; /* shadowDOM style does NOT style global DOM */
    }

0 Stimmen

Wow das ist schnell, einfach und hat keinerlei Umsetzungsprobleme (im Vergleich zu anderen Lösungen, basierend auf den Eigenschaften meines Projekts).

0 Stimmen

11voto

MD SHAYON Punkte 6992
  1. Methode 1

    Der einfache und effektive Weg:

    Öffnen Sie Ihre .svg-Datei mit einem Texteditor

    Geben Sie ein style-Attribut und füllen Sie es mit Farbe.

  2. Ein anderer Weg

    Füllen Sie Ihre Form mit Farbe. Hier habe ich rect Form fill="white".

            hintergrund

0 Stimmen

Der OP war sich der Attribute bewusst, fragte aber nach einer Lösung, die mit -Elementen funktioniert.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X