CSS implementiert den Texteingabefeldstil von Google Material Design (empfohlen)

CSS implementiert den Texteingabefeldstil von Google Material Design (empfohlen)

Hallo zusammen, heute möchte ich Ihnen zeigen, wie Sie mit reinem CSS den Stil des Texteingabefelds von Google Material Design implementieren.

Obwohl uns heute viele Frameworks zur Verfügung stehen, die uns bei der Implementierung dieser Stile helfen können, können wir unsere Fähigkeit verbessern, diese Framework-Komponenten in Zukunft entsprechend den Geschäftsanforderungen anzupassen, indem wir lernen, wie man reines CSS auf der untersten Ebene verwendet.

Demo, siehe hier: Klicken Sie hier, um Demo anzuzeigen [CodePen]

Endergebnis:

Bildbeschreibung hier einfügen

Nur im Chrome-Browser getestet. Wenn Sie Probleme mit anderen Browsern feststellen, können Sie gerne Änderungsmethoden vorschlagen und gemeinsam lernen und sich verbessern!

Beginnen Sie mit der Umsetzung

Zuerst erstellen wir das folgende HTML:

<form>
  <input type="text" erforderlich />
  <Bezeichnung>
    <span>Benutzername</span>
  </Bezeichnung>
</form>

Dies ist ein normales HTML-Formular zur Eingabe eines Benutzernamens.

Ich glaube, dass jedem, der schlau ist, aufgefallen ist, dass wir das <label>-Tag nach dem <input>-Tag einfügen, weil wir das <label> später basierend auf dem Status des <input>-Tags auswählen müssen. Es handelt sich jedoch um Geschwister, und da reine CSS-Selektoren nur eine Möglichkeit bieten, das nächste Geschwister auszuwählen, setzen wir das <label>-Tag ans Ende.

Effektbild:

Rendern

Als Nächstes passen wir die CSS-Effekte des <form>-Elements an.

bilden {
  Breite: 50%;
  Höhe: 50vh;
  Rand: automatisch;
  Position: relativ;
  Schriftfamilie: Sans-Serif;
}

Dieser CSS-Abschnitt ist nichts Besonderes, er definiert lediglich Länge, Höhe und Schriftart.

Als nächstes fügen wir dem <input>-Element einige Stile hinzu.

Formulareingabe {
  Höhe: 2rem;
  Breite: 10rem;
  Rand: keiner;
  Rand unten: 0,1rem tiefschwarz;
}

Dieser CSS-Abschnitt legt hauptsächlich die Länge und Breite fest und legt nur den Rahmen darunter fest, um ihm ein unterstrichenes Gefühl zu verleihen.

Effektbild:

Bildbeschreibung hier einfügen

Als nächstes müssen wir das <label>-Tag festlegen, das den Benutzernamentext über das Texteingabefeld verschiebt.

Formularbezeichnung {
  Position: absolut;
  oben: 0;
  links: 0;
  Zeigerereignisse: keine;
}

Es ist erwähnenswert, dass wir Folgendes festlegen:

pointer-events: none;

Es ist zu hoffen, dass in Zukunft beim Klicken mit der Maus auf den Text anstelle des Schriftartauswahlereignisses das Fokusereignis des Texteingabefelds ausgelöst werden kann.

Effektbild:

Bildbeschreibung hier einfügen

Als nächstes müssen wir padding-top zum <input>-Element hinzufügen. Dadurch wird der <label>-Benutzername etwas nach oben verschoben.

Als Nächstes fügen wir dem <input>-Element outline: none hinzu, sodass der blaue Rand nicht mehr angezeigt wird, wenn wir auf das Texteingabefeld klicken.

Formulareingabe {
  Höhe: 2rem;
  Breite: 10rem;
  padding-top: 1rem; /* Neu */
  Rand: keiner;
  Rand unten: 0,1rem tiefschwarz;
  Gliederung: keine; /* Neu */
}

Effektbild:

Bildbeschreibung hier einfügen

Als Nächstes müssen wir einen unteren Rahmenstil auf das Pseudoelement ::after nach dem <input>-Element anwenden und den unteren Rahmen nach links verschieben.

Der Grund für das Verschieben des unteren Rands nach links ist, dass er in Zukunft durch overflow:hidden; ausgeblendet wird. Nur wenn das Texteingabefeld ausgewählt ist, wird der untere Rand zurückgeschoben, um die visuelle Wirkung zu verbessern.

Formularbezeichnung::nach {
  Inhalt: ""; /* Das ist sehr wichtig, wir brauchen dieses Attribut, um den unteren Rand anzuzeigen*/
  Höhe: 3rem;
  Breite: 10rem;
  Position: absolut;
  oben: 0;
  links: 0;
  border-bottom: 0.2rem solid #1cb9b6; /* Der untere Rand muss markanter sein, also machen wir ihn fett und färben ihn*/
  transform: translateX(-100%); /* 100 % nach links verschieben, um sicherzustellen, dass es sich außerhalb des Formularelements befindet*/
  Übergang: alle 0,3 s langsam; /* Animation hinzufügen, um flüssige Bewegung zu erreichen */
}

