Javascript 方法定位边距为 : auto 的所有元素

标签 javascript css margin

我正在寻找一种简单的方法来定位页面上将 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/

相关文章:

android - 在代码中设置 TextView 的边距和重力不起作用

javascript - 如何在 Stencil.js 中使用外部第三方库

javascript - 如何使用 iconify vue 组合 API

JavaScript 不比较传递的参数值

html - 为什么边距自动适用于左/右而不适用于顶部/底部?

css - Bootstrap CSS 填充

javascript - 在公共(public)文件中导入所有 javascripts 文件和样式表文件

css 下拉菜单只能悬停在文本上

css - Bootstrap Glyphicons 在 CSS 上给出 'Invalid property value'

html - Css 旋转木马箭头在模态内调整大小时向上流动