So ändern Sie die CSS :Farbe der Rübe Variablen in JavaScript

Okay, ich bin momentan dabei, ein system für meine Webseite, die es Nutzern erlaubt, das theme zu verändern. Wie will ich dies erreichen indem alle die Farben als Variablen, und die Farben sind festgelegt in der :root-Teil des CSS.

Was ich will zu tun ist, ändern Sie die Farben von via JavaScript. Ich sah, wie es zu tun, aber nichts, was ich versuchte tatsächlich funktioniert. Hier ist meine aktuelle code:

CSS:

:root {
  --main-color: #317EEB;
  --hover-color: #2764BA;
  --body-color: #E0E0E0;
  --box-color: white;
}

JS:

(Code, um das Thema gesetzt, es lief auf das klicken auf eine Schaltfläche) - ich wollte nicht stören hinzufügen :root ändern, um die anderen 2 Themen, da es nicht funktioniert auf das Dunkle Thema

function setTheme(theme) {
  if (theme == 'Dark') {
    localStorage.setItem('panelTheme', theme);
    $('#current-theme').text(theme);
    $(':root').css('--main-color', '#000000');
  }
  if (theme == 'Blue') {
    localStorage.setItem('panelTheme',  'Blue');
    $('#current-theme').text('Blue');
    alert("Blue");
  }
  if (theme == 'Green') {
    localStorage.setItem('panelTheme', 'Green');
    $('#current-theme').text('Green');
    alert("Green");
  }
}

(Code, der lief, wenn der html-Code wird geladen)

function loadTheme() {
  //Add this to body onload, gets the current theme. If panelTheme is empty, defaults to blue.
  if (localStorage.getItem('panelTheme') == '') {
    setTheme('Blue');
  } else {
    setTheme(localStorage.getItem('panelTheme'));
    $('#current-theme').text(localStorage.getItem('panelTheme'));
  }
}

Es zeigt die Warnung, aber nicht wirklich etwas ändern. Kann mir jemand zeigen in die richtige Richtung?

  • Ist Ihr js-in ausgeführt, wenn das Dokument fertig ist? Wie stellen Sie fest, dass es 'nichts ändern'? Ändern Sie Ihr Beispiel, um etwas näher an eine minimale reproduzierbare Beispiel
  • Aktualisiert der OP mit mehr code, sorry.
  • Es ist immer noch nicht klar, was Sie erwarten, sich zu ändern. zum Beispiel auf Ihrer Konsole, die Sie eingeben können, sagen wir, $(':root').css("background-color", "#000000") und sehen die Dinge zu ändern. Wenn also mal etwas optische Veränderung findet nicht statt, das problem ist wahrscheinlich nicht deine code (es sei denn, es läuft vor dem Dokument bereit)
  • Ich möchte die Farbe ändern der Variablen mit JS. Zum Beispiel, in meinem Beispiel versuche ich zu ändern-main-Farbe aus #317EEB auf #000000.
  • Öffnen Sie die Konsole. Führen Sie die Anweisung zum festlegen der Farbe. Führen Sie eine Anweisung, die zum Abfragen der Farbe. Sehen Sie, wenn Sie bekommen, was Sie festlegen.
  • Ich fragte "--main-color" und bekam "#\33 17EEB" zurückgegeben. Bei mir lief der code, um die Farbe zu ändern, es gibt einige HTML-code-dann ändert sich nichts. Wenn ich die Abfrage der Farbe, nachdem ich versuchen, es zu ändern, gibt es das gleiche, was es ursprünglich Tat.
  • Ich weiß wirklich nicht genau, was jquery mit css-Variablen, die eine relativ neue Ergänzung. Siehe das Beispiel für die Manipulation von Ihnen, ohne jq. Wenn Ihr browser neu genug ist, wo Sie Sie bitten, für css-var-Unterstützung, werden Sie wahrscheinlich nicht brauchen, jq sowieso. codepen.io/wesbos/pen/adQjoY

InformationsquelleAutor Daedalus | 2016-06-14
Schreibe einen Kommentar