Operationen an Elementklassen und -stilen in JavaScript. Zusammenspiel von JavaScript und CSS Animationseffekte mit CSS erstellen

24.08.2023

Hallo zusammen! In diesem Artikel schauen wir uns an, wie man Stile in Javascript richtig und browserübergreifend setzt.

Diejenigen unter Ihnen, die sich bereits zumindest ein wenig mit Javascript auskennen, wissen, dass Elemente über eine Style-Eigenschaft verfügen, die ein Objekt speichert, mit dem Sie bestimmte CSS-Stile festlegen können. Allerdings ist nicht alles so einfach, wie es auf den ersten Blick scheinen mag. Und deshalb. Lassen Sie uns zwei ganz gewöhnliche Div-Blöcke erstellen, aber für den einen legen wir Stile über das style-Attribut und für den anderen über das style-Tag fest.


div(
Breite: 150px;
Höhe: 150px;
}

#div1 (
Hintergrund: #f00;
}


Versuchen wir nun, den Wert der Hintergrundeigenschaft für diese Blöcke anzuzeigen.

Var div1 = document.getElementById("div1");
var div2 = document.getElementById("div2");
alarm(div1.style.background);
alarm(div2.style.background);

Im ersten Fall erhalten wir nichts, aber für den div2-Block werden die Stile angezeigt. Warum? Die Sache ist, dass Javascript nur die Werte der Eigenschaften anzeigen kann, die direkt im HTML-Markup mithilfe des Style-Attributs festgelegt wurden, und derjenigen, die über Javascript festgelegt wurden. Wenn wir nun die Hintergrundeigenschaft so festlegen

Div1.style.background = "#f00";

Nun wird der Wert per Alert angezeigt.

Alert(div1.style.background);

Die gleichen Stile, die wir im Style-Tag oder in einem externen Stylesheet festlegen, werden „berechnete Stile“ oder „berechnete Stile“ genannt. Sie haben diesen Namen aus einem bestimmten Grund erhalten. Die Sache ist, dass der Browser zuerst das HTML-Markup liest, dann die Stile berechnet, die wir im externen Stylesheet festgelegt haben, und sie auf dieses Markup anwendet.

Wir können jedoch weiterhin darauf zugreifen. Die DOM Level2-Spezifikation hat etwas dafür: Spezialfunktion getComputedStyle() . Mal sehen, wie es funktioniert.

Var Styles = getComputedStyle(div1);
alarm(styles.background);

Sie müssen ihm das Element übergeben, dessen Stile Sie erhalten möchten, und es wird Ihnen ein Objekt zurückgegeben. Geben Sie nun einfach die Immobilie an, die Sie benötigen, und Sie erhalten sofort den Wert.

Diese Funktion funktioniert jedoch nicht mit älteren Browsern (IE8-). Wenn Sie also möchten, dass Ihr Code browserübergreifend kompatibel ist, verwenden Sie den folgenden Code.

Funktion getStyle(element) (
window.getComputedStyle zurückgeben? getComputedStyle(element) : element.currentStyle;
}

Die Verwendung ist ähnlich

Var-Stile = getStyle(div1); alarm(styles.background);

Heute haben wir gelernt, wie man mit Stilen in Javascript arbeitet und wie man Stile browserübergreifend erhält.

Guten Tag! In diesem Tutorial möchte ich darüber sprechen, wie Sie den Stil eines Elements auf einer Webseite mithilfe von JavaScript ändern können. Es muss gesagt werden, dass in JavaScript normalerweise zwei Ansätze verwendet werden, um mit Stilen zu arbeiten:

  • Ändern der Stileigenschaft
  • Den Klassenwert eines Elements ändern

Stil-Eigenschaft

Die style-Eigenschaft stellt die sogenannten Inline-Styles dar, die über das style-Attribut auf dem Element angezeigt werden. Legen wir beispielsweise die Schriftfarbe fest:

Var root1 = document.documentElement; // den Stil festlegen root1.style.color = "red"; // den Stilwert abrufen document.write(root1.style.color); // Rot

IN in diesem Beispiel Der Name der Farbeigenschaft ist derselbe wie die gleiche CSS-Eigenschaft. Analog dazu können Sie die Farbe per CSS einstellen:

HTML( Farbe: rot; )

Allerdings gilt dies für CSS-Eigenschaften, deren Name einen Bindestrich enthält, z. B. „font-size“. In JavaScript wird für diese Eigenschaften der Bindestrich entfernt und der erste Buchstabe nach dem Bindestrich als Großbuchstabe, also in Großbuchstaben, geschrieben

