Mam tutaj stronę internetową .
W przeglądarce na komputerze czarny pasek menu prawidłowo rozciąga się tylko do krawędzi okna, ponieważ plik body
ma overflow-x:hidden
.
W dowolnej przeglądarce mobilnej, czy to Android, czy iOS, czarny pasek menu wyświetla pełną szerokość, co powoduje pojawienie się spacji po prawej stronie strony. O ile wiem, ta biała spacja nie jest nawet częścią tagów html
lub body
.
Nawet jeśli ustawię rzutnię na określoną szerokość w <head>
:
<meta name="viewport" content="width=1100, initial-scale=1">
Witryna rozwija się do 1100px, ale nadal ma białe spacje poza 1100.
czego mi brakuje? Jak ustawić rzutnię na 1100 i odciąć przepełnienie?
css
overflow
viewport
mobile-browser
Indywidualność
źródło
źródło
Odpowiedzi:
Tworzenie witryny div otoki wewnątrz
<body>
i stosującoverflow-x:hidden
się do owijki zamiast z<body>
lub<html>
stałej emisji.Wygląda na to, że przeglądarki analizujące
<meta name="viewport">
tag po prostu ignorująoverflow
atrybuty tagówhtml
ibody
.Uwaga: może być również konieczne dodanie
position: relative
do opakowującego elementu div.źródło
overflow
sięhidden
, musiałem ustawićposition
sięfixed
...overflow-x: hidden
nadal nie działa, nawet po dodaniu tego metatagu. Czy mógłbyś udostępnić link do swojej witryny internetowej, na której działa?position:relative
działa.próbować
zamiast po prostu
źródło
overflow
czegokolwiek dohtml
i / lubbody
w dowolnej kombinacji nie rozwiązało problemu.height:100%;
, w przeciwnym razie przewijanie w pionie nie działałoby poprawnie na stronach z ładowanymi obrazami (co powoduje wzrost wysokości strony).Komentarz VictorSa na temat zaakceptowanej odpowiedzi zasługuje na to, by być jego własną odpowiedzią, ponieważ jest to bardzo eleganckie rozwiązanie, które rzeczywiście działa. I dodam odrobinę do jego użyteczności.
Victor zauważa, że dodaje
position:fixed
prace.I rzeczywiście tak jest. Jednak ma również niewielki efekt boczny polegający na przewijaniu do góry.
position:absolute
rozwiązuje ten problem, ale ponownie wprowadza możliwość przewijania na telefonie komórkowym.Jeśli znasz swój widok ( moja wtyczka do dodawania widoku do
<body>
), możesz po prostu dodać przełącznik css dlaposition
.Dodam to również, aby zapobiec przeskakiwaniu podstawowej strony w lewo / w prawo podczas pokazywania / ukrywania modali.
źródło
position:fixed or absolute
zaburza również ich pozycję. Nie nadaje się / działa w moim przypadku :(To najprostsze rozwiązanie do rozwiązywania problemów z przewijaniem poziomym w Safari.
źródło
table-responsive
błąd Bootstrap 4 . To było rozwiązanie.Jak stwierdza @Indigenuity, wydaje się, że jest to spowodowane analizowaniem
<meta name="viewport">
tagu przez przeglądarki .Aby rozwiązać ten problem u źródła, wykonaj następujące czynności:
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1">
.W moich testach uniemożliwia to użytkownikowi zmniejszenie powiększenia w celu wyświetlenia przepełnionej treści, a w rezultacie zapobiega również przesuwaniu / przewijaniu do niej.
źródło
initial-scale=1
do istniejącego metatagu rzutni rzeczywiście rozwiązuje problem. Dzięki!minimum-scale=1
naprawiłodziała na iOS9
źródło
Pozostaw rzutnię nietkniętą:
<meta name="viewport" content="width=device-width, initial-scale=1.0">
Zakładając, że chciałbyś uzyskać efekt ciągłego czarnego paska po prawej stronie:
#menubar
nie powinien przekraczać 100% , dostosuj promień obramowania tak, aby prawa strona była kwadratowa i wyreguluj wyściółkę tak, aby rozciągała się trochę bardziej w prawo . Zmień następujące elementy na#menubar
:Regulacja
padding
do 10px liści oczywiście menu po lewej krawędzi paska, można umieścić pozostałą 40px na każdymli
, 20px na każdej stronie lewej i prawej:Gdy zmniejszysz rozmiar przeglądarki, zobaczysz nadal białe tło: zamiast tego umieść teksturę tła z elementu div na
body
. Możesz też zmienić szerokość menu nawigacyjnego ze 100% na niższą wartość za pomocą zapytań o media. Jest wiele zmian, które należy wprowadzić w swoim kodzie, aby stworzyć odpowiedni układ, nie jestem pewien, co zamierzasz zrobić, ale powyższy kod w jakiś sposób naprawi przepełniony pasek.źródło
box-sizing: border-box;
, możesz dodać dopełnienie do elementu div o szerokości 100%.To zadziałało dla mnie po dodaniu również
position: relative
do opakowania.źródło
overflow: hidden
zamiastoverflow-x: hidden
. Działa na mobilnych przeglądarkach Safari, Chrome, IE11 na OSX i Win.Dodanie otoki
<div>
wokół całej zawartości rzeczywiście zadziała. Chociaż semantycznie „icky”, dodałem div z klasą overflowWrap bezpośrednio wewnątrzbody
tagu, a następnie ustawiłem mój CSS w ten sposób:Teraz może być przesadą, ale działa jak urok!
źródło
Napotkałem ten sam problem z urządzeniami z Androidem, ale nie z urządzeniami iOS. Zarządzane do rozwiązania przez określenie pozycji: względna w zewnętrznym div elementów pozycjonowanych absolutnie (z przepełnieniem: ukryty dla zewnętrznego elementu div)
źródło
Żadne poprzednie rozwiązanie nie działało dla mnie, musiałem je miksować i naprawiono problem również na starszych urządzeniach (iPhone 3).
Najpierw musiałem zawinąć zawartość html do zewnętrznego div:
Potem musiałem zastosować przepełnienie ukryte w opakowaniu, bo overflow-x nie działał:
i to rozwiązało problem.
źródło
Rozwiązałem problem za pomocą overflow-x: hidden; następująco
struktura jest następująca
1st div end_screen >> inside it >> end_screen_2(div) >> inside it >> end_screen_2.
'end_screen is the wrapper of end_screen_1 and end_screen_2 div's
źródło
Jak powiedział subarachnid, overflow-x ukryty zarówno dla body, jak i html działał. Oto roboczy przykład
Połączyć
źródło
Pracowałem nad tym od kilku godzin, próbując różnych kombinacji rzeczy z tej i innych stron. Ostatecznie pomogło mi utworzenie opakowującego elementu div witryny, jak zasugerowano w zaakceptowanej odpowiedzi, ale ustawienie obu przepełnień na ukryte, a nie tylko przepełnienie x. Jeśli zostawię overflow-y przy przewijaniu, otrzymam stronę, która przewija się w pionie tylko o kilka pikseli, a następnie zatrzymuje się.
Po prostu to wystarczyło, bez ustawiania czegokolwiek na elementach body ani html.
źródło
Wypróbowałem wiele sposobów odpowiedzi w tym temacie, głównie działa, ale dostałem efekt uboczny, na przykład użycie overflow-x,
body,html
które może spowolnić / zawiesić stronę, gdy użytkownicy przewijają w dół na telefonie komórkowym.użycie
position: fixed
na wrapper / div wewnątrz ciała jest również dobre, ale kiedy mam menu i używam animacji JavaScript kliknij animowane przewijanie do jakiejś sekcji, to nie działa.Więc zdecydowałem się użyć
touch-action: pan-y pinch-zoom
na wrapper / div wewnątrz ciała. Problem rozwiązany.źródło
Jedynym sposobem rozwiązania tego problemu w przypadku mojego modalnego ładowania początkowego (zawierającego formularz) było dodanie następującego kodu do mojego CSS:
źródło