Select customizável (appearance: base-select)

appearance: base-select permite estilizar por completo o menu de opções do select nativo, com ícones e layout customizado, sem perder a acessibilidade nativa do componente.

O <select> nativo sempre foi ótimo em acessibilidade e comportamento, mas péssimo em personalização: dava pra estilizar a caixa fechada, mas o menu de opções ficava preso à aparência do sistema operacional. O novo appearance: base-select finalmente resolve isso.

O problema de sempre

Para ter um select com ícones, layout customizado ou múltiplas colunas nas opções, a solução quase sempre era abandonar o <select> nativo e recriar tudo com <div>s, JavaScript e muita atenção à acessibilidade (navegação por teclado, leitores de tela, etc.).

Como funciona o base-select

Aplicando appearance: base-select no <select>, o navegador libera o estilo completo da lista de opções, mantendo todo o comportamento nativo (teclado, acessibilidade, formulários):

<select id="pais">
    <option value="br">🇧🇷 Brasil</option>
    <option value="us">🇺🇸 Estados Unidos</option>
    <option value="pt">🇵🇹 Portugal</option>
</select>
select, ::picker(select) {
    appearance: base-select;
}

select {
    border-radius: 8px;
    padding: 8px 12px;
}

select::picker-icon {
    color: #12A8C3;
}

option {
    padding: 8px 12px;
    border-radius: 4px;
}

option:checked {
    background: #12A8C3;
    color: #fff;
}

Com isso, dá pra estilizar cores, espaçamento, bordas e até o ícone da setinha, tudo com CSS puro, sem reimplementar o componente.

Conteúdo customizado dentro das opções

Outra novidade é poder colocar HTML mais rico dentro de cada <option>, como ícones ou imagens, algo que o <select> nativo nunca permitiu antes:

<select id="usuario">
    <option value="1">
        <img src="avatar1.png" alt="">
        Ana Silva
    </option>
    <option value="2">
        <img src="avatar2.png" alt="">
        Bruno Costa
    </option>
</select>

Vantagens

Compatibilidade

Essa é uma funcionalidade bem recente e ainda em expansão entre navegadores. Vale sempre checar o suporte antes de usar em produção, com um fallback para o select tradicional nos navegadores que ainda não suportam.

caniuse

Conclusão

O select customizável é uma das mudanças mais esperadas por quem desenvolve formulários, permitindo finalmente estilizar esse componente sem abrir mão da acessibilidade nativa. Vale acompanhar de perto a evolução do suporte nos navegadores.

Tecnologia:
html

Deixe seu Comentário!

Comentário
Nome
Email