Usuń cień wejściowy iOS

91

Na iOS (Safari 5) muszę wykonać następujące czynności dla elementu wejściowego (górny wewnętrzny cień):

przykład

Chcę usunąć górny cień, błąd -webkit-appearancesię nie zapisuje.

Obecny styl to:

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;
}
BIAŁY KOLOR
źródło
3
Na marginesie, powinieneś ostrożnie ustawiać „-webkit-look” na inputselektorze ogólnym . Może powodować niepożądane efekty na przyciskach opcji i polach wyboru.
davidpauljunior
Dzięki, używam go na elemencie
WHITECOLOR

Odpowiedzi:

203

Musisz użyć, -webkit-appearance: none;aby zastąpić domyślne style IOS. Jednak wybranie samego inputznacznika w CSS nie nadpisze domyślnych stylów IOS, ponieważ IOS dodaje swoje style za pomocą selektora atrybutów input[type=text]. Dlatego twój CSS będzie musiał użyć selektora atrybutu, aby zastąpić domyślne style CSS IOS, które zostały wstępnie ustawione.

Spróbuj tego:

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

Przydatne linki:

Możesz dowiedzieć się więcej o tym appearancetutaj:

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

Jeśli chcesz dowiedzieć się więcej o selektorach atrybutów CSS, możesz znaleźć bardzo pouczający artykuł tutaj:

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

Mastrianni
źródło
3
Możesz również zastosować te style input[type=password].
Rockallite
1
Ten post ma prawie 4 lata. Czy to wymaga aktualizacji?
1
Obecnie używany selektor Safari to textarea, input[type="range"], input, input:matches([type="password"], [type="search"])- po prostu użyj go i powinien działać we wszystkich przypadkach.
da_berni
U mnie zadziałało tylko wtedy, gdy złożyłem podanie !importanto appearance. appearancePowinien również działać dla selects.
RuiVBoas
30
background-clip: padding-box;

Wydaje się, że również usuwa cienie.

Jak wspomniał @davidpauljunior ; uważaj przy ustawianiu -webkit-appearanceogólnego selektora wejścia.

jstnrs
źródło
1
background-clip: padding-box;usunie cień w polu wprowadzania tekstu w systemie iOS. Zobacz na przykład codepen.io/jstnrs/pen/YXBLVN (pamiętaj, aby otworzyć adres URL na urządzeniu z systemem iOS).
jstnrs
3
To działa, ale czy ktoś wie, jak to działa? Dzięki.
Nostalg.io
nie działał dla mnie, ale -webkit-appearance: none;tak.
Lefi Tarik
5

webkit usunie wszystkie właściwości

-webkit-appearance: none;

Spróbuj użyć właściwości box-shadow, aby usunąć cień z elementu wejściowego

box-shadow: none !important;
ShinyJos
źródło
4

Próbowałem znaleźć rozwiązanie, które a.) Działa i b.) Jestem w stanie zrozumieć, dlaczego to działa .

Wiem, że cień dla danych wejściowych (i zaokrąglona ramka dla danych wejściowych [typ = "szukaj"]) pochodzi z obrazu tła.

Więc oczywiście ustawienie background-image: nonebyło moją pierwszą próbą, ale to nie wydaje się działać.

Ustawienie background-image: url()działa, ale nadal martwię się, że mam pusty url(). Chociaż obecnie to tylko złe przeczucie.

background-clip: padding-box; wydaje się, że to również spełnia swoje zadanie, ale nawet po przeczytaniu dokumentacji "background-clip" nie rozumiem, dlaczego to całkowicie usuwa tło.

Moje ulubione rozwiązanie:

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

To jest poprawny css i rozumiem, jak to działa.

Andreas Riedmüller
źródło
@BugWhisperer U mnie działa w iOS 12.4: codepen.io/receter/pen/ymMzRG Czy możesz podać więcej szczegółów?
Andreas Riedmüller
nie działało dla mnie, ale background-clip: padding-box !importantdziałało.
oldboy
@BugWhisperer Czy możesz sprawdzić, czy przykłady na codepen.io/receter/pen/ymMzRG działają dla Ciebie? Czy możesz też spróbować, czy background-image: linear-gradient(transparent, transparent) !important;działa dla Ciebie? Chętnie dowiem się, o co chodzi.
Andreas Riedmüller
niestety właśnie zaktualizowałem swój telefon. wszystkie działają w safari i chrome przez codepen, ale zastanawiam się, czy uzyskasz takie same wyniki, jeśli przetestujesz to natywnie
oldboy.
2

Chociaż zaakceptowana odpowiedź jest dobrym początkiem, jak zauważyli inni, działa ona tylko w przypadku danych wejściowych, których typejest "text". Istnieje mnóstwo innych typów danych wejściowych, które również renderują się jako pola tekstowe w systemie iOS, dlatego musimy rozszerzyć tę regułę, aby uwzględnić te inne typy.

Oto CSS, którego używam, aby pozbyć się pól tekstowych wejściowych i obszarów tekstowych wewnętrznego cienia, zachowując jednocześnie domyślny styl przycisków, pól wyboru, suwaków zakresu, menu rozwijanych daty / czasu i przycisków opcji, z których wszystkie zostały również utworzone przy użyciu skromnego <input>tagu .

textarea,
input:matches(
  [type="email"],
  [type="number"],
  [type="password"],
  [type="search"],
  [type="tel"],
  [type="text"],
  [type="url"]
) {
  -webkit-appearance: none;
}
Tom Spencer
źródło
-7

To działa lepiej dla mnie. Dodatkowo oznacza to, że nie muszę go stosować do każdego rodzaju danych wejściowych (np. Tekst, tel, e-mail itp.).

* {
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
}
Reado
źródło