Пустое пространство появляется с правой стороны страницы, когда фоновое изображение должно занимать всю длину страницы [закрыто]


110

У фоновых изображений нашей веб-страницы возникают проблемы в FireFox, а также в Safari в iOS на iPad / iPhone с пустым пространством, отображаемым в правой части страницы.

Фоновые изображения отлично работают в других браузерах, но у нас возникают проблемы с тем, чтобы не расширить браузер на всю длину в этих браузерах.

Совершите посмотреть на нашем сайте на FireFox , чтобы увидеть , что я имею в виду.


Если вы используете фреймворк, такой как бутстрап или фундамент, убедитесь, что столбец now является первым дочерним элементом body, но вложен в другой блок div, имеющий какие-то отступы (small-12 fe).
— Lightningsoul

ты решил это @ Дэйв?
— gumuruh

Безумно, не правда ли? Спустя 6 лет и iOS Safari все еще демонстрирует эту проблему. Я пробовал множество решений CSS, но в конце концов пришлось прибегнуть к использованию jQuery. stackoverflow.com/a/45009357/391605
— Майк Гледхилл

Ответы:


266

Я добавил:

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

в ваш CSS на самом верху над другими классами, и, похоже, это решило вашу проблему.

Ваш обновленный файл .css доступен здесь


4
здорово, это только что исправило ошибку, которая беспокоила меня некоторое время!
— gleddy

22
У меня возникла проблема с прокруткой на сафари iphone с этим кодом, стало очень медленно. В конце концов, я обнаружил, что это комбинация height: 100% и overflow-x: hidden, поэтому я удалил height: 100%, и это работает намного лучше.
— Пол Мейсон

Спасибо, это сработало как шарм. Я всегда задавался вопросом, как прокатиться по почти бесконечной полосе прокрутки. Не знаю, почему это не было отмечено как ответ.
— isurfbecause

5
Я обнаружил, что класс 'row' начальной загрузки давал {margin-right: -15px}, что вызывало это на моей странице.
— JosephK 01

2
По мнению @ JosephK, эта проблема часто возникает из-за неправильного использования объектов контейнера, строк и столбцов Bootstrap, которые используют заполнение и отрицательные поля для идеальной компенсации друг друга, но ТОЛЬКО ПРИ ИСПОЛЬЗОВАНИИ должным образом в унисон. Иначе сломается! По моему опыту, это одна из наиболее частых причин появления пустого пространства справа. Для БРИЛЛИАНТНОГО визуального объяснения контейнера, строки, столбца для Bootstrap, включая обсуждение этой и других проблем, прочтите это (нет, я это не писал): helloerik.com/…
— james

133

Отлаживайте свой CSS для Ghost CSS Elements.

Используйте эту закладку для отладки CSS: https://blog.wernull.com/2013/04/debug-ghost-css-elements-causing-unwanted-scrolling/

Или добавьте CSS напрямую:

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

В моем случае проблема была вызвана кнопкой Facebook Like.


1
это действительно пригодилось
— Josan Iracheta

6
Гениальное решение! Это поможет вам найти корень проблемы и исправить ее правильно, а все, что для этого потребуется, - это несколько строк css.
— opdb

3
Это должен быть принятый ответ ИМО. Я держу пари, что большинство людей использовали 100vw как ширину чего-либо и в результате получили эту ошибку. Простое скрытие переполнения - неоптимальное решение.
— Люк

Это впечатляет, потратил 2 часа на это чертово белое пространство, это решило проблему.
— Карлос Росо

Ух ты, потратил много часов и нашел виновника всего несколькими строками кода. Спасибо,
— дружище

55

Изучив некоторые из полезных стратегий, представленных здесь, я обнаружил, что мне нужно только добавить специальный CSS для iOS (я поместил его внизу своей основной таблицы css). Похоже, что скрытие переполнения-x было ответом для меня. Я предполагаю, что указание ширины на 100% помогает в случае, если мой контент расширяется. Следует отметить, что эта проблема была у меня только в iOS. Если он также есть в Firefox, вероятно, следует использовать только блок html и body, поскольку @media специально нацелен на мобильные устройства.

@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;
  }

}

Пожалуйста, помогите мне, если это кому-то покажется неправильным :)


5
Это было единственное, что решило мою проблему
— Джейсон Дэвис 01

1
Спасибо - лучшее решение для меня. Справедливо unobstrusive тоже
— geedubb

