Passen Sie den Stil des Elements <input type="file"> an, das beim Hochladen von Dateien in HTML verwendet wird

Passen Sie den Stil des Elements <input type="file"> an, das beim Hochladen von Dateien in HTML verwendet wird

Auf einer Webseite wird das Element <input type="file"> grundsätzlich beim Hochladen von Dateien verwendet. Sein Standardstil ist:

Unter Chrome:

Im Internet Explorer:

Unabhängig von dem oben genannten ist der Stil relativ einfach und passt nicht zum Stil vieler Webseiten.

Es gibt viele Gelegenheiten, den Anzeigestil entsprechend den Benutzeranforderungen und dem Designstil zu ändern.

Wenn Sie eine Upload-Schaltfläche im Bootstrap-Stil wie die folgende erstellen möchten, wie können Sie sie implementieren?

Grundlegende Elemente zum Erstellen einer Upload-Schaltfläche


Code kopieren
Der Code lautet wie folgt:
<span> <span>Hochladen</span> <input type="file"> </span>

Effekt (Chrom):

Was Sie jetzt sehen, wird in zwei Zeilen angezeigt.

Der Grund, warum die Peripherie nicht durch ein Div ersetzt wird, liegt darin, dass im IE7-Browser, sofern sie nicht auf Inline eingestellt ist, ihre Breite auf die maximal mögliche Breite erweitert wird. Wenn es auf Inline eingestellt ist, kann die Breite des Elements nicht angepasst werden. Daher kann die Verwendung von „span“ und die Einstellung auf „Inline-Block“ dieses Problem lösen.

Fügen Sie Stil hinzu, um zwei Zeilen in eine Zeile umzuwandeln


Code kopieren
Der Code lautet wie folgt:
<span"> <span>Hochladen</span> <input type="file"> </span>

CSS:


Code kopieren
Der Code lautet wie folgt:
.fileinput-button { position: relativ; Anzeige: Inline-Block; } .fileinput-button input{ position: absolut; rechts: 0px; oben: 0px; }

Wirkung:

Standardmäßig ist kein hellblauer Rand vorhanden. Dieser wird erst nach einem Mausklick angezeigt. Zur besseren Übersicht wird er hier angezeigt.

Indem Sie den äußeren Bereich auf „display:relative“ und die Eingabe auf „display:absolute“ setzen, werden sie alle aus dem Dokumentfluss entfernt.

Durch die Beschränkung der Eingabe auf den äußeren Bereich und die Durchführung einer absoluten Positionierung wird die ursprüngliche zweizeilige Anzeige in eine einzeilige Anzeige geändert.

Tatsächlich ist es hier übergelaufen. Die tatsächliche Breite ist die Breite des „Upload“-Textes. Ändern Sie den Stil der Dateieingabeschaltfläche, um „overflow: hidden“ hinzuzufügen.


Code kopieren
Der Code lautet wie folgt:
.fileinput-button { Position: relativ; Anzeige: Inline-Block; Überlauf: versteckt; }

Wirkung:

Sehr interessant. Man sieht oben und rechts den blauen Rand, der den Überlauf links und unten tatsächlich verbirgt.

Wenn Sie zu diesem Zeitpunkt mit der Maus auf das Wort „Hochladen“ klicken, klickt man tatsächlich auf die Eingabe, wodurch das Dialogfeld „Öffnen“ angezeigt werden kann, da die Eingabe in der Anzeigehierarchie näher am Benutzer liegt als „Hochladen“.

Beachten Sie die rechte Position bei der Eingabe. Warum verwenden Sie nicht die linke Position?

Wenn wir nach links wechseln.

Effekt (Chrom):

Wirkung (IE):

In Chrome wird die Auswahlschaltfläche im Eingabeelement angezeigt. Das spielt jedoch keine Rolle. Sie können sie später transparent machen, indem Sie die Transparenz festlegen.

Das Eingabefeld wird jedoch im IE angezeigt. Der Schlüssel besteht darin, dass der Zeiger in den Eingabezustand wechselt, wenn die Maus zum Eingabefeld bewegt wird, was sehr schwierig zu handhaben ist.

Indem Sie das Eingabefeld mit der richtigen Positionierungsmethode nach links verschieben, können Sie verhindern, dass der Mauszeiger im IE in den Eingabezustand wechselt.

Transparentes Eingabeelement

CSS:


Code kopieren
Der Code lautet wie folgt:
.fileinput-button { Position: relativ; Anzeige: Inline-Block; Überlauf: ausgeblendet; } .fileinput-button input{ Position: absolut; links: 0px; oben: 0px; Deckkraft: 0; -ms-Filter: 'Alpha(Deckkraft=0)'; }

Wirkung:

Die Eingabe ist komplett weg, der Klick auf "Hochladen" funktioniert aber noch.

Kann IE8+ unterstützen.

Bootstrap importieren und Schaltflächenstile hinzufügen

Fügen Sie im Kopf Verweise auf externes CSS und JS hinzu.