Var root1 = document.documentElement; root1.style.fontFamily = "Arial";

className-Eigenschaft. Arbeiten mit Klassen in JavaScript.

Mit einer Eigenschaft wie className können Sie das Klassenattribut einer beliebigen Klasse festlegen HTML-Element. Hier ist ein Beispiel:

.redStyle( color:red; Schriftfamilie:Arial; ) .article( Schriftgröße:22px; ) Artikeltitel

Erster Paragraph

Noch ein Absatz

var Article = document.querySelector("div.art"); // Eine neue Klasse festlegen Article.className = "redStyle"; // Den Klassennamen abrufen document.write(article.className);

Dadurch entfällt die Notwendigkeit, jede einzelne Eigenschaft mithilfe der Stileigenschaft zu konfigurieren.
Allerdings ist zu berücksichtigen, dass der bisherige Wert des Klassenattributs gelöscht wird. Wenn Sie also eine Klasse hinzufügen müssen, sollte diese mit der alten Klasse kombiniert werden:

Article.className = Article.className + "blueStyle";

Wenn Sie jedoch alle Klassen vollständig entfernen müssen, können Sie die Eigenschaft className einer leeren Zeichenfolge zuweisen:

ArticleDiv.className = "";

classList-Eigenschaft. Hinzufügen einer neuen Klasse zu einem Element.

Oben haben wir uns angeschaut, wie man Klassen zu einem Element auf einer Webseite hinzufügt, aber um eine große Anzahl von Klassen zu verwalten, ist es bequemer, eine andere Eigenschaft, classList, zu verwenden. Diese Eigenschaft ist ein Objekt, das die folgenden Methoden implementiert:

  • add(className): fügt einen Klassennamen hinzu
  • Remove(className): Entfernt die Klasse className
  • toggle(className): Ändert die Klasse des Elements zu className. Das heißt, wenn keine Klasse vorhanden ist, wird sie hinzugefügt, und wenn vorhanden, wird sie entfernt.

Var Article = document.querySelector("div.art"); // die Klasse entfernen Article.classList.remove("art"); // eine Klasse hinzufügen

Article.classList.add("redStyle"); // Klasse wechseln
Article.classList.toggle("art");

Ergebnisse.

Um eine Klasse festzulegen, verwenden Sie die className-Methode.

Um den Stil eines Elements über das Stilattribut festzulegen, wird die Stilmethode verwendet.

Um eine Klasse zu einem Element hinzuzufügen oder daraus zu entfernen, verwenden Sie die Methoden classList.add(className) und classList.remove(className).

Letzte Aktualisierung: 01.11.2015

Es gibt hauptsächlich zwei Ansätze für die Arbeit mit Elementstileigenschaften in JavaScript:

    Ändern der Stileigenschaft

    Ändern des Werts des Klassenattributs

Stil-Eigenschaft

Die style-Eigenschaft stellt ein komplexes Stilkontrollobjekt dar und wird direkt dem style-Attribut eines HTML-Elements zugeordnet. Dieses Objekt enthält eine Reihe von CSS-Eigenschaften: element.style.CSS-Eigenschaft. Legen wir beispielsweise die Schriftfarbe fest:

Var root = document.documentElement; // den Stil festlegen root.style.color = "blue"; // den Stilwert abrufen document.write(root.style.color); //Blau

In diesem Fall ist der Name der Farbeigenschaft mit dem Namen der CSS-Eigenschaft identisch. Ebenso könnten wir die Farbe per CSS festlegen:

HTML( Farbe:blau; )

Allerdings haben einige CSS-Eigenschaften einen Bindestrich im Namen, zum Beispiel „font-family“ . JavaScript verwendet für diese Eigenschaften keinen Bindestrich. Nur der erste Buchstabe nach dem Bindestrich wird in Großbuchstaben umgewandelt:

Var root = document.documentElement; root.style.fontFamily = "Verdana";

className-Eigenschaft

Mit der Eigenschaft className können Sie das Klassenattribut eines HTML-Elements festlegen. Zum Beispiel:

.blueStyle( Farbe:blau; Schriftfamilie:Verdana; ) .article( Schriftgröße:20px; ) Artikeltitel

Erster Paragraph

Zweiter Absatz

var ArticleDiv = document.querySelector("div.article"); // Eine neue Klasse festlegen ArticleDiv.className = "blueStyle"; // Den Klassennamen abrufen document.write(articleDiv.className);

