Quiero personalizar una barra de desplazamiento con CSS.
Uso este código CSS de WebKit, que funciona bien para Safari y Chrome:
::-webkit-scrollbar {
width: 15px;
height: 15px;
}
::-webkit-scrollbar-track-piece {
background-color: #C2D2E4;
}
::-webkit-scrollbar-thumb:vertical {
height: 30px;
background-color: #0A4C95;
}
¿Cómo puedo hacer lo mismo en Firefox?
Sé que puedo hacerlo fácilmente usando jQuery, pero preferiría hacerlo con CSS puro si es factible.
Agradecería el consejo experto de alguien!
Respuestas:
¡A finales de 2018, ahora hay una personalización limitada disponible en Firefox!
Ver estas respuestas:
Y esto para información de fondo: https://bugzilla.mozilla.org/show_bug.cgi?id=1460109
No hay equivalente de Firefox::-webkit-scrollbar
y amigos.Tendrás que seguir con JavaScript.A mucha gente le gustaría esta función, consulte: https://bugzilla.mozilla.org/show_bug.cgi?id=77790
En cuanto a los reemplazos de JavaScript, puede intentar:
fuente
-moz-appearance
puede ayudar."The -moz-appearance CSS property is used in Gecko (Firefox) to display an element using a platform-native styling based on the operating system's theme."
- solo obtendrás una barra de desplazamiento nativa.Firefox 64 agrega soporte para el borrador de especificación CSS Scrollbars Module Level 1 , que agrega dos nuevas propiedades de
scrollbar-width
yscrollbar-color
que dan cierto control sobre cómo se muestran las barras de desplazamiento.Puede establecer
scrollbar-color
uno de los siguientes valores (descripciones de MDN):auto
Representación de plataforma predeterminada para la parte de seguimiento de la barra de desplazamiento, en ausencia de otras propiedades de color de la barra de desplazamiento relacionadas.dark
Muestre una barra de desplazamiento oscura, que puede ser una variante oscura de la barra de desplazamiento proporcionada por la plataforma o una barra de desplazamiento personalizada con colores oscuros.light
Muestre una barra de desplazamiento clara, que puede ser una variante ligera de la barra de desplazamiento proporcionada por la plataforma o una barra de desplazamiento personalizada con colores claros.<color>
<color>
Aplica el primer color al pulgar de la barra de desplazamiento, el segundo a la pista de la barra de desplazamiento.Tenga en cuenta que
dark
y loslight
valores no se implementan actualmente en Firefox .notas de macOS:
Las barras de desplazamiento semitransparentes de ocultación automática que son las predeterminadas de macOS no se pueden colorear con esta regla (todavía eligen su propio color de contraste basado en el fondo). Solo las barras de desplazamiento que se muestran permanentemente (Preferencias del sistema> Mostrar barras de desplazamiento> Siempre) están coloreadas.
Demostración visual:
Mostrar fragmento de código
Puede establecer
scrollbar-width
uno de los siguientes valores (descripciones de MDN):auto
El ancho de barra de desplazamiento predeterminado para la plataforma.thin
Una variante de ancho de barra de desplazamiento delgada en plataformas que proporcionan esa opción, o una barra de desplazamiento más delgada que el ancho de barra de desplazamiento de plataforma predeterminado.none
No se muestra la barra de desplazamiento, sin embargo, el elemento seguirá siendo desplazable.También puede establecer un valor de longitud específico, de acuerdo con la especificación. Ambos
thin
y una longitud específica pueden no hacer nada en todas las plataformas, y lo que hace exactamente es específico de la plataforma. En particular, Firefox no parece admitir actualmente un valor de longitud específico ( este comentario en su rastreador de errores parece confirmar esto ). Sinthin
embargo, el trabajo de teclado parece estar bien soportado, con macOS y Windows al menos.Probablemente valga la pena señalar que la opción de valor de longitud y toda la
scrollbar-width
propiedad se están considerando para su eliminación en un borrador futuro, y si eso sucede, esta propiedad en particular puede eliminarse de Firefox en una versión futura.Demostración visual:
Mostrar fragmento de código
fuente
¿Puedo ofrecer una alternativa?
Sin secuencias de comandos, solo estilos CSS estandarizados y un poco de creatividad. Respuesta corta: enmascarar partes de la barra de desplazamiento del navegador existente, lo que significa que conserva toda su funcionalidad.
Para una demostración y una explicación un poco más detallada, consulte aquí ...
jsfiddle.net/aj7bxtjz/1/
fuente
Pensé que compartiría mis hallazgos en caso de que alguien esté considerando un complemento JQuery para hacer el trabajo.
Le di una oportunidad a JQuery Custom Scrollbar . Es bastante elegante y tiene un desplazamiento suave (con inercia de desplazamiento) y tiene muchos parámetros que puede ajustar, pero terminó siendo demasiado intensivo para mi CPU (y agrega una cantidad considerable al DOM).
Ahora estoy probando Perfect Scrollbar . Es simple y liviano (6 KB) y hasta ahora está haciendo un trabajo decente. No es intensivo en CPU (por lo que puedo decir) y agrega muy poco a su DOM. Solo tiene un par de parámetros para ajustar (wheelSpeed y wheelPropagation), pero es todo lo que necesito y maneja las actualizaciones del contenido de desplazamiento muy bien (como cargar imágenes).
PD: He echado un vistazo rápido a JScrollPane, pero @simone tiene razón, ahora está un poco anticuado y es un PITA.
fuente
Desde Firefox 64 , es posible utilizar nuevas especificaciones para un estilo de barra de desplazamiento simple ( no tan completo como en Chrome con prefijos de proveedor ).
En este ejemplo, es posible ver una solución que combina diferentes reglas para abordar Firefox y Chrome con un resultado final similar (no igual) (por ejemplo, use sus reglas originales de Chrome):
Las reglas clave son:
Para Firefox
Para cromo
Tenga en cuenta que con respecto a su solución, es posible utilizar también reglas de Chrome más simples como las siguientes:
Finalmente, para ocultar las flechas en las barras de desplazamiento también en Firefox, actualmente es necesario configurarlo como " delgado " con la siguiente regla
scrollbar-width: thin;
fuente
Año 2020 esto funciona
https://github.com/Aris-t2/CustomCSSforFx/issues/160
fuente
Funciona en estilo de usuario, y parece que no funciona en páginas web. No he encontrado la dirección oficial de Mozilla sobre esto. Si bien puede haber funcionado en algún momento, Firefox no tiene soporte oficial para esto. Este error aún está abierto https://bugzilla.mozilla.org/show_bug.cgi?id=77790
consulte http://codemug.com/html/custom-scrollbars-using-css/ para obtener más detalles.
fuente
fuente