Estilização de Campos de Busca com Box-shadow e Bordas Arredondadas

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.

Tags: CSS3 UI Design box-shadow frontend Web Design

Publicado em 9-3 05:20