Entfernen Sie den iOS-Eingabeschatten


91

Unter iOS (Safari 5) muss ich für das Eingabeelement (oberer innerer Schatten) Folgendes beachten:

Beispiel

Ich möchte den oberen Schatten entfernen, der Fehler -webkit-appearancewird nicht gespeichert.

Aktueller Stil ist:

input {    
    border-radius: 15px;
    border: 1px dashed #BBB;
    padding: 10px;
    line-height: 20px;
    text-align: center;
    background: transparent;
    outline: none;    
    -webkit-appearance: none;
    -moz-appearance: none;
}

3
Als Randnotiz sollten Sie vorsichtig sein, indem Sie '-webkit-Erscheinungsbild' auf einem allgemeinen inputSelektor einstellen . Dies kann unerwünschte Auswirkungen auf Optionsfelder und Kontrollkästchen haben.
Davidpauljunior

Danke, ich benutze es auf dem Element
WHITECOLOR

Antworten:


202

Sie müssen verwenden -webkit-appearance: none;, um die Standard-IOS-Stile zu überschreiben. Wenn Sie jedoch nur das inputTag in CSS auswählen, werden die Standard-IOS-Stile nicht überschrieben, da IOS seine Stile mithilfe eines Attributselektors hinzufügt input[type=text]. Daher muss Ihr CSS einen Attributselektor verwenden, um die voreingestellten Standard-IOS-CSS-Stile zu überschreiben.

Versuche dies:

input[type=text] {   
    /* Remove First */
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;

    /* Then Style */
    border-radius: 15px;
    border: 1px dashed #BBB;
    padding: 10px;
    line-height: 20px;
    text-align: center;
    background: transparent;
    outline: none;    
}

Hilfreiche Links:

Hier erfahren Sie mehr über appearance:

http://css-tricks.com/almanac/properties/a/appearance/

Wenn Sie mehr über CSS-Attributselektoren erfahren möchten, finden Sie hier einen sehr informativen Artikel:

http://css-tricks.com/attribute-selectors/


3
Möglicherweise möchten Sie diese Stile auch anwenden input[type=password].
Rockallite

1
Dieser Beitrag ist fast 4 Jahre alt. Muss dies aktualisiert werden?

1
Der derzeit verwendete Safari-Selektor ist textarea, input[type="range"], input, input:matches([type="password"], [type="search"])- verwenden Sie ihn einfach und er sollte in allen Fällen funktionieren.
da_berni

Bei mir hat es nur geklappt, als ich mich bei der beworben !importanthabe appearance. Sollte auch appearancefür selects funktionieren .
RuiVBoas

29
background-clip: padding-box;

Scheint auch die Schatten zu entfernen.

Wie @davidpauljunior erwähnt; Seien Sie vorsichtig bei der Einstellung -webkit-appearanceeines allgemeinen Eingangswählers.


1
background-clip: padding-box;entfernt unter iOS den Schatten im Texteingabefeld. Siehe beispielsweise codepen.io/jstnrs/pen/YXBLVN (öffnen Sie die URL auf einem iOS-Gerät).
jstnrs

2
Das funktioniert, aber weiß jemand, wie es funktioniert? Vielen Dank.
Nostalg.io

hat nicht für mich gearbeitet, aber -webkit-appearance: none;getan.
Lefi Tarik

5

Das Webkit entfernt alle Eigenschaften

-webkit-appearance: none;

Verwenden Sie die Eigenschaft box-shadow, um den Schatten auf Ihrem Eingabeelement zu entfernen

box-shadow: none !important;

4

Ich habe versucht, eine Lösung zu finden, die a.) Funktioniert und b.) Ich verstehe, warum es funktioniert .

Ich weiß, dass der Schatten für Eingaben (und der abgerundete Rand für Eingaben [type = "search"]) von einem Hintergrundbild stammt.

Das Einstellen background-image: nonewar also offensichtlich mein erster Versuch, aber das scheint nicht zu funktionieren.

Das Einstellen background-image: url()funktioniert, aber ich mache mir immer noch Sorgen, dass es leer ist url(). Obwohl es derzeit nur ein schlechtes Gefühl ist.

background-clip: padding-box; scheint den Job auch zu erledigen, aber selbst nach dem Lesen der "Hintergrund-Clip" -Dokumente verstehe ich nicht, warum dies den Hintergrund vollständig entfernt.

Meine Lieblingslösung:

background-image: linear-gradient(transparent, transparent);

Dies ist eine gültige CSS und ich verstehe, wie es funktioniert.


@BugWhisperer Es funktioniert in iOS 12.4 für mich: codepen.io/receter/pen/ymMzRG Können Sie weitere Details angeben?
Andreas Riedmüller

hat nicht für mich gearbeitet, aber background-clip: padding-box !importantfunktioniert.
Oldboy

@BugWhisperer Können Sie überprüfen, ob die Beispiele auf codepen.io/receter/pen/ymMzRG für Sie funktionieren? Können Sie auch versuchen, ob es background-image: linear-gradient(transparent, transparent) !important;für Sie funktioniert? Ich würde mich freuen zu wissen, worum es hier geht.
Andreas Riedmüller

Leider habe ich gerade mein Handy aktualisiert. Alle von ihnen arbeiten in Safari und Chrom durch Codepen, aber ich frage mich, ob Sie die gleichen Ergebnisse erhalten würden, wenn Sie es nativ
testen würden

2

Während die akzeptierte Antwort ein guter Anfang ist, wie andere betont haben, funktioniert sie nur für Eingaben, deren typeist "text". Es gibt eine Vielzahl anderer Eingabetypen, die unter iOS auch als Textfelder gerendert werden. Daher müssen wir diese Regel erweitern, um diese anderen Typen zu berücksichtigen.

Hier ist das CSS, mit dem ich Eingabetextfelder und Textbereiche vom inneren Schatten befreie, während das Standard-Styling für Schaltflächen, Kontrollkästchen, Bereichsschieberegler, Datums- / Zeit-Dropdowns und Optionsfelder beibehalten wird, die alle auch mit dem bescheidenen <input>Tag erstellt wurden .

textarea,
input:matches(
  [type="email"],
  [type="number"],
  [type="password"],
  [type="search"],
  [type="tel"],
  [type="text"],
  [type="url"]
) {
  -webkit-appearance: none;
}

-7

Das funktioniert bei mir besser. Außerdem muss ich es nicht auf jede Art von Eingabe anwenden (z. B. Text, Telefon, E-Mail usw.).

* {
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.