Sprawienie, że główny pasek przewijania będzie zawsze widoczny
179
Jaki CSS jest wymagany, aby pionowy pasek przewijania przeglądarki był widoczny, gdy użytkownik odwiedza stronę internetową (gdy strona nie ma wystarczającej zawartości, aby uruchomić aktywację paska przewijania)?
Czy masz pojęcie, dla jakiej wersji FF wprowadzono obsługę overflow-y? Jak się wydaje, -moz-scrollbars-verticaljest to przestarzałe na rzecz overflow-ynieruchomości.
Ionuț G. Stan
Myślę, że Internet Explorer 6.x +, Firefox 1.5+, jeśli dobrze pamiętam. Korzystam z powyższego kodu i działa on dla mnie w FF1.5-3.5.1 i IE6-8.
Corv1nus
2
Czy istnieją jakieś alternatywy dla „przeskakiwania strony”, gdy niektóre strony w Twojej witrynie są zbyt małe, aby mieć pasek przewijania, a inne są? Czy jest to „najlepsza praktyka”? Muszę przyznać, że nie widzę wielu stron w sieci, które nie zajmują całej strony.
Jess
2
Nie jestem pewien, czy jest to najlepsza praktyka, ale posiadanie pasków przewijania na wszystkich stronach i aktywne tylko w razie potrzeby, aby uniknąć przeskakiwania stron, jest zwykle akceptowalnym rozwiązaniem. Wolę stały pasek przewijania niż skok.
Corv1nus
1
Dla tych (jak ja), którzy uważają stylizację htmlza trochę hack-y , zauważ, że możesz użyć strukturalnego pseudo-selektora :rootzamiast html. Zobacz: developer.mozilla.org/en-US/docs/Web/CSS/:root
Rounin
30
Upewnij się, że przepełnienie jest ustawione na „przewijanie”, a nie „auto”. Powiedziawszy to , w OS X Lion przepełnienie ustawione na „przewijanie” zachowuje się bardziej jak auto, ponieważ paski przewijania będą nadal wyświetlane tylko podczas używania. Więc jeśli jakiekolwiek z powyższych rozwiązań nie wydaje się działać, może to być powód.
To jest świetne! Powinna być zaakceptowana odpowiedź.
Cyberpunker
25
W ostatnich latach sytuacja się zmieniła. Powyższe odpowiedzi nie są już aktualne we wszystkich przypadkach. Apple pcha wszędzie znikające paski przewijania . Safari, Chrome, a nawet Firefox na MacO (i iOS) pokazują paski przewijania tylko podczas przewijania - nie wiem o bieżącym Windows / IE. Istnieją jednak niestandardowe sposoby stylizowania pasków przewijania w pakiecie Webkit (IE dawno temu zrezygnowało).
Dzięki za ten doskonały punkt na znikających paskach przewijania. Dla mnie powodem, dla którego pasek przewijania był widoczny, było uniknięcie tego lekkiego, ale bardzo zauważalnego i bardzo denerwującego szarpnięcia, gdy zawartość zmienia się z przewijania na brak. Z znikającymi paskami przewijania nie szarpią ciała, gdy pokazują się i chowają, więc dla mnie jest ok. Ale dziękuję za ten doskonały punkt.
Noitidart
4
Z punktu widzenia UX, większość razy chcemy, aby pasek przewijania był widoczny. Zgodnie z bieżącym trendem, jeśli pasek przewijania nie jest widoczny, dodatkowym krokiem jest „wypróbowanie” widocznej listy, aby uzyskać więcej na liście. Dodatkowa wizualna wskazówka, że lista rozwijana lub lista zawiera więcej elementów, nie jest potrzebna, jeśli ludzie zobaczą pasek przewijania.
windsurf88
24
html {
overflow-y: scroll;
}
Czy tego chcesz?
Niestety, Opera 9.64 wydaje się ignorować tę deklarację CSS po zastosowaniu do HTMLlub BODY, chociaż działa dla innych elementów na poziomie bloku, takich jak DIV.
Używam tego rozwiązania dla różnych przeglądarek (uwaga: zawsze używam deklaracji DOCTYPE w 1. linii, nie wiem, czy to działa w trybie quirksmode, nigdy jej nie testowałem ).
To zawsze pokaże AKTYWNY pionowy pasek przewijania na każdej stronie, pionowy pasek przewijania będzie przewijany tylko z kilku pikseli.
Gdy zawartość strony jest krótsza niż widoczny obszar przeglądarki (port podglądu), nadal będziesz widzieć aktywny pionowy pasek przewijania i będzie przewijany tylko z kilku pikseli.
Jeśli masz obsesję na punkcie sprawdzania poprawności CSS (mam obsesję na punkcie sprawdzania poprawności HTML), korzystając z tego rozwiązania, Twój kod CSS sprawdziłby również W3C, ponieważ nie używasz niestandardowych atrybutów CSS, takich jak -moz-scrollbars-vertical
To pytanie zostało zadane 5 lat temu i ma już zaakceptowaną odpowiedź. Twoja odpowiedź nie zapewnia lepszej odpowiedzi niż odpowiedź już zaakceptowana.
Dipen Shah,
18
Ta odpowiedź zawiera dodatkowe informacje, których nie podano w innych odpowiedziach.
GaTechThomas,
2
Udało mi się to uruchomić, dodając go do tagu body. Był dla mnie milszy, ponieważ nie mam nic na elemencie HTML.
Alternatywnym podejściem jest ustawienie szerokości elementu HTML na 100vw. W wielu, jeśli nie w większości przeglądarek, neguje to wpływ pasków przewijania na szerokość.
Ustawienie wysokości na 101% jest moim rozwiązaniem problemu. Strony nie będą już „migać” podczas przełączania między stronami, które przekraczają wysokość rzutni, a tymi, które tego nie robią.
Odpowiedzi:
Dzięki temu pasek przewijania jest zawsze widoczny i aktywny tylko w razie potrzeby.
Aktualizacja: Jeśli powyższe nie działa, wystarczy użyć tego.
źródło
overflow-y
? Jak się wydaje,-moz-scrollbars-vertical
jest to przestarzałe na rzeczoverflow-y
nieruchomości.html
za trochę hack-y , zauważ, że możesz użyć strukturalnego pseudo-selektora:root
zamiasthtml
. Zobacz: developer.mozilla.org/en-US/docs/Web/CSS/:rootUpewnij się, że przepełnienie jest ustawione na „przewijanie”, a nie „auto”. Powiedziawszy to , w OS X Lion przepełnienie ustawione na „przewijanie” zachowuje się bardziej jak auto, ponieważ paski przewijania będą nadal wyświetlane tylko podczas używania. Więc jeśli jakiekolwiek z powyższych rozwiązań nie wydaje się działać, może to być powód.
Oto, co musisz to naprawić:
Możesz odpowiednio go stylizować, jeśli nie podoba Ci się domyślny.
źródło
-webkit-appearance: none;
W ostatnich latach sytuacja się zmieniła. Powyższe odpowiedzi nie są już aktualne we wszystkich przypadkach. Apple pcha wszędzie znikające paski przewijania . Safari, Chrome, a nawet Firefox na MacO (i iOS) pokazują paski przewijania tylko podczas przewijania - nie wiem o bieżącym Windows / IE. Istnieją jednak niestandardowe sposoby stylizowania pasków przewijania w pakiecie Webkit (IE dawno temu zrezygnowało).
źródło
Czy tego chcesz?
Niestety, Opera 9.64 wydaje się ignorować tę deklarację CSS po zastosowaniu do
HTML
lubBODY
, chociaż działa dla innych elementów na poziomie bloku, takich jakDIV
.źródło
Używam tego rozwiązania dla różnych przeglądarek (uwaga: zawsze używam deklaracji DOCTYPE w 1. linii, nie wiem, czy to działa w trybie quirksmode, nigdy jej nie testowałem ).
To zawsze pokaże AKTYWNY pionowy pasek przewijania na każdej stronie, pionowy pasek przewijania będzie przewijany tylko z kilku pikseli.
Gdy zawartość strony jest krótsza niż widoczny obszar przeglądarki (port podglądu), nadal będziesz widzieć aktywny pionowy pasek przewijania i będzie przewijany tylko z kilku pikseli.
Jeśli masz obsesję na punkcie sprawdzania poprawności CSS (mam obsesję na punkcie sprawdzania poprawności HTML), korzystając z tego rozwiązania, Twój kod CSS sprawdziłby również W3C, ponieważ nie używasz niestandardowych atrybutów CSS, takich jak
-moz-scrollbars-vertical
źródło
body { height:101%; }
spowoduje „przycięcie” większych stron.Zamiast tego używam:
źródło
Udało mi się to uruchomić, dodając go do tagu body. Był dla mnie milszy, ponieważ nie mam nic na elemencie HTML.
źródło
Alternatywnym podejściem jest ustawienie szerokości elementu HTML na 100vw. W wielu, jeśli nie w większości przeglądarek, neguje to wpływ pasków przewijania na szerokość.
źródło
Ustawienie wysokości na 101% jest moim rozwiązaniem problemu. Strony nie będą już „migać” podczas przełączania między stronami, które przekraczają wysokość rzutni, a tymi, które tego nie robią.
źródło
działa najlepiej dla mnie
źródło
Robię to:
Więc nie muszę patrzeć na brzydki, szary pasek przewijania, kiedy nie jest potrzebny.
źródło