JavaScript und CSS bestehen seit mehr als 20 Jahren nebeneinander. Es war jedoch sehr schwierig, Daten zwischen ihnen zu teilen. Natürlich gab es viele Versuche, aber ich habe einen einfachen und intuitiven Ansatz gefunden - anstatt die Struktur zu ?ndern und CSS -benutzerdefinierte Eigenschaften oder sogar SASS -Variablen zu nutzen.
CSS -benutzerdefinierte Eigenschaften und JavaScript
Die CSS -benutzerdefinierten Eigenschaften hier sollten nicht zu überraschend sein. Sie konnten Werte mit JavaScript festlegen und manipulieren, seit die Browser mit der Unterstützung benutzerdefinierter Eigenschaften begannen.
Insbesondere k?nnen wir JavaScript mit benutzerdefinierten Eigenschaften auf verschiedene Weise verwenden. Wir k?nnen setProperty
verwenden, um den Wert einer benutzerdefinierten Eigenschaft festzulegen:
document.documentElement.style.setProperty ("-padding", 124 "px"); // 124px
Wir k?nnen auch CSS -Variablen mit getComputedStyle
in JavaScript abrufen. Die Logik dahinter ist recht einfach: Benutzerdefinierte Eigenschaften sind Teil des Stils, daher sind sie auch Teil des berechneten Stils.
getComputedStyle (document.documentElement) .getPropertyValue ('-padding') // 124px
getPropertyValue
ist auch eine ?hnliche M?glichkeit, damit umzugehen, sodass wir benutzerdefinierte Eigenschaftswerte von Inline -Stilen von HTML -Tags abrufen k?nnen.
document.documentElement.style.getPropertyValue ("-Padding"); // 124px
Beachten Sie, dass benutzerdefinierte Eigenschaften skopiert werden. Dies bedeutet, dass wir den berechneten Stil aus einem bestimmten Element erhalten müssen. Da wir Variablen in :root
zuvor definiert haben, erhalten wir sie auf HTML -Elemente.
SASS -Variablen und JavaScript
Sass ist eine Vorverarbeitungssprache, was bedeutet, dass sie in CSS konvertiert wird, bevor sie Teil einer Website wird. Daher k?nnen sie nicht von JavaScript wie CSS -benutzerdefinierten Eigenschaften (zugegriffen als berechnete Stile im DOM) zugegriffen werden.
Wir müssen den Build -Prozess ?ndern, um dies zu ?ndern. Ich vermute, dass dies in den meisten F?llen nicht erforderlich ist, da der Lader normalerweise bereits Teil des Build -Prozesses ist. Wenn dies jedoch bei Ihrem Projekt nicht der Fall ist, ben?tigen wir drei Module, mit denen Sass -Module importiert und konvertiert werden k?nnen.
Hier ist ein Beispiel in der Webpack -Konfiguration:
module.exports = { // ... Modul: { Regeln: [ { Test: /\.scss$/,, Verwendung: ["Style-Loader", "CSS-Lader", "Sass-Loader"] }, // ... ] } };
Um SASS (oder insbesondere hier SCSS) -Variablen für JavaScript zur Verfügung zu stellen, müssen wir sie "exportieren".
// variablen.scss $ Primary-Color: #Fe4e5e; $ Hintergrundfarbe: #fefefe; $ padding: 124px; : exportieren { Prim?rkolor: $ Primary-Color; BackgroundColor: $ Hintergrundfarbe; Polsterung: $ Polsterung; }
:export
ist das Magic WebPack, um Variablen zu importieren. Der Vorteil dieses Ansatzes besteht darin, dass wir die Variablen mit Camel -Nomenklatur umbenennen und ausw?hlen k?nnen, was offenbar ist.
Anschlie?end importieren wir die SASS -Datei ( variables.scss
) in JavaScript, sodass wir in der Datei definierte Variablen zugreifen k?nnen.
Variablen von './variables.scss' importieren; /* { PrimaryColor: "#Fe4e5e" BackgroundColor: "#fefefe" Polsterung: "124px" } */ document.getElementById ("App"). style.padding = variablen.padding;
:export
hat einige bemerkenswerte Einschr?nkungen:
- Es muss auf der obersten Ebene sein, kann aber überall in der Datei sein.
- Wenn eine Datei mehrfach vorhanden ist, werden die Schlüssel und Werte zusammen kombiniert und exportiert.
- Wenn ein
exportedKey
wiederholt wird, hat der letzte (in Quellenreihenfolge) Vorrang. -
exportedValue
kann alle Zeichen (einschlie?lich Leerzeichen) enthalten, die im CSS -Deklarationswert gültig sind. -
exportedValue
erfordert keine Zitate, da es bereits als w?rtliche Zeichenfolge angesehen wird.
Es gibt viele M?glichkeiten, den Zugriff auf SASS -Variablen in JavaScript zu nutzen. Ich neige dazu, diese Methode zu verwenden, um Haltepunkte zu teilen. Hier ist meine breakpoints.scss
-Datei, die ich sp?ter in JavaScript importieren werde, damit ich mit matchMedia()
-Methode konsistente Haltepunkte erhalten kann.
// SASS -Variable $ Breakpoints, die den Haltepunktwert definieren: (( Mobile: 375px, Tablet: 768px, // usw. ); // SASS -Variable $ medien zum Schreiben von Medienabfragen verwendet: (( Mobile: '(max-Width: #{map-Get ($ Breakpoints, Mobile)})', Tablet: '(Max-Width: #{map-Get ($ Breakpoints, Tablet)})',, // usw. ); // Exportmodul exportieren, das SASS -Variablen in JavaScript zug?nglich machen: exportieren { Breakpointmobile: unquote (MAP-Get ($ media, mobil)); BreakpointTablet: unquote (MAP-Get ($ media, Tablet)); // usw. }
Animation ist ein weiterer Anwendungsfall. Die Dauer einer Animation wird normalerweise in CSS gespeichert, aber komplexere Animationen erfordern die Hilfe von JavaScript.
// Animation.scss $ Global-Animation-Duration: 300 ms; $ global-Animation-?stlich: Easy-In-Out; : exportieren { AnimationDuration: Strip-Unit ($ Global-Animationsdauer); AnimationEassing: $ global-Animation-?ses; }
Beachten Sie, dass ich beim Exportieren von Variablen eine benutzerdefinierte strip-unit
-Funktion verwendet habe. Auf diese Weise kann ich Inhalte auf der JavaScript -Seite problemlos analysieren.
// main.js document.getElementById ('Bild'). Animate ([ {Transformation: 'Skala (1)', Deckkraft: 1, Offset: 0}, {Transformation: 'scale (.6)', Deckkraft: .6, Offset: 1} ], { Dauer: Zahl (Variablen.AnimationDuration), Einfach: Variablen.Animationasing, });
Ich freue mich, dass ich Daten zwischen CSS, Sass und JavaScript so leicht austauschen kann. Teilen Sie solche Variablen mit dem Code pr?gnant und trocken.
Natürlich gibt es viele M?glichkeiten, die gleiche Funktion zu erreichen. Les James teilte eine interessante M?glichkeit, Sass und JavaScript 2017 über JSON zu interagieren. Ich bin vielleicht voreingenommen, aber ich denke, die Methode, die wir hier einführen, ist die einfachste und intuitivste. Es erfordert keine verrückten ?nderungen an der Art und Weise, wie CSS und JavaScript bereits verwendet und geschrieben wurden.
Haben Sie anderswo andere Methoden verwendet? Bitte teilen Sie in den Kommentaren mit - ich würde gerne sehen, wie Sie dieses Problem gel?st haben.
Das obige ist der detaillierte Inhalt vonJavaScript dazu bringen, mit CSS und Sass zu sprechen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Es gibt drei M?glichkeiten, einen CSS -Laderotator zu erstellen: 1. Verwenden Sie den Basisrotator der Grenzen, um eine einfache Animation durch HTML und CSS zu erreichen. 2. Verwenden Sie einen benutzerdefinierten Rotator mit mehreren Punkten, um den Sprungeffekt durch verschiedene Verz?gerungszeiten zu erreichen. 3. Fügen Sie einen Rotator in die Taste hinzu und wechseln Sie den Klassen über JavaScript, um den Ladestatus anzuzeigen. Jeder Ansatz betont die Bedeutung von Entwurfsdetails wie Farbe, Gr??e, Zug?nglichkeit und Leistungsoptimierung, um die Benutzererfahrung zu verbessern.

Um mit CSS -Browser -Kompatibilit?t und Pr?fixproblemen umzugehen, müssen Sie die Unterschiede im Browser -Support verstehen und Anbieterpr?fixe vernünftigerweise verwenden. 1. Verstehen Sie gemeinsame Probleme wie Flexbox und Grid -Unterstützung, Position: Sticky Invaly und Animationsleistung ist unterschiedlich. 2. überprüfen Sie den Best?tigungsunterstützungsstatus von Caniuse. 3. Verwenden Sie korrekt -webkit-, -moz-, -ms-, -o- und andere Herstellerpr?fixe; 4. Es wird empfohlen, Autoprefixer zu verwenden, um automatisch Pr?fixe hinzuzufügen. 5. Postcss installieren und Browserlist konfigurieren, um den Zielbrowser anzugeben. 6. automatisch die Kompatibilit?t w?hrend des Baus bew?ltigen; 7. Modernizr -Erkennungsmerkmale k?nnen für alte Projekte verwendet werden; 8. Keine Notwendigkeit, die Konsistenz aller Browser zu verfolgen,

ThemaNDiffercesbetweenplay: Inline, Block, Andinline-Blockinhtml/CsSarelayoutBehavior, Spaceusage und Stylingcontrol.1.inlineelementsflowwithtext, Don'tstartonNewlines, Ignorewidth/HeighthThorchingstyhorching-/idelthorchorching/ardaldhordhortaliTalding/ardaldhordelthortex

Durch das Festlegen des von Ihnen besuchten Links k?nnen Sie die Benutzererfahrung verbessern, insbesondere in inhaltsintensiven Websites, um den Benutzern dabei zu helfen, sich besser zu navigieren. 1. Verwenden Sie CSS: Besuchte Pseudoklasse, um den Stil des besuchten Links wie Farb?nderungen zu definieren. 2. Beachten Sie, dass der Browser nur eine ?nderung einiger Attribute aufgrund von Datenschutzbeschr?nkungen erm?glicht. 3. Die Farbauswahl sollte mit dem Gesamtstil koordiniert werden, um abrupte abrupt zu werden. 4. Das mobile Terminal zeigt diesen Effekt m?glicherweise nicht an. Es wird empfohlen, ihn mit anderen visuellen Eingabeaufforderungen wie Icon -Auxiliary -Logos zu kombinieren.

Verwenden Sie das Clip-Pfad-Attribut von CSS, um Elemente in benutzerdefinierte Formen wie Dreiecke, kreisf?rmige Kerben, Polygone usw. zu erregen, ohne sich auf Bilder oder SVGs zu verlassen. Zu den Vorteilen geh?ren: 1.. Unterstützt eine Vielzahl von Grundformen wie Circle, Ellipse, Polygon usw.; 2. reagierende Anpassung und anpassbar an mobile Terminals; 3. Einfach zu animation und kann mit Hover oder JavaScript kombiniert werden, um dynamische Effekte zu erzielen. 4. Es wirkt sich nicht auf den Layoutfluss aus und erfüllt nur den Anzeigebereich. H?ufige Verwendungen sind z. B. kreisf?rmiger Clip-Pfad: Kreis (50pxatcenter) und Dreieck-Clip-Pfad: Polygon (50%0%, 100 0%, 0 0%). Beachten

Um reaktionsschnelle Bilder mit CSS zu erstellen, kann es haupts?chlich durch die folgenden Methoden erreicht werden: 1. Verwenden Sie maximale Breite: 100% und H?he: Auto, damit das Bild an die Containerbreite anpasst und gleichzeitig den Anteil beibeh?lt. 2. Verwenden Sie die SRCSet- und Gr??enattribute von HTML, um die an verschiedenen Bildschirme angepassten Bildquellen intelligent zu laden. 3.. Verwenden Sie Objektfit und Objektposition, um die Bildaufbindung und Fokusanzeige zu steuern. Gemeinsam stellen diese Methoden sicher, dass die Bilder auf verschiedenen Ger?ten klar und wundersch?n pr?sentiert werden.

Verschiedene Browser weisen Unterschiede in der CSS -Analyse auf, was zu inkonsistenten Anzeigeeffekten führt, haupts?chlich die Differenzentscheidung, die Berechnung des Boxmodells, die Flexbox- und Raster -Layout -Unterstützung und das inkonsistente Verhalten bestimmter CSS -Attribute. 1. Die Standardstilverarbeitung ist inkonsistent. Die L?sung besteht darin, CSSReset oder Normalize.css zu verwenden, um den anf?nglichen Stil zu vereinen. 2. Die Box -Modellberechnung der alten Version von IE ist unterschiedlich. Es wird empfohlen, eine einheitliche Boxgr??e: Border-Box zu verwenden. 3. Flexbox und Grid führen in Kantenf?llen oder in alten Versionen unterschiedlich ab. Weitere Tests und verwenden Sie Autoprefixer; 4. Einige CSS -Attributverhalten sind inkonsistent. Caniuse muss konsultiert und herabgestuft werden.

Die Auswahl der CSS -Einheiten h?ngt von den Entwurfsanforderungen und den reaktionsschnellen Anforderungen ab. 1.PX wird für die feste Gr??e verwendet, geeignet für eine pr?zise Kontrolle, aber mangelnde Elastizit?t; 2.Em ist eine relative Einheit, die leicht durch den Einfluss des übergeordneten Elements verursacht wird, w?hrend REM basierend auf dem Wurzelelement stabiler ist und für die globale Skalierung geeignet ist. 3.VW/VH basiert auf der Ansichtsfenstergr??e, die für das reaktionsschnelle Design geeignet ist. Die Leistung unter extremen Bildschirmen sollte jedoch Aufmerksamkeit geschenkt werden. 4. Bei der Auswahl sollte es ermittelt werden, ob reaktionsschnelle Anpassungen, Elementhierarchiebeziehungen und Ansichtsfensterabh?ngigkeit festgelegt werden. Angemessener Gebrauch kann die Layoutflexibilit?t und -wartung verbessern.
