我正在寻找一种简单的方法来定位页面上将 margin-left 和 margin-right 设置为 auto 的元素。
我得到了这个脚本,它在某些时候对我有帮助:
(function() {
var elementsList = [];
for (var i = 0; i < document.styleSheets.length; i++) {
var styleSheet = document.styleSheets[i];
if (styleSheet.rules) {
for (var j = 0; j < styleSheet.rules.length; j++) {
var rule = styleSheet.rules[j];
if (rule && rule.style && rule.style.marginLeft == 'auto' && rule.style.marginRight == 'auto') {
var smallList = document.querySelectorAll(rule.selectorText);
if (smallList.length)
elementsList = elementsList.concat(smallList);
}
}
}
}
return elementsList
})();
虽然这个函数完成了一些工作,但它并没有捕捉到我在网站上看到的大多数 margin: auto
情况。
你能告诉我一个更好的方法吗?
最佳答案
如果你可以使用 JQuery
正如 Martin Ernst 对 yonatan 的回答所说:“这将只选择 marginLeft/Right="auto"的元素。”
此外,如评论中所述,必须隐藏元素才能与 FF 和 Safari 一起使用。
这应该可以使用 JQuery:
$(document).ready(function() {
var visibleElements = $('body *:visible');
$('body *').hide();
var elements = $('body *').filter(function() {
return $(this).css('margin-left') == 'auto' && $(this).css('margin-right') == 'auto';
})
// show only elements that were visible
visibleElements.show();
});
提示:如果出于某种原因,您不需要加载外部脚本,只需在您的开头复制缩小的 jquery 脚本的内容即可。
关于Javascript 方法定位边距为 : auto 的所有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26884654/