Effektbild:

Bildbeschreibung hier einfügen

Als nächstes wollen wir das <label>-Element „Benutzername“ nach unten verschieben, direkt an den unteren Rand.

Formularbezeichnungsspanne {
  Position: absolut;
  unten: -3rem;
  links: 0;
  Übergang: alle 0,3 s langsam; /* Animation zum Erreichen eines sanften Bewegungseffekts*/
}

Effektbild:

Bildbeschreibung hier einfügen

Als Nächstes müssen wir das <input>-Element formatieren, wenn es sich im fokussierten und gültigen Zustand befindet. Das heißt, wenn wir das Texteingabefeld auswählen oder wenn sich Text im Texteingabefeld befindet, sollten diese hervorgehoben werden.

Der Grund, warum wir hier den gültigen Status verwenden können, besteht darin, dass wir in HTML das erforderliche Attribut für <input> festlegen. Wenn sich also Text im Texteingabefeld befindet, ist dieser in einem gültigen Status und umgekehrt.

<input type="text" erforderlich />
Formulareingabe: Fokus + Beschriftungsspanne,
Formulareingabe: gültig + Bezeichnungsspanne {
  transform: translateY(-120%); /* Benutzernamen nach oben verschieben*/
  font-size: 1.2rem; /* Erhöhen Sie die Schriftgröße, um den Highlight-Effekt hervorzuheben*/
  Farbe: #1cb9b6; /* Hervorhebungsfarbe*/
}
Formulareingabe: Fokus + Label::nach,
Formulareingabe:gültig + Bezeichnung::nach {
  transform: translateX(0); /* Verschiebe den markierten unteren Rand nach links nach hinten*/
}

Effektbild:

Bildbeschreibung hier einfügen

Als nächstes müssen wir den unteren Rand verbergen, der links inaktiv ist, wenn er nicht hervorgehoben ist. Wir müssen nur overflow: hidden; auf dem <form>-Element festlegen.

bilden {
  Breite: 50%;
  Höhe: 50vh;
  Rand: automatisch;
  Position: relativ;
  Schriftfamilie: Sans-Serif;
  Überlauf: versteckt; /* Neu */
}

Wenn es nicht ausgewählt oder nicht eingegeben ist, ist der hervorgehobene untere Rand links unsichtbar.

Effektbild:

Bildbeschreibung hier einfügen

Auf diese Weise haben wir das Texteingabefeld der Google Material Design-Spezifikation fertiggestellt.

Zusammenfassen

Oben sehen Sie die vom Herausgeber eingeführte CSS-Implementierung des Texteingabefeldstils von Google Material Design. Ich hoffe, es ist für alle hilfreich. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Herausgeber wird Ihnen rechtzeitig antworten. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken!
Wenn Sie diesen Artikel hilfreich finden, können Sie ihn gerne abdrucken und dabei bitte die Quelle angeben. Vielen Dank!

<<:  js-Speicherleckszenarien, wie man sie im Detail überwacht und analysiert

>>:  So verwenden Sie das Name-Attribut und das ID-Attribut des A-Tags, um innerhalb der Seite zu springen

Artikel empfehlen

Welche Arten von MySQL-Verbindungsabfragen kennen Sie?

Vorwort Wenn die Abfrageinformationen aus mehrere...

Javascript-Betriebsmechanismus „Event Loop“

Inhaltsverzeichnis 1. Vier Konzepte 1. JavaScript...

Eine kurze Analyse der expliziten Typkonvertierung von MySQL

CAST-Funktion Im vorherigen Artikel haben wir die...

CSS-Lösung für mehrspaltiges Layout

1. Feste Breite + adaptiv Erwarteter Effekt: fest...

Tiefes Verständnis der JavaScript-Syntax und Codestruktur

Inhaltsverzeichnis Überblick Funktionalität und L...

So installieren und konfigurieren Sie den Supervisor-Daemon unter CentOS7

Neuling, nimm es selbst auf 1. Supervisor install...

Beispielcode für die benutzerdefinierte Scroll-Ansicht des WeChat-Applets

Miniprogramm Benutzerdefinierte Scroll-View-Bildl...

Was ist die Datei mysql-bin.000001 in MySQL? Kann sie gelöscht werden?

Nachdem ich MySQL über Ports installiert hatte, s...

Spezifische Verwendung des Linux-Befehls „dirname“

01. Befehlsübersicht dirname - entfernt nicht zu ...

CSS3 realisiert die Animation des Shuttle-Sternenhimmels

Ergebnis: html <canvas id="Sternenfeld&qu...

Vollständige MySQL-Sicherung und schnelle Wiederherstellungsmethoden

Ein einfaches MySQL-Vollsicherungsskript, das die...