Białe miejsce pojawia się po prawej stronie strony, gdy obraz tła powinien rozciągać się na całą długość strony [zamknięty]


110

Obrazy tła naszych stron internetowych mają problemy w FireFox, a także Safari w iOS na iPadach / iPhone'ach z białą przestrzenią widoczną po prawej stronie strony.

Obrazy tła są dobrze widoczne w innych przeglądarkach, ale mamy trudności z nie przedłużeniem pełnej długości przeglądarki w tych przeglądarkach.

Weź obejrzenia naszej strony w FireFox , aby zobaczyć, co mam na myśli.


Jeśli używasz framwork, takiego jak bootstrap lub Foundation, sprawdź, czy kolumna teraz jest pierwszym dzieckiem ciała, ale jest zagnieżdżona w innym elemencie div, który ma jakieś wypełnienie (small-12 fe).
Lightningsoul

rozwiązałeś to @Dave?
gumuruh

Szalone, prawda? 6 lat później iOS Safari nadal pokazuje ten problem. Próbowałem wielu rozwiązań CSS, ale ostatecznie musiałem uciekać się do korzystania z jQuery. stackoverflow.com/a/45009357/391605
Mike Gledhill

Odpowiedzi:


266

Dodałem:

html,body
{
    width: 100%;
    height: 100%;
    margin: 0px;
    padding: 0px;
    overflow-x: hidden; 
}

do CSS na samej górze, ponad innymi klasami i wydawało się, że rozwiązało to problem.

Twój zaktualizowany plik .css jest dostępny tutaj


4
super, to właśnie naprawiło błąd, który dręczył mnie od jakiegoś czasu!
gleddy

22
Miałem problem z przewijaniem na Safari iPhone'a z tym kodem, zrobiło się bardzo wolno. Ostatecznie stwierdziłem, że to kombinacja wysokości: 100% i overflow-x: ukryta, więc usunąłem wysokość: 100% i działa znacznie lepiej.
Paul Mason,

Dzięki temu zadziałało jak urok. Zawsze zastanawiałem się, jak uzyskać jazdę po prawie nieskończonym pasku przewijania. Nie wiem, dlaczego nie zostało to oznaczone jako odpowiedź.
isurf ponieważ

5
Zauważyłem, że klasa „row” programu bootstrap dawała {margin-right: -15px}, co powodowało to na mojej stronie.
JosephK

2
Zgodnie z @ JosephK, ten problem często wynika z niewłaściwego użycia kontenerów, wierszy i kolumn Bootstrapa, które używają dopełnienia i marginesów ujemnych, aby doskonale się wzajemnie kompensować, ale TYLKO GDY UŻYWANE są prawidłowo w unisono. W przeciwnym razie pęknie! Z mojego doświadczenia wynika, że ​​jest to jedna z najczęstszych przyczyn tej białej przestrzeni po prawej stronie. Aby uzyskać BRILLIANT, wizualne wyjaśnienie kontenera, wiersza, kolumny dla Bootstrap, w tym omówienie tego i innych problemów, przeczytaj to (nie, nie napisałem tego): helloerik.com/ ...
james

133

Debuguj swój CSS pod kątem elementów Ghost CSS.

Użyj tej zakładki do debugowania CSS: https://blog.wernull.com/2013/04/debug-ghost-css-elements-causing-unwanted-scrolling/

Lub dodaj CSS bezpośrednio samodzielnie:

* {
  background: #000 !important;
  color: #0f0 !important;
  outline: solid #f00 1px !important;
}

W moim przypadku problem spowodował przycisk „Lubię to” na Facebooku.


1
to naprawdę się przydało
Josan Iracheta

6
Genialne rozwiązanie! Pomoże Ci to znaleźć źródło problemu i poprawnie go naprawić, a wszystko, czego wymaga, to kilka wierszy css.
opdb

3
To powinna być akceptowana odpowiedź IMO. Założę się, że większość ludzi użyła 100vw jako szerokości czegoś i otrzymała ten błąd. Proste ukrycie przelewu jest rozwiązaniem nieoptymalnym.
Łukasz

To imponujące, spędziłem 2 godziny na tej cholernej białej przestrzeni, to rozwiązało problem.
Carlos Roso

Wow, spędziłem wiele godzin i znalazłem winowajcę za pomocą zaledwie kilku linijek kodu. Dzięki kolego :)
Khpalwalk

55

Po zapoznaniu się z niektórymi pomocnymi strategiami przedstawionymi tutaj stwierdziłem, że potrzebuję tylko dodać CSS specyficzny dla iOS (umieściłem go na dole mojego głównego arkusza css). Wygląda na to, że ukrycie overflow-x było dla mnie odpowiedzią. Zakładam, że podanie szerokości na 100% pomaga w przypadku, gdy moja treść jest szeroka. Należy zauważyć, że miałem ten problem tylko w iOS. Jeśli jest również w przeglądarce Firefox, prawdopodobnie należy użyć tylko bloku html i body, ponieważ @media jest specjalnie skierowana do urządzeń mobilnych.

@media
only screen and (-webkit-min-device-pixel-ratio: 1.5),
only screen and (-o-min-device-pixel-ratio: 3/2),
only screen and (min--moz-device-pixel-ratio: 1.5),
only screen and (min-device-pixel-ratio: 1.5){

  html,
  body{
    width:100%;
    overflow-x:hidden;
  }

}

Proszę, zahipnotyzuj mnie, jeśli komuś wydaje się to niewłaściwe


5
To była jedyna rzecz, która rozwiązała mój problem
JasonDavis

1
Dzięki - najlepsze rozwiązanie dla mnie. Dość
skromny

To rozwiązuje problem i ma sens w przypadku mobilnych białych przestrzeni
Rob Gleeson,

