当网站未包含在移动视口内时,有时我会遇到此问题,我需要确定是什么导致宽度超出。
通常我通过隐藏不同元素的反复试验来做到这一点,直到元素重置为所需的 100% 宽度。然后我对每个子元素重复,直到找到导致它的子元素。
在 Firefox 或 Chrome 开发工具(或使用插件)中是否有办法查看哪个 DOM 子元素正在决定当前元素的尺寸?
确定什么定义了元素的计算宽度和高度可能非常棘手。 Chrome 和 Firefox DevTools 都没有提供在所有情况下获取该信息的简单方法。据我所知,也没有可用的扩展可以使这变得更容易。不过,Firefox DevTools 团队不久前就开始了对此的讨论。
元素可能比预期更宽或更高的原因有两个:元素本身或其子元素之一上的某些 CSS 或某些文本。当没有其他解决方案时,隐藏或删除元素的解决方案可能是最快的。
尽管如此,这里还是一些如何使用 DevTools 来确定定义元素宽度和高度的提示:
width
或
height
的条目以查看应用了哪些 CSS 规则。另请检查
min-width
和
max-width
或
min-height
和
max-height
以及其他与布局相关的属性,例如
margin
、
border
和
padding
,还有
display
、
align-self
、
line-height
、等等!
white-space: nowrap
)也可能是罪魁祸首。
rootElement = $0;
rootWidth = rootElement.getBoundingClientRect().width;
walker = document.createTreeWalker(rootElement, NodeFilter.SHOW_ELEMENT, {
acceptNode: element =>
element.getBoundingClientRect().width === rootWidth ?
NodeFilter.FILTER_ACCEPT :
NodeFilter.FILTER_SKIP
});
currentNode = walker.currentNode;
while (currentNode) {
console.log(currentNode);
currentNode = walker.nextNode();
}
其中 $0
指的是当前选定的元素。