Code kopieren
Der Code lautet wie folgt:
<link rel="stylesheet" href="bootstrap/bootstrap.css"> <link rel="stylesheet" href="bootstrap/bootstrap-theme.css"> <script src="bootstrap/jquery-1.10.2.js"></script> <script src="bootstrap/bootstrap.js"></script>

Schaltflächenstil hinzufügen.


Code kopieren
Der Code lautet wie folgt:
<span> <span>Hochladen</span> <input type="file"> </span>

Wirkung:

Das Größenproblem lösen

Wenn Sie width:100px zum Stil der Dateieingabeschaltfläche hinzufügen und den äußeren Bereich auf 100px Breite einstellen, werden Sie feststellen, dass beim Klicken auf den unteren Teil keine Reaktion erfolgt. Der Grund dafür ist, dass die Eingabe die Standardgröße hat und den unteren Teil nicht abdecken kann.

Sie können das Überlappungsproblem lösen, indem Sie eine große Schriftgröße für die Eingabe festlegen, um sie zu erweitern. Hier haben wir sie auf 200 Pixel festgelegt.


Code kopieren
Der Code lautet wie folgt:
.fileinput-button input{ Position:absolut; rechts: 0px; oben:0px; Deckkraft: 0; -ms-filter: 'Alpha(Deckkraft=0)'; Schriftgröße: 200px; }

Dadurch wird das Abdeckungsproblem gelöst.

Beenden.

Referenz: jQuery-File-Upload

Wenn Sie mit IE7 kompatibel sein möchten, können Sie auf die Schreibmethode in jQuery-File-Upload verweisen.

Code:

XML/HTML-CodeInhalt in die Zwischenablage kopieren
  1. <!DOCTYPE html >   
  2. < html >   
  3. <Kopf>   
  4.      <Titel> </Titel>   
  5.      < Meta   http-equiv = "Inhaltstyp"   Inhalt = "text/html;Zeichensatz=utf-8" >   
  6.      < Link   rel = "Stilvorlage"   href = "bootstrap/bootstrap.css" >   
  7.      < Link   rel = "Stilvorlage"   href = "bootstrap/bootstrap-theme.css" >   
  8.      < Skript   src = "bootstrap/jquery-1.10.2.js" > </ Skript >   
  9.      < Skript   src = "bootstrap/bootstrap.js" > </ Skript >   
  10.      < Stil >   
  11. .Dateieingabe-Schaltfläche {
  12. Position: relativ;
  13. Anzeige: Inline-Block;
  14. Überlauf: versteckt;
  15. }
  16. .fileinput-button Eingabe{
  17. Position: absolut;
  18. rechts: 0px;
  19. oben: 0px;
  20. Deckkraft: 0;
  21. -ms-filter: 'Alpha( Deckkraft = 0 )';
  22. Schriftgröße: 200px;
  23. }
  24.      </ Stil >   
  25. </ Kopf >   
  26. < Textkörper   Stil = "Polsterung: 10px" >   
  27.      < div   ausrichten = "zentriert" >   
  28.          < Spanne   Klasse = "btn btn-success Dateieingabe-Schaltfläche" >   
  29.              < span > Hochladen </ span >   
  30.              < Eingabe   Typ = "Datei" >   
  31.          </ span >   
  32.      </div>   
  33. </ Körper >   
  34. </ html >   

<<:  Verwenden von vue3, um den Nebennachrichten-Eingabeaufforderungseffekt des Apple-Systems zu imitieren

>>:  Detaillierte Erläuterung des Implementierungsbeispiels für die Gruppenrangfolge im MySQL-Tutorial

Artikel empfehlen

Sortieren von MySQL-Aggregatfunktionen

Inhaltsverzeichnis MySQL-Ergebnissortierung - Agg...

Schritte zur Annotation von Metadeklarationen

Schritte zur Annotation von Metadeklarationen: 1. ...

Nginx-Beispielcode zur Implementierung dynamischer und statischer Trennung

In Kombination mit dem Szenario in diesem Artikel...

Lösen Sie das Problem der Containerverwaltung mit Docker Compose

Im Docker-Design führt ein Container nur eine Anw...

JavaScript-Einzelthread und asynchrone Details

Inhaltsverzeichnis 1. Aufgabenwarteschlange 2. Um...

So installieren Sie den Kibana-Tokenizer im Docker-Container

Schritt: 1. Erstellen Sie eine neue Datei docker-...

Vue implementiert den Anwesenheitskalender von DingTalk

In diesem Artikel wird der spezifische Code von V...

Das Bildelement img hat in IE6 zusätzlichen Leerraum

Beim Erstellen eines DIV+CSS-Layouts einer Seite ...

Lösung zur Konvertierung in Inline-Styles in CSS (css-inline)

Sprechen Sie über die Szene E-Mail senden Einbett...

30 Tipps zum Schreiben von HTML-Code

1. HTML-Tags immer schließen Im Quellcode der vor...

Detaillierte Schritte zum Debuggen von VUE-Projekten in IDEA

Um JS-Code zu debuggen, müssen Sie jedes Mal eine...

Beispielcode zur Implementierung der Formularvalidierung mit reinem CSS

In unserem täglichen Geschäft ist die Formularval...