- Desde Chrome 135, comienza el soporte para una nueva función que permite personalizar con CSS el elemento
<select> sin perder los estándares de accesibilidad
- Tras años de ajustes de especificación y desarrollo, se ofrece como un componente sólido que no se rompe en navegadores antiguos
- También puede incluir contenido HTML y, con la incorporación de
appearance: base-select, ahora es posible aplicar animaciones, estilos y muchas otras personalizaciones
Introducción a appearance: base-select
Se puede incluir contenido HTML dentro de <select>
- Antes, si se insertaban imágenes o SVG dentro de
<option>, el navegador los ignoraba
- Al aplicar
appearance: base-select, se renderizan tal cual como HTML
- En Chrome se ven opciones con SVG incluidos, pero Safari, Firefox y otros todavía no lo soportan
- Demo en CodePen: enlace de prueba
- Esta función fue introducida como experimento de Finch y podría desactivarse si fuera necesario
Personalización completa
- Todos los componentes de
base-select pueden reemplazarse, animarse y estilizarse
- Permite construir interfaces de selección con significado mediante distintos diseños
- Algunos ejemplos incluyen indicador de estado, opciones con avatar, selector de colores y selección de estado de publicación
- Demo en CodePen: enlace de prueba
La interfaz de JavaScript no cambia
- El comportamiento de JavaScript del
<select> existente se mantiene igual
- Eso sí, si se agrega HTML dentro de
<option>, hay que probar porque cambió la forma de parsear el valor seleccionado
- Si se usa la propiedad
value, no hace falta hacer cambios adicionales
Material adicional
Estándares web
Material relacionado con Chrome
Material de la comunidad
Demos que aprovechan <select> personalizado
4 comentarios
Opiniones en Hacker News
El hecho de que esto me emocione de forma desproporcionada probablemente delata a mi yo de desarrollador web de principios de los 2000. Es una función muy útil porque el elemento
selectofrece capacidades que no se pueden recrear con HTMLHasta que esta función tenga soporte amplio, debería usarse como mejora progresiva. Según caniuse.com, actualmente tiene un 46% de soporte a nivel global
Me da muchísimo gusto ver que esto se implementó. Va a ser una mejora mucho mayor que los reemplazos personalizados de cuadros de selección
Me preocupa que no active los componentes integrados del sistema operativo móvil. Los componentes integrados son confiables, accesibles y responden bien
select, sino también a las entradas de fecha/horaHay algunos controles a los que es mejor no aplicar estilo. En el caso de las barras de desplazamiento, a veces quedan demasiado delgadas o con mal contraste de color, y se vuelven difíciles de usar
selectpredeterminado no es el control más bonito, pero cumple su funciónParece ser algo que los desarrolladores web han estado esperando durante décadas. Podría reemplazar muchas librerías de JS
Ahora se puede personalizar el elemento
selectcon CSS en navegadores ChromiumSe proporcionó un enlace al issue de Firefox
Si seguimos así, pronto tendremos paridad de funciones con VB6
Es mejor que una librería de JS rota. Pero mi principal duda es cómo se comporta el layout cuando hay muchas opciones
anchor()Entonces, ¿eso significa que
<selectlist>ya no será necesario?Es otro tema, pero parece que en el bot de Slack no se muestra el
<select>del título jajaAh, esto lo corregiré más adelante.