在 HTML 页面中获取所有带有 `position:fixed` 的元素?

Posted

技术标签:

【中文标题】在 HTML 页面中获取所有带有 `position:fixed` 的元素?【英文标题】:Get all elements with `position:fixed` in an HTML page? 【发布时间】:2016-05-05 10:22:51 【问题描述】:

这样做的原因:我正在调试网页的 css .. 出现了一些元素,但它们不应该出现。我怀疑这是元素定位的问题。因此我想找到这些定位的元素并一一检查。

【问题讨论】:

你有什么问题? @SudiptaMaiti 看到标题了吗? 不知道为什么你在用 jquery 投票时没有用 jquery 标记这个问题 @user2181397 哎呀……忘了。会做:) @songyy:我编辑了答案以包含一个普通的 javascript 方法 【参考方案1】:

这个是使用 jQuery 的。我希望你能找到它。

 var find = $('*').filter(function ()  
        return $(this).css('position') == 'fixed';
    );

我认为这个使用纯 javascript 工作:

var elems = document.body.getElementsByTagName("*");
var len = elems.length

for (var i=0;i<len;i++) 

    if (window.getComputedStyle(elems[i],null).getPropertyValue('position') == 'fixed') 
        console.log(elems[i])
    


【讨论】:

@songyy:很高兴它有帮助。如果你觉得有用,请投票。谢谢【参考方案2】:

这是一个 ES6 版本,它为您提供了这些元素的数组以供进一步处理:

let fixedElements = [...document.body.getElementsByTagName("*")].filter(
    x => getComputedStyle(x, null).getPropertyValue("position") === "fixed"
);

【讨论】:

【参考方案3】:

document.querySelector('*[style="position:fixed"]')

* 项指定所有标签名称。 [] 表示您正在寻找一个属性。您希望您的样式属性具有position:fixed

如果您不使用 jQuery,这可能是您最简单的选择。

【讨论】:

你试过了吗?看看这个 jsfiddle jsfiddle.net/0xysh9wh/2 请更新 document.querySelector() 方法只查看标签属性。在不使用 jQuery 或其他 DOM 操作框架的情况下,您必须使用querySelectorAll('*') 组装所有元素(尽管我会用div 或其他东西替换那个'*')然后使用线性搜索尝试匹配element.style.position"fixed" 另外说明一下,我做了一点测试,jsfiddle似乎不支持querySelectorAll()的NodeList返回,所以你只会得到第一个元素。尝试在你的控制台运行它(类似于var a = document.querySelectorAll('*'); console.log(a)),你会看到你有一个可迭代的对象 @wilusdaman,如果元素由级联样式表(不是其样式属性)设置样式,则必须使用 getComputedStyle,element.style.position 将在小提琴中为空。而且您的选择器过于本地化,即使这样也行不通:jsfiddle.net/0xysh9wh/3【参考方案4】:

试试这个:

var elements = $('*').filter(function ()  
    return this.style.position == 'fixed';
);

它将为您提供所有位置固定的元素。

【讨论】:

我试过这个:$('*').filter(function (idx, ele) console.log(ele.style.position); return true;); 但有趣的是......我没有得到固定位置(相对或绝对)的元素 我实际上认为你的方法应该可行..但我也不知道有什么问题 我相信这只有在样式内联时才有效。 @geckob 啊是啊哈哈 :)

以上是关于在 HTML 页面中获取所有带有 `position:fixed` 的元素?的主要内容,如果未能解决你的问题,请参考以下文章

获取带有静态 html 内容的 wordpress 页面模板以在搜索中显示

在所有页面上打印带有页眉和页脚的 HTML 报告 - Firefox

桌面应用程序中的 HTML 加载带有 iframe 的页面

带有php echo的文本溢出div

如何在 $node 中获取 html 而不仅仅是 $nodeValue [重复]

处理带有承诺的对象数组