Machen Sie sich nicht die Mühe mit JavaScript, wenn es mit CSS geht

Machen Sie sich nicht die Mühe mit JavaScript, wenn es mit CSS geht

f14ac1ed49320467a07eb9d677cc1d99.png

Vorwort

Jede Anwendung, die in JavaScript geschrieben werden kann, wird letztendlich in JavaScript geschrieben. ——Atwoods Gesetz

Obwohl alles mit JavaScript erreicht werden kann, ist die Betriebseffizienz von CSS bis zu einem gewissen Grad höher als die von JavaScript. Der Autor ist daher der Ansicht, dass man sich nicht mit JavaScript herumschlagen muss, wenn dies mit CSS erreicht werden kann.

Beide Sprachen haben unterschiedliche Verwendungszwecke. Da Browser immer mehr Funktionen und Eigenschaften erhalten, wird CSS zu einer leistungsstarken Sprache, die Funktionen verarbeiten kann, für deren Implementierung wir uns zuvor auf JavaScript verlassen mussten.

Reibungsloses Scrollen

Es gab eine Zeit, in der wir uns hierfür auf die window.scrollY Implementierung von JavaScript verlassen mussten, und wenn wir ein reibungsloses Scrollen wollten, mussten wir uns auf einen Timer verlassen, um eine Animation hinzuzufügen. Durch das Hinzufügen der scroll-behavior Eigenschaft können wir jetzt mit nur einer Zeile CSS ein reibungsloses Scrollen auf unserer Website ermöglichen! Die Browserunterstützung liegt bei etwa 75 %, die Kompatibilität ist also ziemlich gut.

html {
  Scroll-Verhalten: glatt;
} 

e6fbe56d51fa9efe69306dd2f43ffd7e.gif

Bildschirmaufnahme 2021-07-18 10.14.21.gif

Vollständiger Code[1]

Rollende Erfassung

Diashows und Bildergalerien sind ebenfalls häufig genutzte Funktionen im Frontend. Die vorherige CSS-Generation verfügt nur über eingeschränkte Möglichkeiten, sodass wir uns zur Ausführung dieser Funktionen auf JavaScript verlassen müssen. Jetzt kann diese Funktionalität mit nur wenigen Codezeilen erreicht werden. In gewisser Weise funktioniert es ähnlich wie Flexbox oder CSS Grid in dem Sinne, dass Sie ein Containerelement benötigen, für das Sie scrolln-snap-type festlegen, und mehrere untergeordnete Elemente, für scroll-snap-align festgelegt ist, etwa wie folgt:

<Hauptklasse="übergeordnet">
  <Abschnitt Klasse="Kind"></Abschnitt>
  <Abschnitt Klasse="Kind"></Abschnitt>
  <Abschnitt Klasse="Kind"></Abschnitt>
</main>
.übergeordnet {
  Scroll-Snap-Typ: x obligatorisch;
}

.Kind {
  Scrollen-Snap-Align: Start;
} 

b5b4329a3132b26b57f27e1b2766a5d5.gif

Bildschirmaufnahme 2021-07-17 10.23.04.gif

Vollständiger Code[2]

CSS-Animation

Es gab eine Zeit, in der die meisten Entwickler JavaScript (oder jQuery) verwendeten, um Elemente im Browser zu animieren. Es ist ganz einfach, dies auszublenden und das auszublenden. Da interaktive Projekte immer komplexer werden und die Anzahl mobiler Geräte zunimmt, wird die Leistung immer wichtiger. Flash wurde aufgegeben und talentierte Animationsentwickler verwendeten HTML5, um Effekte zu erzielen, die vorher nicht möglich waren. Sie benötigten bessere Tools, um komplexe Animationssequenzen zu entwickeln und die beste Leistung zu erzielen. JavaScript (oder jQuery) kann das nicht. Mit zunehmender Weiterentwicklung der Browser bieten diese auch zunehmend Lösungen an. Die am weitesten verbreitete Lösung ist die Verwendung von CSS-Animationen.

96274e0645dc7cc4329335e88a0e549d.gif

Bildschirmaufnahme 2021-07-17 10.38.14 Uhr.gif

Vollständiger Code[3]

Formularvalidierung

