我在Joomla!中设计网页时遇到了一个问题,即有一个看不见的元素导致页面水平滚动。
我对js和jQuery完全没有经验,所以有谁能帮我编写一个脚本,在控制台输出所有宽度大于特定值或大于浏览器窗口的元素?或者以其他方式找到导致浏览器水平滚动的元素?
我更喜欢一行代码的控制台脚本,但也可以使用.js文件。
我建议您查看浏览器的开发者控制台。例如,Firefox可以向您显示一个漂亮的3D视图!
如果您真的想在JavaScript中枚举所有宽度大于x的元素,请使用以下代码:
$("*").each(function() {
if ($(this).width() > 100) {
console.log(this.tagName + "#" + this.id);
}
});
如果您想要与body元素的可见宽度进行比较,请使用document.body.clientWidth
来获取x。
$(window).width()
所以,以ComFreek的示例为例,要循环遍历比您的窗口宽的元素,您需要像这样编写:
$("*").each(function() {
if ($(this).width() > $(window).width()) {
console.log(this.tagName + "#" + this.id);
}
});
使用以下JS代码在浏览器控制台中查找宽度大于窗口宽度的元素:
var maxWidth = document.documentElement.offsetWidth;
[].forEach.call(
document.querySelectorAll('*'),
function(el) {
if (el.offsetWidth > maxWidth) {
console.log(el);
}
}
);
body {
overflow-x: hidden;
}
对我有帮助的是跑步。
$("body *").each(function() {
$(this).css('background-color', 'red');
});
<meta name="viewport" content="width=device-width, initial-scale=1.0">
,因此我最终添加了以下CSS:body {
overflow-x: hidden;
}
我使用了以下代码:
var outOfScreen = $('*').filter(function(){if($(this).width()>$(window).width())return true})
通过访问变量outOfScreen
,我可以检查整个集合。
jQuery = $.noConflict()
或类似方法,就会与jQuery冲突。 - ComFreek