Ответ 1
.slide-content .scroller {
width: 1024px;
}
"Самый быстрый" способ: добавил это в инспекторе:
* {
border: 1px solid #f00 !important;
}
и виновник появился
Когда я меняю свое окно Chrome на 328 x 455 пикселей, я все еще вижу горизонтальную полосу прокрутки. Как я могу узнать, какой элемент вызывает это? Я просматриваю элементы через консоль разработчика, но не могу найти элемент.
Затем я попробовал script нашел здесь, но ничего не регистрировалось.
Я попробовал его на элементе body
, section1
и кучу других, но не знаю, что еще делать.
$(function () {
var f = $('body'); //document.getElementById("body");
var contentHeight = f.scrollHeight;
var declaredHeight = $(f).height();
var contentWidth = f.scrollWidth;
var declaredWidth = $(f).width();
if (contentHeight > declaredHeight) {
console.log("invalid height");
}
if (contentWidth > declaredWidth) {
console.log("invalid width");
}
});
.slide-content .scroller {
width: 1024px;
}
"Самый быстрый" способ: добавил это в инспекторе:
* {
border: 1px solid #f00 !important;
}
и виновник появился
Есть отличная статья Криса Койера, которая объясняет все, что вам нужно об этой проблеме.
после прочтения этой статьи я лично использую этот код в своей консоли, чтобы выяснить, какой элемент вызывает вертикальную прокрутку:
нажмите F12
в вашем браузере, затем выберите console
скопируйте и вставьте туда этот код и нажмите Enter
var all = document.getElementsByTagName("*"), i = 0, rect, docWidth = document.documentElement.offsetWidth;
for (; i < all.length; i++) {
rect = all[i].getBoundingClientRect();
if (rect.right > docWidth || rect.left < 0){
console.log(all[i]);
}
}
Обновить:
это может быть элемент внутри iframe make page для вертикальной прокрутки. в этом случае вы должны проверить каждый подозреваемый iframe с этим кодом:
var frame = document.getElementsByTagName("iframe");
frame = frame[0];
frame = (frame.contentWindow || frame.contentDocument);
var all = frame.document.getElementsByTagName("*"), i = 0, rect, docWidth = document.documentElement.offsetWidth;
for (; i < all.length; i++) {
rect = all[i].getBoundingClientRect();
if (rect.right > docWidth || rect.left < 0){
console.log(all[i]);
}
}
Мое быстрое решение с jQuery, stijn de ryck createXPathFromElement
и консоль:
/**
* Show information about overflowing elements in the browser console.
*
* @author Nabil Kadimi
*/
var overflowing = [];
jQuery(':not(script)').filter(function() {
return jQuery(this).width() > jQuery(window).width();
}).each(function(){
overflowing.push({
'xpath' : createXPathFromElement(jQuery(this).get(0)),
'width' : jQuery(this).width(),
'overflow' : jQuery(this).width() - jQuery(window).width()
});
});
console.table(overflowing);
/**
* Gets the Xpath of an HTML node
*
* @link /questions/134857/javascript-get-xpath-of-a-node/806611#806611
*/
function createXPathFromElement(e){for(var t=document.getElementsByTagName("*"),a=[];e&&1==e.nodeType;e=e.parentNode)if(e.hasAttribute("id")){for(var s=0,l=0;l<t.length&&(t[l].hasAttribute("id")&&t[l].id==e.id&&s++,!(s>1));l++);if(1==s)return a.unshift('id("'+e.getAttribute("id")+'")'),a.join("/");a.unshift(e.localName.toLowerCase()+'[@id="'+e.getAttribute("id")+'"]')}else if(e.hasAttribute("class"))a.unshift(e.localName.toLowerCase()+'[@class="'+e.getAttribute("class")+'"]');else{for(i=1,sib=e.previousSibling;sib;sib=sib.previousSibling)sib.localName==e.localName&&i++;a.unshift(e.localName.toLowerCase()+"["+i+"]")}return a.length?"/"+a.join("/"):null}
//**/
Найдите виновника, скопировав и вставив приведенный ниже код js в адресную строку URL.
javascript:(function(d){var w=d.documentElement.offsetWidth,t=d.createTreeWalker(d.body,NodeFilter.SHOW_ELEMENT),b;while(t.nextNode()){b=t.currentNode.getBoundingClientRect();if(b.right>w||b.left<0){t.currentNode.style.setProperty('outline','1px dotted red','important');console.log(t.currentNode);}};}(document));
это первый ребенок контейнера, внутри .main-footer. У этого есть маржа: auto и margin-left: 20% встроенный стиль. Удалите это и просто примените text-align: center, поскольку внутри (только входные, span и a) есть только текстовые элементы.
Это сделает материал.
Смотрите здесь: http://i.stack.imgur.com/vqx0C.jpg