Ao desenvolver interfaces modernas para dispositivos móveis, um desafio comum é a criação de campos de busca que combinam sombras suaves (box-shadow) e cantos arredondados assimétricos. Um problema frequente durante a implementação é o desalinhamento entre o campo de entrada (input) e o botão de ação, muitas vezes causado por estilos padrão do navegador.
O Probleam do Padding Padrão
Muitos desenvolvedores enfrentam dificuldades ao tentar alinhar perfeitamente um botão posicionado de forma absoluta dentro de um container de busca. Em dispositivos iOS e iPadOS, um pequeno espaço residual pode aparecer. Isso ocorre porque o elemento input possui um padding: 1px nativo em diversos navegadores. Para garantir a precisão do layout, é essencial resetar essa propriedade e definir a altura explicitamente.
Implementação Prática do Campo de Busca
Abaixo, apresentamos uma solução utilizando posicionamento absoluto para o botão e sombras externas para profundidade visual:
/* Estrutura HTML */
<div class="container-busca">
<input type="text" class="campo-texto" placeholder="Pesquisar fotos ou álbuns..." />
<button class="btn-enviar">Buscar</button>
</div>
/* Estilização CSS */
.container-busca {
width: 100%;
max-width: 500px;
position: relative;
margin: 20px 0;
}
.campo-texto {
display: block;
width: 100%;
height: 45px;
border: none;
padding: 0 0 0 45px;
font-size: 14px;
border-radius: 25px 0 25px 0;
box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
background: #fff url('icon-search.png') no-repeat;
background-size: 20px;
background-position: 15px center;
box-sizing: border-box;
}
.btn-enviar {
position: absolute;
right: 0;
top: 0;
height: 45px;
width: 100px;
border: none;
background-color: #2c3e50;
color: #ffffff;
border-radius: 25px 0 25px 0;
cursor: pointer;
transition: background 0.3s ease;
}
Entendendo a Propriedade Box-shadow
A propriedade box-shadow permite adicionar efeitos de sombra ao redor do quadro de um elemento. É importante notar que as sombras não ocupam espaço no modelo de caixa (box model), portanto, não afetam o posicionamento dos elementos vizinhos, mas podem ser cortadas por containers com overflow: hidden.
A sintaxe fundamental segue este padrão:
box-shadow: [offset-x] [offset-y] [blur-radius] [spread-radius] [color] [inset];
- Offset-X / Offset-Y: Definem a distância horizontal e vertical da sombra.
- Blur-radius: Define o quão "embaçada" a sombra será (quanto maior, mais difusa).
- Spread-radius: Aumenta ou diminui o tamanho da sombra em todas as direções.
- Color: Define a cor. Recomenda-se o uso de
rgba()para controlar a transparência. - Inset: Muda a sombra de externa para interna.
Compatibilidade e Prefixos
Embora os navegadores modernos suportem a propriedade padrão, em projetos que exigem suporte a versões muito antigas de motores WebKit ou Gecko, utilizam-se os prefixos:
/* Versões legadas */
-webkit-box-shadow: 0 2px 5px #ccc;
-moz-box-shadow: 0 2px 5px #ccc;
/* Padrão atual */
box-shadow: 0 2px 5px #ccc;
Ao trabalhar com box-shadow, evite omitir a cor da sombra. Se não for especificada, alguns navegadores (especialmente baseados em WebKit) podem renderizar a sombra como transparente, tornando o efeito invisível.