2011-03-02 20 views
15

Actualmente estoy diseñando la barra de desplazamiento usando las propiedades CSS de Webkit :: - webkit-scrollbar y me gustaría cambiar estas propiedades en un evento mousemove. El problema es que parece que no puedo encontrar la forma de acceder al CSS de la barra de desplazamiento de forma dinámica.Webkit scrollbar dynamic styling

¿Es posible diseñar la barra de desplazamiento de webkit dinámicamente, a través de javascript (posiblemente usando jQuery)?

+0

Puede ser que esto puede ayudar .. Inserte el estilo dinámicamente en el cuerpo en su desplazamiento del ratón http://stackoverflow.com/questions/1212500/jquery-create -css-rule-class-runtime – Amitd

Respuesta

0

Para esto, debe reemplazar la barra de desplazamiento por completo.

Es solo una cuestión de picking whichever one gives you the easiest API.

+0

¡Gracias por tu contribución! Pero desafortunadamente personalmente no quiero usar jQuery. – Sebas

+3

@Sebas la pregunta original sais '" posiblemente usando jQuery "' –

+0

sí, * posiblemente *. ¡Gracias por tu contribución! – Sebas

1

Sí, puedes hacerlo.

Debe incluir dinámicamente la regla de estilo CSS en la hoja de estilo. Y luego cambiarlo.

Puede hacerlo por this plugin

Si no necesita utilizar jQuery - usted puede hacerlo por pura Javascript: link 1 link 2. Pero hay problemas entre navegadores.

Véase también Setting CSS pseudo-class rules from JavaScript

+1

gracias, no me gusta y no lo usaré, pero esta es de hecho la única solución en este momento. – Sebas

2

Si desea cambiar el inmueble barra de desplazamiento cuando el ratón está sobre ella. Puede hacerlo con CSS, aquí un ejemplo http://jsfiddle.net/olgis/7Lg2R/ (lo siento por el conjunto de colores feo).

Si desea cambiar el color de la barra de desplazamiento si el mouse está sobre un contenedor, mire esta publicación Style webkit scrollbar on certain state. Se describen varias formas de hacerlo, con y sin JavaScript.

OBSERVACIÓN: No sé por qué razón ninguno de esos ejemplos (con CSS ni JavaScript) NO funcionan en mi Firefox 11 para Mint, pero todos funcionan perfectamente en Chrome 18.0.1025.151.

1

Puede personalizar las barras de desplazamiento con CSS3, estas generalmente solo funcionan para barras de desplazamiento internas y no para la barra de desplazamiento principal del navegador. También puede agregar el atributo MOZ a lo siguiente.

 ::-webkit-scrollbar { 
      width: 10px; 
      height: 10px; 
     } 
     ::-webkit-scrollbar-button:start:decrement, 
     ::-webkit-scrollbar-button:end:increment { 
      display: none; 
     } 

     ::-webkit-scrollbar-track-piece { 
      background-color: #3b3b3b; 
      -webkit-border-radius: 6px; 
     } 

     ::-webkit-scrollbar-thumb:vertical { 
      -webkit-border-radius: 6px; 
      background: #666 url(scrollbar_thumb_bg.png) no-repeat center; 
     } 

Demostración: http://geryit.com/lib/custom-css3-scrollbars
Descargar Fuente: http://geryit.com/lib/custom-css3-scrollbars/custom-css3-scrollbars.zip

4

Hay una buena solución para este problema, puede agregar varias clases CSS con estilos tímidas de la barra de desplazamiento, y luego cambiar las clases de forma dinámica con Javascript.

Ejemplo:

.red::-webkit-scrollbar { ... } 
.blue::-webkit-scrollbar { ... } 

Un botón que cambia entre las clases red y blue:

$("#changecss").on("click", function(){ 
    $(".red,.blue").toggleClass("red").toggleClass("blue"); 
}); 

Aquí es un violín de trabajo: http://jsfiddle.net/promatik/wZwJz/18/

1

Usted puede hacer que una etiqueta <style> con id="scrollbar_style" y luego agregue css dentro de esta dinámicamente así:

document.getElementById('scrollbar_style').innerHTML = '::-webkit-scrollbar{width:15px;}'; 

sólo recuerda que el uso de innerHtml en un elemento no sólo agregará su nuevo código, que TAMBIÉN DELETE lo que había dentro de ese elemento.

problema resuelto.

2

creé la página con cuatro pestañas de cada juego de colores diferentes, así como barra de desplazamiento sin embargo, esto sólo funcionaba dando clase a la etiqueta del cuerpo

body.greenbody::-webkit-scrollbar { 
width: 10px; 
} 
body.greenbody::-webkit-scrollbar-track { 
background-color:rgb(0,50,0); 
} 
body.greenbody::-webkit-scrollbar-thumb { 
background-image:url("../assets/ScrollGreen.png"); 
} 

/

body.bluebody::-webkit-scrollbar { 
width: 10px; 
} 
body.bluebody::-webkit-scrollbar-track { 
background-color:rgb(0,0,50); 
} 
body.bluebody::-webkit-scrollbar-thumb { 
background-image:url("../assets/ScrollBlue.png"); 
} 

html

<body id="body" class="greenbody" bgcolor="#202020"> 

javascript para cada botón de tabulación (solo la sección de la barra de desplazamiento le muestra e)

document.getElementById("body").className="greenody"; 
.........other function().... 
document.getElementById("body").className="bluebody"; 

ScreenShot1GreenScrollBar Image ScreenShot2BlueScrollBar Image

+0

¿Es todo tu HTML? Es posible que desee buscar más información sobre los conceptos básicos de HTML y CSS, ya que parece que no está familiarizado con el CSS básico para aplicar alturas fijas y desplazar el contenido dentro de otros elementos. En definitiva, hay muchas preguntas sin respuesta dentro de esta pregunta. – SEoF

+0

Bueno, soy muy nuevo en esto. Solo lo hago como "pase de tiempo". Y no tenía sujeto a trabajar en ... así que solo elaboré un documento sobre mí mismo. Y lo hice casi compatible con el móvil (probado en el mío) y las pestañas (herramientas chrome dev probadas). – SparkShredder

+0

[Rajnoor Brar] (https://drive.google.com/open?id=1mFVqZMyJbU1OrpB3oZDAi0vG8pNzDnjz) Bueno, este es el enlace a toda la web (.zip). Compruébelo. Hay más de lo que parece. @SEOF – SparkShredder