Durch die Verwendung von Klassen müssen Sie nicht jede einzelne CSS-Eigenschaft mithilfe der Style-Eigenschaft konfigurieren.

Es muss jedoch berücksichtigt werden, dass der bisherige Wert des Klassenattributs gelöscht wird. Wenn wir also eine Klasse hinzufügen müssen, müssen wir ihren Namen mit dem der alten Klasse kombinieren:

ArticleDiv.className = ArticleDiv.className + "blueStyle";

Und wenn Sie alle Klassen vollständig entfernen müssen, können Sie der Eigenschaft eine leere Zeichenfolge zuweisen:

ArticleDiv.className = "";

classList-Eigenschaft

Wir haben oben besprochen, wie man Klassen zu einem Element hinzufügt, aber um mehrere Klassen zu verwalten, ist es viel bequemer, die Eigenschaft classList zu verwenden. Diese Eigenschaft stellt ein Objekt dar, das die folgenden Methoden implementiert:

    add(className): fügt einen Klassennamen hinzu

    remove(className) : Entfernt die Klasse className

    toggle(className) : Schaltet die Klasse des Elements auf className um. Wenn keine Klasse vorhanden ist, wird sie hinzugefügt, wenn vorhanden, wird sie entfernt

Zum Beispiel:

Var ArticleDiv = document.querySelector("div.article"); // entferne die Klasse ArticleDiv.classList.remove("article"); // die Klasse hinzufügen ArticleDiv.classList.add("blueStyle"); // Klasse umschalten ArticleDiv.classList.toggle("article");

Und was sagen sie, diese Stimmen. Eins und. Dasselbe: Ich bin der Verkäufer, ich bin der Verkäufer. Was werden Sie tun. Was kannst du tun.

Ja, Hydra-Zwiebel in Russland 2016. Und das bedeutet, dass Bull Gates keinen Kontakt herstellt. Funktioniert nicht. Oder vielleicht kommt er. Aber du verstehst es nicht. Vielleicht ist der Minotaurus die tote Ratte an der Decke. . Vielleicht so. Und sie haben dir nichts erklärt. Und das bedeutet ein besonderes Verfahren. Also tappte ich im Dunkeln. Arme Ziegen ... Na ja, egal, wir werden es herausfinden und die Übeltäter bestrafen. Es wird für sie sein Anleitung für Nigella-Sativa-Kerzen,

dreizehntes Gehalt in harter Währung ... Er hat es erhöht. Ich legte ein Notizbuch mit Dante Alighieris Profil auf dem Einband auf den Tisch und verbrachte einige Zeit damit, mich mit einem Stift auf das Papier zu konzentrieren, und ich vermutete sofort, dass er darin die gleichen Profile von Dante zeichnete, nur kleine. Aus irgendeinem Grund denken diese Leute, dass die Anweisungen für Nigella Sativa-Kerzen im Laufe des langen 20. Jahrhunderts ihre Arbeitsweise nicht studiert haben. Den Notizblock weglegen. Er trat auf mich zu, als wollte er mit seiner verspäteten Umarmung alle meine emotionalen Wunden heilen, doch dann klingelte das Telefon auf seinem Schreibtisch. Shmyga fluchte und nahm den Hörer ab. Er lauschte ein paar Sekunden lang, dann wurde sein Gesicht düster und aufmerksam. So genau, . Sagte er und legte auf. Er sah zu mir auf und warf schuldbewusst die Hände hoch. Sie sehen, was passiert.

Wunsch. Fahre fort, . Sagte Chapaev und erhob sich hinter dem Ecstasy-Hotel. Nachdem wir den Hauptquartierwagen verlassen hatten, gingen wir zum hinteren Teil des Zuges. Was geschah, kam mir immer seltsamer vor. Einige der Waggons, an denen wir vorbeikamen, waren dunkel und schienen dunkel zu sein. Leer. Es gab nirgendwo Licht; Hinter den Türen war kein einziges Geräusch zu hören. Das konnte ich kaum glauben, hinter den Walnussholzplatten, in deren polierter Oberfläche sich das Licht von Chapaevs Zigarre spiegelte. Der rote Soldat schläft, aber ich habe versucht, nicht darüber nachzudenken.

