- A partir do Chrome 135, começou o suporte a um novo recurso que permite customizar o elemento
<select> com CSS, mantendo os padrões de acessibilidade
- Após anos de alinhamento de especificações e desenvolvimento, ele é oferecido como um componente robusto que não quebra nem em navegadores antigos
- Também é possível incluir conteúdo HTML e, com a adição de
appearance: base-select, passam a ser possíveis várias customizações, como animações e estilos
Introdução ao appearance: base-select
É possível incluir conteúdo HTML em <select>
- Antes, se você inserisse imagens ou SVG dentro de
<option>, o navegador ignorava
- Ao aplicar
appearance: base-select, o HTML é renderizado como está
- No Chrome, opções com SVG aparecem, mas Safari, Firefox e outros ainda não oferecem suporte
- Demo no CodePen: link prático
- Esse recurso foi introduzido como um experimento Finch e pode ser interrompido se necessário
Customização completa possível
- Todos os componentes de
base-select podem ser substituídos, animados e estilizados
- É possível criar uma UI de seleção significativa com vários designs
- Os exemplos incluem indicação de status, opções com avatar, seletor de cores e seleção de status de publicação
- Demo no CodePen: link prático
A interface JavaScript não mudou
- O comportamento JavaScript do
<select> existente continua exatamente igual
- Porém, se HTML for inserido em
<option>, a forma de analisar o valor selecionado mudou, então é preciso testar
- Se você usa a propriedade
value, não é necessário fazer ajustes adicionais
Materiais adicionais
Padrões web
Materiais relacionados ao Chrome
Materiais da comunidade
Demos usando <select> customizado
4 comentários
Opiniões no Hacker News
O fato de eu estar desproporcionalmente empolgado com esse recurso provavelmente denuncia meu eu de desenvolvedor web do começo dos anos 2000. É um recurso muito útil, porque o elemento
selectoferece funcionalidades que não podem ser reproduzidas em HTMLAté que esse recurso tenha suporte amplo, ele deve ser usado como aprimoramento progressivo. No momento, segundo o caniuse.com, há 46% de suporte global
Fico muito feliz em ver isso sendo implementado. Vai ser uma melhora muito maior do que substitutos de caixa de seleção customizados
Fico preocupado com o fato de isso não acionar os componentes nativos do sistema operacional móvel. Os componentes nativos são confiáveis, acessíveis e responsivos
select, mas também para entradas de data/horaÉ melhor não aplicar estilo a alguns controles. No caso das barras de rolagem, elas ficam difíceis de usar quando são finas demais ou têm pouco contraste de cor
selectpadrão não é o controle mais bonito, mas cumpre sua funçãoParece ser algo que os desenvolvedores web esperam há décadas. Tem potencial para substituir muitas bibliotecas JS
Agora é possível customizar elementos
selectcom CSS em navegadores ChromiumFoi fornecido o link para a issue no Firefox
Se continuar assim, logo teremos paridade de recursos com o VB6
Melhor do que bibliotecas JS quebradas. Mas a principal preocupação é como o layout se comporta quando há muitas opções
anchor()Então o
<selectlist>vai deixar de ser necessário?Falando de outra coisa, parece que o
<select>do título não é exibido no Slackbot hahaAh, puxa, isso eu vou corrigir mais tarde.