Это решает проблему и имеет смысл для мобильного белого пространства
— Роб Глисон,

После применения прокрутка на Safari iphone6s становится медленной. Не хватает ли мне дополнительного свойства для мобильного Safari, чтобы оно работало бесперебойно?
— Эрик Рыбалкин

лучший ответ для меня !!
— Юсеф Будая,

28

Это довольно старый вопрос, но я решил добавить свои 2 цента. Я пробовал вышеуказанные решения, в том числе ghost css, который я обязательно сохраню для использования в будущем. Но в моей ситуации ничего из этого не сработало. Вот как я исправил свою проблему. Надеюсь, это поможет кому-то другому.

Откройте инспектор (или как хотите) и, начиная с первого тега div в теле, добавьте display: none;только к этому элементу. Если полоса прокрутки исчезает, вы знаете, что этот элемент содержит элемент, вызывающий проблему. Затем удалите первое правило css и спуститесь на один уровень вниз в содержащий элемент. Добавьте CSS в этот div, и если полоса прокрутки исчезнет, ​​вы узнаете, что этот элемент либо вызывает, либо содержит оскорбительный элемент. Если добавление CSS ничего не делает, вы знаете, что проблема возникла не из-за этого div, и либо другой div в контейнере, либо сам контейнер вызывает ее.

Для некоторых это может занять слишком много времени. К счастью для меня, моя проблема была в заголовке, но я могу представить, что это займет немного времени, если ваша проблема, скажем, в нижнем колонтитуле или что-то в этом роде.


Этот метод помог мне найти ошибку, спасибо
— Билл,

Да, или вы можете спуститься вниз по дому, скрывая дивы наивысшего уровня один за другим, а затем зайти внутрь них ... и так далее
— hatenine

Это действительно единственный способ успешно решить основную проблему, когда у вас есть странные элементы, например, с символом height: 0или height: 1. В моем случае, я обнаружил , что причина была «невидимый» класс странствующего в Drupal 7 ядра: drupal.org/node/2664214
— geerlingguy


5

Проблема в файле:

style.css - строка 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;
}

удалите строки:

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

Это в основном дает градиент тени только нижнему колонтитулу. В Firefox это первая строка, которая вызывает проблему.



2

По-видимому, (-o-min-device-pixel-ratio: 3/2) вызывает проблемы. На моем тестовом участке отрезалась правая сторона. Я нашел обходной путь на github, который сейчас работает. Использование (-o-min-device-pixel-ratio: ~ "3/2"), похоже, работает нормально.


2

Я вижу, что на вопрос дан общий стандарт, но когда я просмотрел ваш сайт, то заметил, что горизонтальная полоса прокрутки все еще есть. Я также заметил причину этого: вы использовали код:

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

который используется вместе с кодом, в котором указано, что элемент имеет ширину 100%, в результате чего общая ширина элемента составляет 112% от размера экрана. Чтобы исправить это, либо удалите отступы, либо замените отступы с запасом в 12% для того же эффекта, либо измените ширину (или максимальную ширину) элемента на 88%. Это происходит в main.css в строке 343. Надеюсь, это поможет!


Или установите для box-sizingсвойства значение border-box.
— Benpai

2

У меня была такая же проблема, поэтому попробовал несколько вещей. Один из них, казалось, сработал для меня - удаление ширины и добавление поплавка к тегу body.

Может не работать для всех экземпляров, но в моем недавнем сценарии скрытие переполнения в элементах контента было непозволительно ...


Мне пришлось установить html, body на width: 0, чтобы избавиться от призрачного элемента вверху в Firefox.
— Гаравани,

1

Я видел белую линию справа на моем iPad, также только в горизонтальном положении. Я использовал div с фиксированной позицией с шириной фона 960 пикселей и z-индексом -999. Этот конкретный div отображается только на iPad из-за медиа-запроса. Затем содержимое было помещено в оболочку div шириной 960 пикселей. Ответы, представленные на этой странице, не помогли в моем случае. Чтобы исправить проблему с белой полосой, я изменил ширину оболочки содержимого на 958 пикселей. Вуаля. Больше нет белой правой белой полосы на iPad в горизонтальном положении.


1

Этот вопрос висит некоторое время, но ни одно из исправлений, которые я смог найти, у меня не сработало (с той же проблемой с ipad), но я использовал свое собственное решение, которое должно работать для большинства людей, которых я думаю.

Вот мой код:

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

Наслаждайтесь!

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.