Desativar o arredondamento do elemento de entrada do iPhone / Safari


374

Meu site é bem renderizado no navegador iPhone / Safari, com uma exceção: Meus campos de entrada de texto têm um estilo arredondado estranho que não parece nada bom com o restante do meu site.

Existe uma maneira de instruir o Safari (via CSS ou metadados) para não arredondar os campos de entrada e torná-los retangulares conforme o esperado?


11
Eu me pergunto por que nenhuma redefinição de CSS parece conter essa regra css super fácil. É uma mentira.
Toskan

11
Na verdade, eu criei uma redefinição de CSS com base no redefinição de css de eric meyer 2 com o css necessário adicionado que você encontra na resposta aqui. Está disponível no github: github.com/Jossnaz/JossiCssReset
Toskan

11
Cuidado -webkit-appearance: none;, acho melhor limitar essa condição ao escopo de um elemento de entrada específico. Caso contrário, pode ocultar os elementos de entrada de rádio, se você os tiver na página.
quas

Respostas:


659

No iOS 5 e posterior, o bom e velho border-radiusfaz o truque:

input {
    border-radius: 0;
}

Se você deve remover apenas os cantos arredondados no iOS ou, por algum motivo, não conseguir normalizar os cantos arredondados nas plataformas, use a -webkit-border-radiuspropriedade prefixada , que ainda é suportada. É claro que note que a Apple pode optar por abandonar o suporte à propriedade prefixada a qualquer momento, mas considerando suas outras características CSS específicas da plataforma, é provável que elas continuem por aí.

Nas versões herdadas, era necessário definir -webkit-appearance: none:

input {
    -webkit-appearance: none;
}

11
A partir do iOS 5, isso removerá apenas a sombra interna. Verifique a resposta de Piyush para remover também os cantos arredondados.
Jonathan Freeland

6
-webkit-appearancena verdade, nada tem a ver com sombra interna e cantos arredondados. Não use apenas para isso. css-infos.net/property/-webkit-appearance
Rudie

14
"Se o IOS quiser cantos arredondados e sombras, permita que os usuários do IOS os possuam": isso é completamente inaceitável na minha situação, e provavelmente na maioria dos outros também.
precisa

2
!! você não deve usar esse método. Faz com que a caixa de seleção pareça indisponível.
synthresin 27/04

10
Para o <input type="search">iOS 10 eu ainda precisava -webkit-appearance: none;.
Gabriel Smoljár 3/17/17

55

input -webkit-appearance: none; sozinho não funciona.

Tente adicionar -webkit-border-radius:0px;além disso.


11
Eu tinha necessidade de adicionar o -webkit-border-radiusatributo para <input type="text">remover os cantos arredondados no iOS 5.
Jonathan Freeland

Não é necessário adicionar px após o 0
mintedsky 24/10/2015

42

É a melhor maneira de remover o arredondado no IOS.

textarea,
input[type="text"],
input[type="button"],
input[type="submit"] {
     -webkit-appearance: none;
     border-radius: 0;
}

Nota: Não use este código para a opção Selecionar. Terá problema em nosso select.


2
Eu descobri que o uso input[type]parece fazer o truque para todas as entradas.
JacobTheDev

11

A resposta aceita fez o botão de opção desaparecer no Chrome. Isso funciona:

input:not([type="radio"]):not([type="checkbox"]) {
    -webkit-appearance: none;
    border-radius: 0;
}

7

Aqui está a solução completa para o Compass (SCSS):

input {
  -webkit-appearance: none;  // remove shadow in iOS
  @include border-radius(0);  // remove border-radius in iOS
}

14
Apenas uma observação, o @include border-radius(0);mixin estará disponível apenas se você o tiver definido ou estiver usando a estrutura Compass, não apenas o SASS baunilha.
waffl

Apenas uma observação: se você estiver usando SCSS, provavelmente também deverá usar o autoprefixer.
Christian

6

Para mim, no iOS 5.1.1 em um iPhone 3GS, tive que limpar o estilo de um campo de pesquisa e defini-lo para o estilo pretendido

input[type="search"] {-webkit-appearance: none; border-radius: 0 3px 3px 0;}

Fazer -webkit-border-radius: 0;sozinho não apagou o estilo nativo. Isso também foi para uma visualização da web em um aplicativo nativo.


5

Eu tive o mesmo problema, mas apenas para o botão enviar. Necessário para remover a sombra interna e os cantos arredondados -

input[type="submit"] { -webkit-appearance:none; -webkit-border-radius:0; }

4

Se você usar o normalize.css, essa folha de estilo fará algo parecido input[type="search"] { -webkit-appearance: textfield; }.

Isso tem uma especificidade mais alta do que um seletor de classe único .foo, portanto, lembre-se de que você não pode fazer exatamente isso .my-field { -webkit-appearance: none; }. Se você não tiver uma maneira melhor de obter a especificidade correta, isso ajudará:

.my-field { -webkit-appearance: none !important; }


4

Tente este, por favor:

Tente adicionar inputCss assim:

 -webkit-appearance: none;
       border-radius: 0;

3

Eu usei um raio de borda simples: 0; para remover os cantos arredondados dos tipos de entrada de texto.


0

Para renderizar os botões corretamente no Safari e em outros navegadores, você precisará fornecer um estilo específico para os botões, além de configurar a aparência do kit da web como nenhum, por exemplo:

border-radius: 0;
-webkit-appearance: none;
background-image: linear-gradient(to bottom, #e4e4e4, #f7f7f7);
border: 1px solid #afafaf
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.