Bis 2003 japanische Spezialisten. Es gelang, einen Satz mehrerer Mikrosonden zu entwickeln, die das Gehirn direkt verbanden und es in gewissem Maße ermöglichten, das Bild der menschlichen Wahrnehmung zu objektivieren. Die japanische Ausrüstung konnte nicht genau feststellen, was die beobachtete Person fühlte und dachte. Aber es ermöglichte es, ein farbiges (wenn auch verschwommenes) Bild von dem zu bekommen, was er war Vape-Hydra. Und das nicht nur in der Realität, sondern auch in der schnellen Schlafphase. Dies wurde möglich, weil das Signal nicht vom Sehnerv, sondern von diesen Zonen aufgenommen wurde. Gehirne, die für die direkte Repräsentation verantwortlich sind. Die Ausrüstung wurde sofort von Potashinskys Team gekauft. Das Signal einer Reihe von im Gehirn implantierten Sonden könnte drahtlos übertragen werden. Verbindungen, die es dem Bablonauten ermöglichten, ein normales Leben zu führen, das in keiner Weise durch die Teilnahme am Experiment eingeschränkt wurde. Es war lediglich erforderlich, dass sich irgendwo in der Nähe ein Signalempfänger befand. Dieser übermittelte dann in Echtzeit Informationen an den Computer. Kurz gesagt sah das Schema von Potashinskys Experimenten so aus: Zunächst wurde ein Satz Steuerelektroden in das Gehirn des Bablonauten-Experimentators implantiert (für diese Rolle wurden wie üblich Freiwillige aus jungen FSB-Offizieren ausgewählt).

Von einem toten Punkt. Hör zu, Bruder“, sagte er, „was ist das für eine Natur?“ Worüber redest du? - fragte Isa. Nun, Sie haben im Auto gesagt, dass der Schrapnell-Splitterkörper die gleiche Beschaffenheit hat wie der Regenbogenkörper. Und was ist das für eine Natur? Fragen Sie besser nicht danach. „Bruder“, Isa runzelte die Stirn. Warum. Dafür sind Sie noch nicht bereit. Wie nicht bereit. Und gleichzeitig Amphetamin und Marihuana. Wenn ich bereit wäre, würde ich nicht fragen. So können Sie antworten. Oder.

Bald. fragte. Kaufen Sie jetzt Haschisch in Wladiwostok, sagte ich, hier... Da ist jemand wählerisch. Ein Liebhaber könnte sich darüber ärgern, dass er nicht weiter als bis zum Netzwerkflur darf. Aber Porfiry ist nicht so. Das erste, was ich tat, war, mich an ihre Ogment-Brille anzuschließen. Gut, sagte sie. Was für Koteletten... In der Zwischenzeit stelle ich ein Bild der Brille auf die Tafel. Verwandeln Sie es mit einem Blick von der Deckenkamera. Ifak ​​erhöhte alle Morphs, ohne seine Kraft zu strapazieren. Es war ungeheuerlich. Jetzt sah Mara mich in ihrer Ogment-Brille anstelle des Aifak und konnte gleichzeitig beobachten.

Eine entwickelte Chiffre. Manchmal bemerkte er, dass er erneut von wiederkehrenden Träumen nach Schema 1 gequält wurde. Oder nach Schema 2. Und plötzlich, im Klartext, wie ein Schrei, der ihm entschlüpfte: Geträumt Räuchermischungen rund um die Uhr, von mir in meiner Kindheit getötet ... Eine Stimme hinter dem Bildschirm. Er verstummte. Was macht Sie? - fragte Sam. „Ich bin eingeschlafen“, antwortete Natascha. Sam streichelte sanft die stachelige Spitze ihres Bauches und lehnte sich auf dem Sofa zurück. Natasha schluckte leise. Sam zog die Kiste auf dem Boden zu sich heran, öffnete sie und holte eine kleine Glasvitrine heraus. Er spuckte das Glas rot hinein, schraubte es zu und warf es zurück – dieser ganze Vorgang dauerte Sekunden, bis er rund um die Uhr Mischungen rauchte. „Weißt du, Natasha“, sagte er.

Danach er Haschisch-Heiliger Hey, Tatarsky. Keine Antwort. Tatarsky wartete noch eine Minute und merkte, dass er allein gelassen wurde. Allein mit seinem Geist, der bereit ist, wild zu werden. Ich musste mich dringend mit etwas beschäftigen. „Ruf an“, flüsterte er. - An wen. Gireev. Er weiß, was zu tun ist. Lange Zeit. Niemand ging ans Telefon. Schließlich, beim fünfzehnten oder zwanzigsten Klingeln, antwortete Gireev düster: Hallo. Andryusha.

