Supprimer l'ombre d'entrée iOS


91

Sur iOS (Safari 5), je dois suivre pour l'élément d'entrée (ombre intérieure supérieure):

exemple

Je veux supprimer l'ombre supérieure, le bogue -webkit-appearancene s'enregistre pas.

Le style actuel est:

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
En remarque, vous devez être prudent en définissant «-webkit-looks» sur un inputsélecteur général . Cela peut provoquer des effets indésirables sur les boutons radio et les cases à cocher.
davidpauljunior

Merci je l'utilise sur l'élément
WHITECOLOR

Réponses:


203

Vous devrez utiliser -webkit-appearance: none;pour remplacer les styles IOS par défaut. Cependant, sélectionner uniquement la inputbalise dans CSS ne remplacera pas les styles IOS par défaut, car IOS ajoute ses styles à l'aide d'un sélecteur d'attribut input[type=text]. Par conséquent, votre CSS devra utiliser un sélecteur d'attribut pour remplacer les styles CSS IOS par défaut qui ont été prédéfinis.

Essaye ça:

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;    
}

Liens utiles:

Vous pouvez en savoir plus appearanceici:

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

Si vous souhaitez en savoir plus sur les sélecteurs d'attributs CSS, vous pouvez trouver un article très instructif ici:

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


3
Vous pouvez également appliquer ces styles à input[type=password].
Rockallite

1
Ce poste a presque 4 ans. Cela nécessite-t-il une mise à jour?

1
Le sélecteur Safari actuellement utilisé est textarea, input[type="range"], input, input:matches([type="password"], [type="search"])- il suffit de l'utiliser et il devrait fonctionner dans tous les cas.
da_berni

Pour moi, cela n'a fonctionné que lorsque j'ai postulé !importantau appearance. Devrait également appearancefonctionner pour les selects.
RuiVBoas

30
background-clip: padding-box;

Semble également supprimer les ombres.

Comme @davidpauljunior l'a mentionné; soyez prudent lors du réglage -webkit-appearancesur un sélecteur d'entrée général.


1
background-clip: padding-box;supprimera l'ombre dans le champ de saisie de texte sur iOS. Voir codepen.io/jstnrs/pen/YXBLVN par exemple (assurez-vous d'ouvrir l'URL sur un appareil iOS).
jstnrs

3
Cela fonctionne, mais est-ce que quelqu'un sait comment cela fonctionne? Merci.
Nostalg.io

n'a pas fonctionné pour moi mais a -webkit-appearance: none;fait.
Lefi Tarik

5

webkit supprimera toutes les propriétés

-webkit-appearance: none;

Essayez d'utiliser la propriété box-shadow pour supprimer l'ombre sur votre élément d'entrée

box-shadow: none !important;

4

J'ai essayé de trouver une solution qui a.) Fonctionne et b.) Je suis capable de comprendre pourquoi cela fonctionne .

Je sais que l'ombre des entrées (et la bordure arrondie des entrées [type = "search"]) provient d'une image d'arrière-plan.

Donc, évidemment, le réglage background-image: noneétait ma première tentative, mais cela ne semble pas fonctionner.

Le réglage background-image: url()fonctionne, mais je suis toujours préoccupé par le fait d'avoir un vide url(). Bien que ce ne soit actuellement qu'un mauvais pressentiment.

background-clip: padding-box; semble faire le travail aussi, mais même après avoir lu la documentation "background-clip", je ne comprends pas pourquoi cela supprime complètement l'arrière-plan.

Ma solution préférée:

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

C'est un css valide et je comprends comment cela fonctionne.


@BugWhisperer Cela fonctionne sous iOS 12.4 pour moi: codepen.io/receter/pen/ymMzRG Pouvez-vous fournir plus de détails?
Andreas Riedmüller

n'a pas fonctionné pour moi, mais a background-clip: padding-box !importantfonctionné.
oldboy

@BugWhisperer Pouvez-vous vérifier si les exemples sur codepen.io/receter/pen/ymMzRG fonctionnent pour vous? Pouvez-vous également essayer si cela background-image: linear-gradient(transparent, transparent) !important;fonctionne pour vous? Je serais heureux de savoir quel est le problème ici.
Andreas Riedmüller

malheureusement, je viens de mettre à jour mon téléphone. tous fonctionnent en safari et chrome via codepen, mais je me demande si vous obtiendriez les mêmes résultats si vous le
testiez en

2

Bien que la réponse acceptée soit un bon début, comme d'autres l'ont souligné, elle ne fonctionne que pour les intrants dont typeest "text". Il existe une myriade d'autres types d'entrée qui s'affichent également sous forme de zones de texte sur iOS, et nous devons donc développer cette règle pour prendre en compte ces autres types.

Voici le CSS que j'utilise pour débarrasser les champs de texte d'entrée et les zones de texte de l'ombre intérieure, tout en préservant le style par défaut pour les boutons, les cases à cocher, les curseurs de plage, les listes déroulantes de date / heure et les boutons radio, qui sont tous créés à l'aide de la <input>balise humble également .

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

-7

Cela fonctionne mieux pour moi. De plus, cela signifie que je n'ai pas à l'appliquer à chaque type d'entrée (par exemple, texte, tél, e-mail, etc.).

* {
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
}
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.