当我将Chrome窗口的尺寸调整为328 x 455像素时,我仍会看到水平滚动条。 如何找出导致此问题的元素?我一直在通过开发者控制台查找元素,但无法找到该元素。
然后我尝试了我找到here的脚本,但没有记录任何内容。
我在元素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");
}
});
答案 0 :(得分:63)
.slide-content .scroller {
width: 1024px;
}
“fastestest”方式:在检查员中添加:
* {
border: 1px solid #f00 !important;
}
出现了罪魁祸首
答案 1 :(得分:12)
Chris Coyier有一个excellent article解释了你对这个问题所需的一切。
阅读本文后,我个人在我的控制台中使用此代码来找出导致垂直滚动的元素:
在浏览器中按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页面中垂直滚动的元素。
在这种情况下,您应该使用以下代码检查每个可疑的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]);
}
}
答案 2 :(得分:2)
答案 3 :(得分:1)
通过复制查找下面的js代码到罪魁祸首。
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));
答案 4 :(得分:0)
它是容器的第一个孩子,在.main-footer里面。它有一个保证金:自动和保证金左:20%内联风格。删除它并简单地应用text-align:center,因为里面只有文本元素(input,span和a)。
那会做的。
答案 5 :(得分:0)
为所有内容添加边框使问题对我而言消失了。罪魁祸首是一个用opacity: 0
隐藏的下拉菜单。
我实际上是通过消除的过程找到它的-从父元素开始并向下移动树,逐个删除DevTools中的元素。
但是现在我知道了这个问题,这对我来说会做到的:
* {
opacity: 1 !important;
visibility: visibile; !important;
}
答案 6 :(得分:0)
将此添加到您的 css 文件中:
* {
outline: 1px solid #f00 !important;
opacity: 1 !important;
visibility: visible !important;
}
它确保在使用红色边框进行调试时所有内容都可见。