Nein, sagte er. In einem verschlossenen Raum sitzt ein Mann, der kein Chinesisch kann. Durch das Fenster geben sie ihm Zettel mit Fragen auf Chinesisch. Für ihn sind das nur Zettel mit aufgemalten Kringeln, deren Bedeutung er nicht versteht. Aber sein Zimmer ist voller verschiedener Bücher. Regeln, die detailliert beschreiben, wie und in welcher Reihenfolge mit nur Kringeln geantwortet werden soll. Und nach diesen Regeln gibt er in einem anderen Fenster Antworten auf Chinesisch. Sie schaffen bei jedem, der draußen steht, das volle Vertrauen, dass er Chinesisch kann. Obwohl er selbst überhaupt nicht versteht, wonach sie ihn fragen. Adressieren Sie den Hydra-Zwiebel-Browser, was die Bedeutung seiner Antworten bedeutet. Eingeführt. Nun, ich habe es vorgestellt. Sura ist derselbe chinesische Raum, nur automatisiert. Anstelle einer Person mit Nachschlagewerken gibt es einen Scanner, der Hieroglyphen liest. Eine riesige Datenbank mit Referenzen und Regeln, die es Ihnen ermöglichen, Hieroglyphen für die Antwort auszuwählen.

Ironischerweise war es genau das, was mir Klarheit verschaffte. Zumindest in praktischer Hinsicht. Mir wurde klar, vor welchem ​​Problem ich stand. Es ist nicht nur komplex, es ist schwer fassbar. Es war schwierig, die damit verbundenen Fragen überhaupt richtig zu formulieren. Der einzige Trost schien zu sein, wie man die Hydra-Stätte in der Torus-Sprache findet, die Situation war genauso heikel. Mit menschlichem Bewusstsein. Ich konnte damit nicht umgehen. Und ich entschied, dass der beste Ausweg aus der Situation die Rückkehr wäre. Weitermachen wie bisher, existentielle Übungen auf später verschieben oder vergessen.

Bald führte die Straße zu einem reichen Dorf mit einer frisch gestrichenen weißen Kirche. Ein trauriger, einbeiniger Soldat in einer verblichenen grauen Uniform saß in der Nähe des Kirchenzauns. Sie wissen nicht, wo Optina Pustyn ist. fragte T. und beugte sich vom Pferd zu ihm. Darüber reden die Jungs. fragte der Soldat. Das vor kurzem als Einrichtung gegründet wurde. Ich kam zu dem Schluss, dass der Soldat den Verstand verloren hatte. Wie dieser Ort kürzlich eingerichtet wurde. Was auf jeden Fall bedeutet, dass alles in Ordnung ist, Euer Ehren, sagte der Soldat und Hydra-Roulette Hand, du wirst noch weit weg sein. Hier gibt es nur zwei Straßen, und beide führen in eine Richtung. Nehmen Sie die erste oder die zweite Route. Wenn Sie eine kürzere Route wünschen, dann durch den Wald. Dort gibt es eine Gabelung, sodass Sie beide Seiten nehmen können.

Und andere Grimassen, von denen Sie, glaube ich, schon viel gehört haben ... Lena verstand nicht, was für ein Vater-Mutter-Narr achtzehn war (der junge Mann murmelte diese Worte schnell und leise), vergaß es aber sofort - sie plötzlich wollte sie so viel Wein im Wert von zwanzigtausend Euro trinken, dass ihr das Wasser im Mund zusammenlief. Ein leiser Seufzer ging durch die Halle und bestätigte, dass die Versammelten nicht nur von Grimassen gehört hatten. Und es ist uns gelungen, alle über sie verfügbaren Informationen im Detail zu studieren. IN In letzter Zeit Westliche Geheimdienste haben eine regelrechte Jagd auf unsere reichen Trottel gestartet“, fuhr der junge Mann fort. - Sie haben natürlich von den großen Skandalen gehört Adresse von Hydra Onion TK Okey Site Hydra im Torus Verhaftungen: zuerst Courchevel, dann Fidschi, dann die Hermes-Boutique und jetzt St. Moritz, die Malediven und die Antarktis. Die Kampagne ist sorgfältig geplant und hat zwei Hauptziele: erstens die Diskreditierung. Russische Zivilisation – um die Kontrolle über ihre Ressourcen zu erlangen, indem sie kompromittierende Beweise über die Eigentümer ihrer wichtigsten Vermögenswerte sammelt. Unsere Elite ist zum Ziel geworden, und die objektive Realität des aktuellen Punktes in der Raumzeit ist so. Mit ihr wurden wir zur Zielscheibe. Stirnrunzelnd verstummte er, als wollte er seinen Zuhörern Gelegenheit geben, den Ernst der Lage zu erkennen. Dann kehrte das traurige Lächeln auf sein Gesicht zurück und er fuhr fort: Wir müssen die Situation unter Kontrolle halten.

