Remover sombra de entrada iOS


92

No iOS (Safari 5), tenho que seguir o elemento de entrada (sombra interna superior):

exemplo

Quero remover a sombra superior, o bug -webkit-appearancenão salva.

O estilo atual é:

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
Como uma observação lateral, você deve ter cuidado ao definir '-webkit-aparência' em um inputseletor geral . Isso pode causar efeitos indesejados em botões de rádio e caixas de seleção.
davidpauljunior

Obrigado, eu o uso no elemento
WHITECOLOR

Respostas:


207

Você precisará usar -webkit-appearance: none;para substituir os estilos IOS padrão. No entanto, selecionar apenas a inputtag no CSS não substituirá os estilos IOS padrão, porque o IOS adiciona seus estilos usando um seletor de atributos input[type=text]. Portanto, seu CSS precisará usar um seletor de atributo para substituir os estilos CSS IOS padrão que foram predefinidos.

Experimente isto:

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

Links úteis:

Você pode aprender mais sobre appearanceaqui:

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

Se quiser saber mais sobre seletores de atributos CSS, você pode encontrar um artigo muito informativo aqui:

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


3
Você também pode querer aplicar esses estilos a input[type=password].
Rockallite

1
Este post tem quase 4 anos. Isso precisa ser atualizado?

1
O seletor do Safari atualmente usado é textarea, input[type="range"], input, input:matches([type="password"], [type="search"])- basta usá-lo e ele deve funcionar em todos os casos.
da_berni

Para mim, só funcionou quando me inscrevi !importantno appearance. Também appearancedeve funcionar para selects também.
RuiVBoas

31
background-clip: padding-box;

Parece remover as sombras também.

Como @davidpauljunior mencionado; tenha cuidado ao definir-webkit-appearance um seletor de entrada geral.


1
background-clip: padding-box;irá remover a sombra dentro do campo de entrada de texto no iOS. Veja codepen.io/jstnrs/pen/YXBLVN por exemplo (certifique-se de abrir o URL em um dispositivo iOS).
jstnrs

3
Isso funciona, mas alguém sabe como funciona? Obrigado.
Nostalg.io

não funcionou para mim, mas -webkit-appearance: none;funcionou.
Lefi Tarik

5

webkit irá remover todas as propriedades

-webkit-appearance: none;

Tente usar a propriedade box-shadow para remover a sombra do seu elemento de entrada

box-shadow: none !important;

4

Tentei encontrar uma solução que a.) Funcione e b.) Sou capaz de entender por que funciona .

Eu sei que a sombra para entradas (e a borda arredondada para entrada [type = "search"]) vem de uma imagem de fundo.

Então, obviamente, definindo background-image: none foi minha primeira tentativa, mas isso não parece funcionar.

A configuração background-image: url()funciona, mas ainda estou preocupado em ter um vazio url(). Embora atualmente seja apenas um sentimento ruim.

background-clip: padding-box; parece fazer o trabalho também, mas mesmo depois de ler os documentos do "clipe de fundo", não entendo por que isso remove completamente o fundo.

Minha solução favorita:

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

Este é um CSS válido e eu entendo como funciona.


@BugWhisperer Ele funciona no iOS 12.4 para mim: codepen.io/receter/pen/ymMzRG Você pode fornecer mais detalhes?
Andreas Riedmüller

não funcionou para mim, mas background-clip: padding-box !importantfuncionou.
oldboy

@BugWhisperer Você pode verificar se os exemplos em codepen.io/receter/pen/ymMzRG funcionam para você? Você também pode tentar se background-image: linear-gradient(transparent, transparent) !important;funciona para você? Eu ficaria feliz em saber qual é o problema aqui.
Andreas Riedmüller

infelizmente, acabei de atualizar meu telefone. todos eles funcionam em safari e cromo por meio de codepen, mas eu me pergunto se você obteria os mesmos resultados se testasse nativamente
oldboy

2

Embora a resposta aceita seja um bom começo, como outros apontaram, ela só funciona para entradas de quem typeé "text". Há uma miríade de outros tipos de entrada que também são renderizados como caixas de texto no iOS, portanto, precisamos expandir essa regra para levar em consideração esses outros tipos.

Aqui está o CSS que estou usando para livrar os campos de texto de entrada e áreas de texto da sombra interna, preservando o estilo padrão para botões, caixas de seleção, controles deslizantes de intervalo, menus suspensos de data / hora e botões de opção, todos criados com a <input>tag humilde também .

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

-7

Isso funciona melhor para mim. Além disso, significa que não preciso aplicá-lo a todos os tipos diferentes de entrada (por exemplo, texto, telefone, e-mail, etc.)

* {
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
}
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.