2013-08-19 12 views
32

Przeglądarka Firefox 24 wprowadziła obsługę paska przewijania Lion. Spowoduje to wyświetlenie pasków przewijania w stylu Lion na Mac OS X. Zobacz: https://wiki.mozilla.org/Lion_Scrollbars/TriageWymuszenie widocznego paska przewijania w przeglądarce Firefox w systemie Mac OS X

Powoduje to u mnie problem: pasek przewijania elementu div jest teraz domyślnie ukryty. Czasami chcę wymusić widoczny pasek przewijania.

Dla WebKit jest tam ładne rozwiązanie (wspomniane w 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); 
} 

Czy ktoś wie jak mogę zmusić widoczny pasek przewijania w Firefox 24 (i więcej) na Mac OS X?

Czy są dostępne rozwijane paski przewijania javascript pasujące do pasków przewijania webkita?

+1

Niestety, obecnie nie jest to możliwe w FF. Zobacz: https://bugzilla.mozilla.org/show_bug.cgi?id=77790 Obejściem problemu byłoby korzystanie z pasków przewijania javascript, które przywracają natywne zachowanie. Pamiętaj, że przeglądarki respektują [ustawienia użytkownika] (http://osxdaily.com/2011/08/03/show-scroll-bars-mac-os-x-lion/) ustawione w systemie OSX, a użytkownicy są już przeszkoleni przewijać w obszarach, które wydają się mieć przepełnienie. –

+1

Jedną z rzeczy, na którą należy zwrócić uwagę, jest zaprojektowanie strony w taki sposób, aby w rzeczywistości miała przepełnienie. Widzę teraz wiele witryn, które używają "ekranów złożonych" jako projektu, w którym przewijasz i wyświetlasz różne ekrany lub "strony" - ale jeśli nie zauważysz krótkiego paska przewijania, a "zagięcie" stanie się tuż nad na początku następnego ekranu nic nie wskazuje na to, że istnieje więcej treści. Weźmy na przykład [frontporch.io] (http://frontporch.io/) (stan na 10/14/2013.) –

+0

Jakie jest tutaj pytanie? Czy chcesz wymusić widoczność pasków przewijania? A może chcesz dostosować wygląd pasków przewijania? – HerrSerker

Odpowiedz

20

Jako użytkownik trzydzieścidot explained w innym pytaniu, nie ma sposobu, aby dostosować paski przewijania w przeglądarce Firefox, jak to możliwe w Chrome.

Ponadto, nie ma sposobu, aby faktycznie „siła” Firefox uczynić przewijania w starym stylu, ponieważ domyślne przewijania używany w systemie jest predefiniowany przez sam OS(zauważ, że można zmodyfikować który scrollBar chcesz w Preferencje systemowe).

Innymi słowy, dopóki Firefox nie obsługuje natywnych niestandardowych pasków przewijania, jest to możliwe tylko z wtyczkami JavaScript, takimi jak jScrollPane i podobne.

-2

Czy to działa?

html { 
    overflow-y: scroll; 
} 

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

+2

Niestety nie. Daje kontenerowi pasek przewijania, ale tylko podczas przewijania. W przeciwnym razie pasek przewijania jest niewidoczny.(Bardzo mylące, jeśli element jest przewijany, ale nie ma widocznego paska przewijania). – theorise

+0

Jest to całkowicie charakterystyczne dla pasków przewijania OSX. Cieszę się, że znalazłeś odpowiedź i dobrze o tym wiedzieć. Czy powoduje to "skoki centrowania" między stronami, czy też pojawia się bez wpływania na szerokość strony poziomej? – groovenectar

1

Oto rozwiązanie, ale trzeba użyć JavaScript. Zasadniczo uruchamia pętlę, która zmusza przeglądarkę do wyświetlania pasków przewijania.

Użyj tego CSS aby upewnić się, że div jest ustawiony aby pokazać przewijania:

.mydiv{ overflow-y:auto; } 

Następnie dołączyć skrypt do swojej strony (wymaga 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

Niestety nie mogę sprawić, aby twoje rozwiązanie działało. Domyślnie brak paska przewijania w przeglądarce Firefox na moim Macu. Stworzyłem jsfiddle z twoim rozwiązaniem: http://jsfiddle.net/o92gdd9y/ Co robię źle? – Boschman

+2

To działa, ale skrypt zakładał przewijanie w pionie. Twój div przyjmuje poziome przewijanie. Musisz więc ciągle aktualizować scrollLeft: http://jsfiddle.net/o92gdd9y/2/ (który działa, ale to jest hack). – Blaise

0

Co powiecie na overflow: -moz-scrollbars-vertical?

+0

I dlaczego to wszystko działałoby? Generalnie odpowiadanie na pytanie z innym pytaniem nie jest dobrą formą. Jeśli wiesz, że to działa, spraw, aby była to prawdziwa odpowiedź, wyjaśniając, w jaki sposób pomaga. Jeśli nie wiesz, że to działa, poczekaj, aż masz wystarczającą liczbę powtórzeń, aby skomentować, a następnie skomentuj. –

Powiązane problemy