Sie grinste. Zumindest muss man vor den eigenen Leuten nicht so tun, als wäre man in seiner Unschuld beleidigt. Worüber. Als ich ihn provozierte. Als sie nackt heraussprang Eingang zur Hydra-Zwiebel und stand im Doggystyle vor ihm. Sie halten das für eine Provokation. Sicherlich. Warum, frage ich mich, hast du ihm den Rücken gekehrt? Ich zuckte mit den Schultern. Für Zuverlässigkeit. Was ist daran besonders zuverlässig? „Der Schwanz ist näher am Ziel“, sagte ich nicht ganz sicher. Also. Und man muss über die Schulter schauen.

Dritte Montal-Vanille-Ecstasy wie folgt: An Seine Exzellenz O. Konstantin Petrowitsch Pobedonostsew, Beamter. Hiermit übermittle ich Eurer Exzellenz eine Übersetzung einer altägyptischen Inschrift. Ein Blatt Goldblatt, das in einem Medaillon gefunden wurde Montal-Vanille-Ecstasy die Leiche von Pater Varsonofiy Netrebko im Rahmen der Ermittlungen im Fall des Grafen T. Laut Spezialisten des Ägyptischen Museums lässt sich der Text anhand der Umrisse der Hieroglyphen auf die Zeit der 18. Dynastie oder etwas später datieren. Die Inschrift lautet: Der geheime Name des Hermaphroditen mit dem Katzenkopf, der Macht über ihn verleiht, ist die Essenz. ANGC. Wenn Sie einen Hermaphroditen mit diesem Namen kontrollieren können. Bußgeld. Übersetzer, die ANGC auch als traditionelles BHGV übersetzen können (oder anders, abhängig von der Wahl der Korrespondenztabellen bei Verwendung von Hieroglyphenregistern). Das Medaillon selbst kann jedoch trotz Ihres Wunsches nicht an Ihre Exzellenz übertragen werden.

Beitragsnavigation

In diesem Artikel betrachten wir verschiedene Methoden zum Arbeiten mit Elementklassen und -stilen. Machen wir uns mit den Eigenschaften classList und style sowie Beispielen für deren Verwendung zum Verwalten der Klassen bzw. Stile von Elementen auf der Seite vertraut.

Elementklasse(n) verwalten

Die erste Möglichkeit, mit Elementklassen zu interagieren, ist die Verwendung der DOM-Eigenschaft className. Diese Eigenschaft spiegelt das Klassenattribut im DOM wider. Die DOM-Eigenschaft „className“ wurde nicht „class“ genannt, da reservierte Wörter bisher in JavaScript nicht zum Benennen von Objekteigenschaften verwendet werden konnten. Wenn Sie nicht wissen, was DOM-Eigenschaften sind und wie sie sich von Attributen unterscheiden, können Sie dies in diesem Artikel nachlesen.

Ein Beispiel, in dem wir mithilfe der DOM-Eigenschaft className verschiedene Operationen an einer Elementklasse ausführen:

var elem = document.querySelector("#alert"); // eine Klasse zum Element hinzufügen elem.className = "alert"; // „alert“ // die Klasse des Elements ändern elem.className = „alert-warning“; // "alert-warning" // Klassenwert abrufen und in className speichern var classElem = elem.className; // "alert-warning" // Klasse aus dem Element entfernen elem.className = ""; // ""

Die zweite Möglichkeit, mit der Klasse eines Elements verknüpfte Operationen auszuführen, besteht darin, Methoden zur Manipulation von Attributen zu verwenden.

Ein Beispiel, in dem wir die gleichen Aktionen wie im obigen Code ausführen, jedoch Methoden zum Verwalten von Attributen verwenden:

var elem = document.querySelector("#alert"); // eine Klasse zum Element hinzufügen elem.setAttribute("class", "alert"); // die Klasse des Elements ändern elem.setAttribute("class", "alert-warning"); // Holen Sie sich den Klassenwert und speichern Sie ihn in className var classElem = elem.getAttribute("class"); // "alert-warning" // Klasse aus dem Element entfernen elem.removeAttribute("class");

Die DOM-Eigenschaft className und das Klassenattribut sind immer miteinander synchronisiert, was bedeutet, dass sich bei einer Änderung auch die andere ändert.

Ein Element kann jedoch mehr als eine Klasse haben, aber mehrere. In diesem Fall ist es nicht sehr praktisch, mit ihnen als String zu arbeiten.

