Действительно, эта проблема возникает из-за "мошеннических" элементов, которые почему-то выходят за пределы ширины документа.
Один из способов - использовать CSS, описанный выше, еще не пробовал, но я не уверен, насколько легко было бы обнаружить элементы с помощью границ.
Другой подход - запустить этот код JS в консоли, чтобы найти их:
Array.prototype.filter.call(document.querySelectorAll('*'), function (node) {
return node.clientWidth + node.offsetLeft > document.documentElement.clientWidth
});
Это вернет массив всех элементов, ширина / смещение которых (расстояние слева) больше, чем clientWidth.
Затем вам нужно будет проверить элементы и выяснить, почему они ведут себя так - в моем случае нижний колонтитул имел значения width:100%
и padding:10px
, в результате чего его ширина была на 20 пикселей больше ширины документа.
Интересно, что это было видно только на iPhone, а не на Android.