Risposta breve: No, non è possibile utilizzare transition
su una lunga risposta ::-webkit-scrollbar
: Ci sono mezzi per ottenere un effetto simile interamente in CSS.
Spiegazione:
- Abbiamo bisogno di creare un contenitore esterno che verrà scorrere. Quindi vogliamo creare un contenitore interno.
- Il contenitore esterno avrà una proprietà
background-color
. Questa proprietà corrisponderà al colore su cui vogliamo passare per la barra di scorrimento.
- Il contenitore interno corrisponderà all'altezza del contenitore esterno e avrà un
background-color
che maschera il contenitore esterno.
- La barra di scorrimento
background-color
erediterà il contenitore esterno.
- La proprietà
transition
verrà applicata allo background-color
del contenitore esterno.
Uno svantaggio principale qui è che devi fare un po 'di mascheramento. Questo può essere un po 'complicato se il tuo sfondo non è un colore solido, dal momento che probabilmente il contenitore interno deve corrispondere. Se non è una preoccupazione, questo funzionerà per te. Ecco il codice per mettere tutto insieme per una pagina con uno elemento di scorrimento orizzontale.
HTML
<div id="container-outer">
<div id="container-inner">
<!-- Content goes here -->
</div>
</div>
CSS
/* Scrollbar */
::-webkit-scrollbar {
border: 0;
height: 10px;
}
::-webkit-scrollbar-track {
background: rgba(0,0,0,0);
}
::-webkit-scrollbar-thumb {
background-color: inherit; /* Inherits from outer container */
border-radius: 20px;
}
/* Container */
#container-outer {
overflow-y: hidden;
overflow-x: scroll; /* Horizontal-only scrolling */
height: 400px;
background-color: white; /* Initial color of the scrollbar */
transition: background-color 200ms;
}
#container-outer:hover {
background-color: red; /* Hover state color of the scrollbar */
}
#container-inner {
background-color: white; /* Masks outer container */
font-size: 0;
height: inherit; /* Inherits from outer container */
width: 10000px; /* Set to see the scrolling effect */
}
Note:
- Dovrebbe essere ovvio, ma questa è una soluzione di Webkit. La domanda riguardava specificamente Webkit e non altro, quindi questa risposta riguarda solo Webkit.
- Probabilmente il tuo contenitore esterno avrà bisogno di un
max-width
che corrisponda a quello del tuo contenitore interno width
, altrimenti potresti vedere qualche stranezza su schermi estremamente grandi. Questo è un caso limite per quando la larghezza del browser è maggiore della larghezza del contenuto che scorre orizzontalmente. Questo presuppone che tu stia usando una scroll orizzontale, come fa il codice di esempio.
- Nella maggior parte dei casi, gli stili di volo non funzionano come previsto per i dispositivi mobili. Questo è un problema dato come c'è un'enorme penetrazione nel mercato dei browser mobili Webkit. Prendi questo in considerazione prima di usare questa soluzione.
fonte
2015-11-19 16:43:03
non credo che sia possibile .. Le barre di scorrimento sono notoriamente difficili da stile .. –
si tratta di più di essere efficiente ... – Busti
@ArunAravind Certo, va bene lo stile in base alla funzionalità disponibili. Tutte le fallback sono graziose in questo senso. Inoltre, i designer e i clienti artistici visualizzeranno i siti con un browser web-kit. Quindi, perché non prendere un po 'di tempo in più per placare la loro psiche? – roydukkey