Beispielsweise ist die Bestimmung des Vorhandenseins einer bestimmten Klasse in einem Element mit den oben genannten Methoden nicht mehr so ​​einfach möglich. Dazu muss etwas Code geschrieben werden.

Ein Beispiel, in dem wir prüfen, ob ein Element die Klasse content__show hat:

... var elem = document.querySelector("#content"); if ((" " + elem.className + " ").indexOf(" content__show ") > -1) ( // das Element hat die content__show-Klasse) else ( // das Element hat nicht die content__show-Klasse)

Aber neben dieser Situation gibt es noch andere. Zum Beispiel, wenn Sie einem Element eine bestimmte Klasse hinzufügen oder entfernen müssen. Um diese und andere Aktionen sehr einfach durchführen zu können, verfügt das Element über eine spezielle DOM-Eigenschaft classList für diese Fälle.

classList-Eigenschaft

Die classList-Eigenschaft ist ein spezielles Objekt (DOMTokenList), das Methoden zum Ausführen verschiedener Operationen an den Klassen des Elements enthält.

classList-Methoden:

  • .add(className1[,className2,...]) – fügt dem Element eine oder mehrere angegebene Klassen hinzu. Wenn ein Element bereits über diese Klasse verfügt, wird es nicht hinzugefügt.
  • .remove(className1[,className2,... ]) – entfernt eine oder mehrere angegebene Klassen aus einem Element. Wenn das Element nicht über die Klasse verfügt, die Sie entfernen möchten, wird keine Aktion ausgeführt.
  • .contains(className) – prüft, ob ein Element eine Klasse hat; gibt als Antwort true oder false zurück.
  • .toggle(className [,flag]) – schaltet den angegebenen Klassennamen des Elements um, d. h. Wenn das Element diese Klasse hat, wird es entfernt; sonst fügt hinzu. Der zweite Parameter (Flag) ist optional. Standardmäßig ist es undefiniert. Wenn Sie es auf true oder false setzen, funktioniert es wie die Add- oder Remove-Methode, d. h. Fügen Sie entweder eine Klasse zu einem Element hinzu oder entfernen Sie eine davon.

Ein Beispiel, das zeigt, wie Sie mithilfe von classList-Methoden verschiedene Aktionen im Zusammenhang mit Elementklassen ausführen können:

// Holen Sie sich das Element mit id = "sidebar" var sideBar = document.querySelector("#sidebar"); // die Hidden-XS-Klasse des Elements wechseln, d. h. Wenn das Element es hat, entfernen Sie es. und wenn diese Klasse nicht existiert, fügen Sie sie hinzu sideBar.classList.toogle("hidden-xs"); // drei zusätzliche Klassen zur SideBar hinzufügen element.classList.add("col-xs-6", "col-sm-4", "col-md-3"); // die Hidden-Xs-Klasse aus der SideBar entfernen element.classList.remove("hidden-xs"); // Überprüfen Sie, ob das Element eine Hidden-LG-Klasse hat und wenn ja, fügen Sie ihm ein weiteres Hidden-MD hinzu if (sideBar.classList.contains("hidden-lg") ( myID.classList.add("hidden-md" ; )

Das classList-Objekt ist ein Pseudo-Array, d. h. es kann als Array iteriert werden.

Ein Beispiel, in dem wir alle Klassen von classList durchlaufen:

... var content = document.querySelector(".content"); // Option Nr. 1. Mit Hilfe for-Schleife// classList.length – Anzahl der Klassen für ein Element // Klassen in classList werden ab 0 gezählt für (var i = 0, length = content.classList.length; i< length; i++) { // i - индекс класса в classList // выведем класс в консоль console.log(content.classList[i]); // или так (с помощью метода item) console.log(content.classList.item(i)); } // если мы хотим получить класс по его индексу, а указали в качестве значения индекса число, которое больше, чем (количества элементов - 1) в classList (т.к. отсчет ведётся с 0), то в этом случае получим в качестве результата undefined console.log(content.classList); // undefined // Вариант №2. С помощью цикла for..of for (let className of content.classList) { // выведем класс в консоль console.log(className); }

Die Eigenschaft classList wird von allen modernen Browsern unterstützt. Wenn Sie Unterstützung für sehr alte Browser benötigen (z. B. Internet Explorer 8, 9), dann können Sie in diesem Fall eine Art Polyfill verwenden.

Elementstile

Im DOM verfügt jedes Element über eine Style-Eigenschaft, mit der wir seine Stile steuern können. Bedeutung dieser Immobilie ist ein schreibgeschütztes Objekt. Das Festlegen von Stilen für ein Element erfolgt in diesem Fall durch das Hinzufügen geeigneter Eigenschaften.

Ein Beispiel dafür, wie Sie über die DOM-Stileigenschaft Stile zu einem Element hinzufügen können:

Quadrat var quadrat = document.querySelector(".square"); quadratisch.style.width = "170px"; quadratisch.style.height = "170px"; quadrat.backgroundColor = "grün";

Die Namen der Eigenschaften des Stilobjekts stimmen normalerweise mit den Namen der CSS-Eigenschaften überein. Die einzigen Ausnahmen sind die CSS-Eigenschaften, die einen Bindestrich verwenden. Zum Beispiel Hintergrundfarbe . In diesem Fall werden der Bindestrich und der darauf folgende Buchstabe durch Großbuchstaben ersetzt. Beispielsweise würde die CSS-Eigenschaft „Hintergrundfarbe“ für ein Stilobjekt als „Hintergrundfarbe“ angegeben werden. Und zum Beispiel eine CSS-Eigenschaft mit dem Browser-Präfix -webkit-border-radius – wie WebkitBorderRadius.

Stile entfernen

Stellen wir beispielsweise für den Körper eine Hintergrundfarbe ein:

Document.body.style.backgroundColor = "#eee";

Wenn wir diesen Stil nun entfernen müssen, müssen wir ihm dazu einfach einen leeren String zuweisen:

Document.body.style.backgroundColor = "";

Beispiele für die Verwendung der DOM-Style-Eigenschaft zum Festlegen von Stilen für Elemente.

// Setze die Textfarbe für das Element mit id = „introtext“ mithilfe des Stils auf Rot. document.querySelector("#introtext").style.color = "red"; // alle p-Elemente auf der Seite mit dem Stil festlegen, um die Textfarbe auf Grün zu setzen var absätze = document.querySelectorAll("p"); für (var i = 0, Länge = Absätze.Länge; i< length; i++) { paragraphs[i].style.backgroundColor = "green"; } // выведем в консоль все CSS-Eigenschaften Element mit Bezeichner „introtext“ var styleElem = document.querySelector("#introtext").style; for (var i = 0, length = styleElem.length; i< length; i++) { console.log(styleElem[i]); }

cssText-Eigenschaft

Neben der individuellen Festlegung von Stilen für ein Element können wir diese auch sofort mithilfe der speziellen Eigenschaft style.cssText festlegen. Dies geschieht, indem dieser Eigenschaft eine Zeichenfolge zugewiesen wird, die aus einer Reihe von Stilen besteht, die durch ein Semikolon getrennt sind. Diese. Dies geschieht auf ähnliche Weise wie wir Stile im HTML-Stilattribut festlegen.

Ein Beispiel, in dem wir die Stile „font-size:40px; color:blue;“ festlegen Elemente mit der Intro-Klasse:

// Elemente mit der Intro-Klasse abrufen var intro = document.querySelectorAll("intro"); //set „font-size:40px; color:blue;“ alle Elemente in der Sammlung enthalten in intro for (var i = 0, length = intro.length; i< length; i++) { intro[i].style.cssText = "font-size:40px; color:blue;"; }

Sie müssen beim Festlegen von Stilen mithilfe der style.cssText-Eigenschaft vorsichtig sein. Dies liegt daran, dass diese Eigenschaft bei Festlegung alle Stile des Elements entfernt. Diese. diejenigen, die wir mit dem style-Attribut und in der entsprechenden DOM-Eigenschaft dafür festgelegt haben.

Sie können mit der setAttribute-Methode auch einen Vorgang ausführen, der dem der Eigenschaft style.cssText ähnelt.

Zum Beispiel:

//Erstes Element mit der Intro-Klasse abrufen var info = document.querySelector("info"); //setze es auf den Stil „margin: 10px; padding: 10px; border: 1px solid green;“ info.setAttribute("style", "margin: 10px; padding: 10px; border: 1px solid green;");

Aufgaben

1. Schreiben Sie ein Skript mit classList, um einem Element mit der Textklasse drei Klassen zuzuweisen: size-40 , color-red und bg-gelb:

.size-40 (Schriftgröße: 40px;) .color-red (Farbe: rot;) .bg-gelb (Hintergrund: gelb;)

Etwas Text...

2. Schreiben Sie Code, um den Stil „width: 180px; height: 180px;“ festzulegen. Alle Elemente auf der Seite mit einer Klasse, die mit den Wörtern block- beginnt.