HTML5 bereichert Formularelemente und stellt Formularelementattribute wie „Erforderlich“, „E-Mail“, „Tel.“ usw. bereit. In ähnlicher Weise können wir :valid und :invalid verwenden, um HTML5-Formularattribute zu validieren.

  • Die Pseudoklasse :required gibt Formularelemente an, die über das erforderliche Attribut verfügen.
  • Die Pseudoklasse :valid gibt an, dass ein Formularelement gültig ist, wenn es mit den erforderlichen
  • Die Pseudoklasse :invalid gibt ein Formularelement an, das nicht den angegebenen Anforderungen entspricht.

cd851ec356eb587a94c3ca4c48479e7f.gif

Bildschirmaufnahme 2021-07-18 9.15.50 Uhr.gif

Verwenden des Inhaltsattributs attr von CSS zum Erfassen von Daten

Ich schätze, jeder denkt danach an das Pseudoelement, aber wie bekommt man den Text? Man kann kein JavaScript verwenden.

CSS-Pseudoelemente sind sehr leistungsfähig. Wir können sie für viele Zwecke verwenden. Um Effekte zu erzielen, wird content:" " normalerweise leer gelassen, aber Sie können tatsächlich attr hineinschreiben, um Informationen zu erfassen!

<div data-msg="Hier ist der Inhalt, um Inhalt abzurufen">  
schweben
</div>
div{
Breite: 100px;
Rand: 1px durchgehend rot;  
Position: relativ;
}
div:hover:nach{
Inhalt:Attr(Datennachricht);
Position: absolut;
Schriftgröße: 12px;
Breite: 200 %;
Zeilenhöhe: 30px;
Textausrichtung: zentriert;
links: 0;
oben: 25px;
Rand: 1px, durchgehend grün;
} 

3775b3c0b658a2f37ef5c6f88cc28a4d.gif

Bildschirmaufnahme 2021-07-18 9.42.38 Uhr.gif

Anzeige bei Mouse-Hover

Das Hovern mit der Maus kommt sehr häufig vor, beispielsweise in Navigationsmenüs:

5bfdbe13738e3afacdf0a5ce8e1cd623.png

bild.png

Im Allgemeinen sollten versteckte Elemente wie Menüs als untergeordnete Elemente oder angrenzende Elemente des Hover-Ziels platziert werden, um die CSS-Steuerung zu erleichtern. Beispielsweise wird das obige Menü als angrenzendes Element der Navigation platziert:

<!--Menü ist angrenzend li-->
<li class="user">Benutzer</li>
<li class="Menü">
    <ul>
       <li>Kontoeinstellungen</li>
       <li>Abmelden</li>
    </ul>
</li>

Im Normalzustand ist das Menü ausgeblendet:

.Speisekarte{
  Anzeige: keine;
}

Wenn Sie mit der Maus über die Navigation fahren, wird Folgendes angezeigt:

/*Verwenden benachbarter Selektoren und Hover*/
.Benutzer:hover + .menu{
  Anzeige: Listenelement;
}

Beachten Sie, dass hier ein benachbarter Selektor verwendet wird. Deshalb wird er, wie oben erwähnt, als benachbarte Elemente geschrieben. Die Position des Menüs kann absolut positioniert werden.

Gleichzeitig sollte auch das Menü selbst beim Hovern angezeigt werden, da das Menü sonst verschwindet, sobald die Maus die Navigation verlässt:

.menu:hover{
    Anzeige: Listenelement;
}

Hier gibt es ein kleines Problem: Menü und Navigation müssen nebeneinander liegen. Andernfalls funktioniert der oben hinzugefügte Menü-Hover nicht, wenn in der Mitte eine Lücke vorhanden ist. In tatsächlichen Situationen sollte jedoch aus ästhetischer Sicht ein gewisser Abstand zwischen den beiden bestehen. Das lässt sich eigentlich ganz einfach lösen. Zeichnen Sie einfach einen transparenten Bereich in das Menü, wie das blaue Quadrat unten:

Dies kann durch die Verwendung der Pseudoklassen „before“/„after“ mit absoluter Positionierung erreicht werden:

ul.menu:vor{
    Inhalt: "";
    Position: absolut;
    links: 0;
    oben: -20px;
    Breite: 100 %;
    Höhe: 20px;
    /*Hintergrundfarbe: rgba(0,0,0,0,2);*/
}