Po zastosowaniu przewijanie w Safari iPhone6s staje się opóźnione. Czy brakuje mi dodatkowej właściwości mobilnej przeglądarki Safari, aby działała płynnie?
Erik Rybalkin

najlepsza odpowiedź dla mnie !!
Youssef Boudaya

28

To dość stare pytanie, ale pomyślałem, że dodam moje 2 centy. Wypróbowałem powyższe rozwiązania, w tym ghost css, które na pewno zachowam do wykorzystania w przyszłości. Ale żaden z nich nie zadziałał w mojej sytuacji. Oto, jak rozwiązałem problem. Mam nadzieję, że pomoże to komuś innemu.

Otwórz inspektora (lub cokolwiek chcesz) i zaczynając od pierwszego elementu div w tagu body, dodaj display: none;tylko ten element. Jeśli pasek przewijania znika, wiesz, że element zawiera element, który powoduje problem. Następnie usuń pierwszą regułę CSS i zejdź o jeden poziom niżej do elementu zawierającego. Dodaj css do tego elementu div, a jeśli pasek przewijania zniknie, wiesz, że element powoduje lub zawiera element naruszający. Jeśli dodanie kodu CSS nic nie da, wiesz, że to nie ten element div spowodował problem, a powoduje go inny element div w kontenerze lub sam kontener.

Dla niektórych może to być zbyt czasochłonne. Na szczęście dla mnie, mój problem był w nagłówku, ale mogę sobie wyobrazić, że zajmuje to trochę czasu, jeśli twój problem był, powiedzmy, w stopce lub coś w tym rodzaju.


Ta metoda pomogła mi znaleźć błąd, dzięki
Bill

Tak, albo możesz zejść na dół, ukrywając po kolei elementy div z najwyższego poziomu, a następnie wejść do nich… i tak dalej
hatenine

To naprawdę jedyny sposób na pomyślne naprawienie problemu z rootem, gdy masz dziwne elementy, takie jak te z height: 0lub height: 1. W moim przypadku przyczyną była błędna 'niewidzialna' klasa w rdzeniu Drupal 7: drupal.org/node/2664214
geerlingguy


5

Problem tkwi w pliku:

style.css - linia 721

#sub_footer {
    background: url("../images/exterior/sub_footer.png") repeat-x;
    background: -moz-linear-gradient(0% 100% 90deg,#102c40, #091925);
    background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#091925), to(#102c40));
    -moz-box-shadow: 3px 3px 4px #999999;
    -webkit-box-shadow: 3px 3px 4px #999999;
    box-shadow: 3px 3px 4px #999999;
    padding-top:10px;
    font-size:9px;
    min-height:40px;
}

usuń linie:

-moz-box-shadow: 3px 3px 4px #999999;
-webkit-box-shadow: 3px 3px 4px #999999;
box-shadow: 3px 3px 4px #999999; 

Zasadniczo daje to gradient cienia tylko do stopki. W przeglądarce Firefox jest to pierwsza linia, która powoduje problem.



2

Najwyraźniej (-o-min-współczynnik-piksel-urządzenia: 3/2) powoduje problemy. Na mojej stronie testowej powodowało to obcięcie prawej strony. Znalazłem obejście na githubie, które na razie działa. Wydaje się, że użycie parametru (-o-min-device-pixel ratio: ~ "3/2") działa dobrze.


2

Widzę, że odpowiedź na pytanie jest ogólna, ale kiedy spojrzałem na twoją witrynę, zauważyłem, że nadal jest na niej poziomy pasek przewijania. Zauważyłem też powód tego: użyłeś kodu:

.homepageconference .container {
padding-left: 12%;
}

który jest używany wraz z kodem stwierdzającym, że element ma szerokość 100%, powodując powstanie elementu o łącznej szerokości 112% rozmiaru ekranu. Aby to naprawić, usuń wypełnienie, zastąp je marginesem 12%, aby uzyskać ten sam efekt, lub zmień szerokość (lub maksymalną szerokość) elementu na 88%. Dzieje się to w main.css w linii 343. Mam nadzieję, że to pomoże!


Lub ustaw box-sizingwłaściwość na border-box.
Benpai

2

Miałem ten sam problem, więc wypróbowałem kilka rzeczy. Jeden z nich wydawał się działać dla mnie - usunięcie szerokości i dodanie pływaka do tagu body.

Może nie działać dla wszystkich instancji, ale w scenariuszu, który miałem ostatnio, ukrywanie przepełnienia elementów treści nie było możliwe ...


Musiałem ustawić html, body na width: 0, aby pozbyć się elementu ghost na górze w Firefoksie.
Garavani

1

Widziałem białą linię po prawej stronie na moim iPadzie, a także tylko w pozycji poziomej. Używałem elementu div o stałej pozycji z tłem ustawionym na szerokość 960 pikseli i indeks z -999. Ten konkretny element div pojawia się tylko na iPadzie z powodu zapytania o media. Treść została następnie umieszczona w opakowaniu div o szerokości 960 pikseli. Odpowiedzi udzielone na tej stronie nie pomogły w moim przypadku. Aby naprawić problem z białym paskiem, zmieniłem szerokość opakowania zawartości na 958 pikseli. Voilá. Koniec z białym prawym białym paskiem na iPadzie w pozycji poziomej.


1

To pytanie kręciło się od jakiegoś czasu, ale żadna z poprawek, które mogłem znaleźć, nie działała dla mnie (mając ten sam problem z iPadem), ale udało mi się znaleźć własne rozwiązanie, które powinno działać dla większości ludzi, których sobie wyobrażam.

Oto mój kod:

html {
   background: url("../images/blahblah.jpg") repeat-y;
   min-width: 100%;
   background-size: contain;
}

Cieszyć się!

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.