2013-08-19 11 views
32

Firefox 24 ha introdotto il supporto della barra di scorrimento Lion. Questo mostrerà le barre di scorrimento in stile Lion su Mac OS X. Vedi: https://wiki.mozilla.org/Lion_Scrollbars/TriageForza barra di scorrimento visibile in Firefox su Mac OS X

Questo causa per me un problema: una barra di scorrimento su un div è ora nascosta per impostazione predefinita. A volte voglio forzare una barra di scorrimento visibile.

Per WebKit c'è una bella soluzione (menzionata in https://davidwalsh.name/osx-overflow):

::-webkit-scrollbar { 
    -webkit-appearance: none; 
    width: 7px; 
} 

::-webkit-scrollbar-thumb { 
    border-radius: 4px; 
    background-color: rgba(0,0,0,.5); 
    -webkit-box-shadow: 0 0 1px rgba(255,255,255,.5); 
} 

Qualcuno sa come posso forzare una barra di scorrimento visibile in Firefox 24 (e su) su Mac OS X?

Esistono barre di scorrimento javascript drop-in che corrispondono alle barre di scorrimento di Web Kit?

+1

Sfortunatamente, questo non è attualmente possibile in FF. Vedi: https://bugzilla.mozilla.org/show_bug.cgi?id=77790 La soluzione alternativa sarebbe usare le barre di scorrimento javascript che reimplementano il comportamento nativo. Tieni presente che i browser rispettano le [preferenze utente] (http://osxdaily.com/2011/08/03/show-scroll-bars-mac-os-x-lion/) impostate in OSX e gli utenti sono già addestrati per scorrere le aree che sembrano avere overflow. –

+1

Una cosa a cui fare attenzione è progettare la pagina in modo tale che in realtà sembra che abbia overflow ogni volta che lo fa. Vedo molti siti ora che usano "schermi impilati" come un disegno, dove scorri verso il basso e continui a vedere diversi schermi o "pagine" - ma se non noti la barra di scorrimento corta, e la "piega" sembra essere proprio sopra l'inizio della schermata successiva, non c'è nulla che indichi che esiste più contenuto. Prendi [frontporch.io] (http://frontporch.io/) ad esempio (al 14/10/2013). –

+0

Qual è la domanda qui? Vuoi forzare la visibilità delle barre di scorrimento? O vuoi personalizzare l'aspetto delle barre di scorrimento? – HerrSerker

risposta

20

Come utente trentaquattro explained in un'altra domanda, non è possibile personalizzare le barre di scorrimento in Firefox come possibile in Chrome.

Inoltre, non v'è alcun modo per davvero "forza" Firefox rendere la barra di scorrimento vecchio stile in quanto la barra di scorrimento di default utilizzato nel sistema è predefinito dal sistema operativo stesso(si noti che è possibile modificare la quale barra di scorrimento che si desidera in Preferenze di sistema).

In altre parole, fino a quando Firefox supporta barre di scorrimento personalizzate nativi, è possibile solo con plug-in JavaScript come jScrollPane e simili.

-2

Questo lavoro dovrebbe funzionare?

html { 
    overflow-y: scroll; 
} 

http://css-tricks.com/snippets/css/force-vertical-scrollbar/

+2

Purtroppo no. Fornisce al contenitore la barra di scorrimento, ma solo quando si scorre. Altrimenti la barra di scorrimento è invisibile.(Molto confuso se un elemento è scorrevole, ma non c'è una barra di scorrimento visibile). – theorise

+0

Quindi questo è totalmente specifico per le barre di scorrimento OSX. Sono contento che tu abbia trovato una risposta, e buono a saperlo. Causa anche i "salti di centraggio" tra le pagine o appare senza influire sulla larghezza della pagina orizzontale? – groovenectar

1

Ecco una soluzione, ma è necessario utilizzare Javascript. Fondamentalmente esegue un ciclo che obbliga il browser a mostrare le barre di scorrimento.

Utilizzare questa CSS per assicurarsi che il div è impostato per visualizzare le barre di scorrimento:

.mydiv{ overflow-y:auto; } 

quindi collegare questo script per la tua pagina (questo richiede JQuery).

<script type="text/JavaScript"> 
var sc; 
jQuery(document).ready(function(){ 
    //constantly update the scroll position: 
    sc=setInterval(scrollDown,200); 

    //optional:stop the updating if it gets a click 
    jQuery('.mydiv').mousedown(function(e){ 
     clearInterval(sc);    
    }); 
}); 
function scrollDown(){ 
    //find every div with class "mydiv" and apply the fix 
    for(i=0;i<=jQuery('.mydiv').length;i++){ 
     try{ 
      var g=jQuery('.mydiv')[i]; 
      g.scrollTop+=1; 
      g.scrollTop-=1; 
     } catch(e){ 
      //eliminates errors when no scroll is needed 
     } 
    } 
} 
</script> 
+0

Purtroppo non riesco a far funzionare la soluzione. Nessuna barra di scorrimento visibile per impostazione predefinita in Firefox sul mio Mac. Ho creato un jsfiddle con la tua soluzione: http://jsfiddle.net/o92gdd9y/ Cosa sto sbagliando? – Boschman

+2

Funziona, ma lo script stava assumendo lo scroll verticale. Il tuo div sta assumendo lo scroll orizzontale. Quindi è necessario aggiornare continuamente scrollLeft in questo modo: http://jsfiddle.net/o92gdd9y/2/ (che funziona, ma è un hack) – Blaise

0

Che ne dici di overflow: -moz-scrollbars-vertical?

+0

E perché dovrebbe funzionare su qualcos'altro? Generalmente rispondere a una domanda con un'altra domanda non è una buona forma. Se sai che funziona, rendilo una risposta vera spiegando come aiuta. Se non sai che funziona, aspetta di avere abbastanza rappresentanti per commentare, quindi commenta. –