Wenn ich CSS-Hover schreibe und auf Mausereignisse achte und die Maus zum Steuern des Anzeigens und Ausblendens verwende, was passiert dann mit dem doppelten Effekt? Wenn ich der normalen Routine folge und beim Hovern im Mausereignis einen Anzeigestil „display: block“ hinzufüge, werden die CSS-Einstellungen überschrieben. Mit anderen Worten: Sobald Sie einmal mit der Maus darüberfahren, ist der CSS-Code nutzlos, da die Priorität von Inline-Stilen höher ist als die von externen Links. In der Praxis können jedoch unerwartete Dinge passieren. Das heißt, auf einem mobilen iPhone löst eine Berührung CSS-Hover aus, und diese Auslösung geht höchstwahrscheinlich dem Touchstart-Ereignis voraus. In diesem Ereignis wird bestimmt, ob der aktuelle Status angezeigt oder ausgeblendet wird. Da CSS-Hover eine Rolle spielt, wird beurteilt, ob es angezeigt wird, und dann wird es ausgeblendet. Mit anderen Worten: Wenn es beim ersten Klick nicht klappt, muss man eben zweimal klicken. Schreiben Sie daher am besten nicht beides gleichzeitig. Das zweite Szenario mit untergeordneten Elementen ist einfacher. Behandeln Sie das Hover-Ziel und das ausgeblendete Objekt als untergeordnete Elemente desselben übergeordneten Containers und schreiben Sie den Hover dann auf diesen übergeordneten Container. Sie müssen keinen Hover für das ausgeblendete Element wie oben schreiben:

.marker-container .detail-info{
    Anzeige: keine
}
.marker-container:hover .detail-info{
   Anzeige: Block
}

endlich

Die hier gezeigten Funktionen sind nur einige häufig verwendete Funktionen. Tatsächlich gibt es viele Funktionen, die über CSS implementiert werden können. Interessierte Studenten können sich weiter mit weiteren CSS-Funktionen befassen, die nicht auf JavaScript basieren.

Dies ist das Ende dieses Artikels darüber, wie Sie sich nicht mit JavaScript herumschlagen müssen, wenn Sie CSS verwenden können. Weitere relevante Inhalte zum Thema CSS-Smooth-Scrolling finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den verwandten Artikeln weiter unten. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

<<:  Docker-Umgebung in Linux-Umgebung installieren (keine Fallstricke)

>>:  Detaillierte Erklärung der Eigenschaften und Funktionen von Vuex

Artikel empfehlen

8 Möglichkeiten zum manuellen und automatischen Sichern Ihrer MySQL-Datenbank

MySQL ist ein beliebtes Open-Source-Datenbankverw...

Tutorial zur Nginx-Standortkonfiguration von Grund auf

Grundlagen Die Reihenfolge der Standortübereinsti...

Schritte zur Installation von cuda10.1 unter Ubuntu 20.04 (grafisches Tutorial)

Vorbereitung vor der Installation Der Hauptzweck ...

So verwenden Sie React-Color zum Implementieren des Front-End-Farbwählers

Hintergrund Wir können react-color verwenden, um ...

Detaillierte grafische Erklärung zur Verwendung von SVG im Vue3+Vite-Projekt

Heute habe ich bei der Verwendung von SVG in der ...

Was ist ein MySQL-Index? Fragen Sie, wenn Sie es nicht verstehen

Inhaltsverzeichnis Überblick Vom Binärbaum zum B+...

So verwalten Sie mehrere Projekte auf dem CentOS SVN-Server

Eine Forderung Im Allgemeinen hat ein Unternehmen...

Ideen und Codes zur Implementierung der Vuex-Datenpersistenz

Was ist Vuex vuex: ist ein speziell für vue.js en...

Detaillierte Schritte für einen reibungslosen Übergang von MySQL zu MariaDB

1. Einführung in MariaDB und MySQL 1. Einführung ...

Detaillierte Erläuterung der Nginx-Timeout-Konfiguration

Ich habe kürzlich in einem Projekt nginx und im B...

Probleme bei der Ausführungsreihenfolge von AND und OR in SQL-Anweisungen

Frage Beim Schreiben von Datenbank-SQL ist mir ge...