125

有没有一种方法(除了试错法)可以用来查找未使用的图像文件?对于站点中甚至不存在的ID和类的CSS声明如何?

似乎有一种方法可以编写一个脚本来扫描网站,分析它,并查看哪些图像和样式从未加载。

  • 5
    更多信息请访问stackoverflow.com/questions/135657/…
    – 亚森
    评论 2012年7月5日11:52
  • 尝试对图像执行gulp-delete-unused-images操作 评论 2019年3月30日21:01
  • 我不同意这个紧密的理由。stackoverflow.com/help/on主题:如果您的问题通常涉及……程序员常用的软件工具;并且是。。。那么你就在合适的地方问你的问题了!它的主题是:OP不需要第三方工具,只需要内置的Google Chrome开发工具。
    – 巴斯基
    评论 2022年2月4日0:56

5个答案5

重置为默认值
77

你不需要支付任何网络服务或搜索插件,你已经在谷歌浏览器F12下有了这个(检查器)->审核->删除未使用的CSS规则

截图:截图

更新日期:2017年6月30日

现在Chrome 59提供CSS和JS代码覆盖率。请参阅https://developers.google.com/web/updates/2017/04/devtools-release-notes#coverage

在此处输入图像描述

4
  • 4
    很好地使用现有的工具,但这只扫描加载的页面,而不是整个网站? 评论 2012年5月29日7:53
  • 7
    太棒了,谢谢。对于响应型网站要小心,因为你必须重新加载不同大小的网站,才能知道其中一种或多种样式没有被使用。它只检测正在查看的视口的样式。
    – 弥迦
    评论 2012年10月26日6:30
  • 2
    对于将所有css压缩到单个文件中的站点来说,这可能不是一个可行的选项。如果您审核某个特定页面,它将显示许多未使用的css,但这些样式将用于其他页面。所以,在我看来,审核一个页面并不是一个好的选择。 评论 2014年10月10日14:35
  • 在新版本“绿色/红色覆盖”中,如何自动删除所有未使用的规则(红色)?
    – 巴斯基
    评论 2022年2月4日0:55
19

在文件级别:

使用wget对站点进行主动搜索,然后处理http服务器日志以获取访问的文件列表,并将其与站点中的文件进行比较

差异\<(sed some_rules httpd_log|sort-u)\<(ls/var/www/whatever |排序-u)\|grep什么的
1

我似乎记得Adobe Dreamweaver或Adobe Golive都有一个功能,可以找到孤立的样式和图像;现在不记得是哪一个了。可能两者都有,但特征被很好地隐藏了起来。

1
  • 1
    是的,您可以在Dreamweaver中找到孤立文件。它位于“站点”>“检查链接”中,然后将下拉列表更改为“孤立文件”。然而,要注意相对链接与绝对链接。它只是告诉我,我所有的图像都是孤立文件,因为实际链接指向的是网络上图像的实时副本,而不是图像的本地副本。 评论 2015年4月22日23:17
2

Chrome canary版本在开发人员工具栏中有一个“CSS覆盖范围“作为实验开发人员的功能之一。此选项出现在时间轴选项卡中,可用于获取未使用CSS的列表。

在此处输入图像描述

请注意,您还需要在开发人员工具栏的设置中启用此功能。此功能可能会成为正式的chrome版本。

在此处输入图像描述

1

这个小工具为您提供了一些html使用的css规则列表。

它在这里代码笔

单击运行代码段,然后单击整页然后按照片段中的说明进行操作。您可以整页运行它,以查看它与html/cs的协同工作。

但将我的代码笔作为工具添加书签更容易。

/*CSS清洁剂说明1.将HTML粘贴到HTML窗口2.将CSS粘贴到CSS窗口5.网页结果现在以HTML使用的CSS列表结束!*/函数cssRecursive(e){var cssList=css(e);对于(var i=0;i<e.children.length;++i){var childElement=e.childrens[i];cssList=联合(cssList,cssRecursive(childElement));}返回cssList;}函数css(a){var sheets=document.styleSheets,o=[];a.matches=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.msMatchesElector||a.oMatches选择器;for(表中的var i){var rules=sheets[i].rules||sheets[i].cssRules;for(规则中的var r){if(a.matches(规则[r].selectorText)){o.push(规则[r].cssText);}}}返回o;}函数并集(x,y){返回唯一(x.concat(y));};函数唯一(x){返回x.filter(函数(元素,索引){return x.indexOf(元素)==索引;});};document.write(“<br/><hr/><code style='background-color:白色;color:黑色;'>”);var allCss=cssRecursive(document.body);对于(var i=0;i<所有Css.length;++i){var cssRule=所有Css[i];document.write(cssRule+“<br/>”);}document.write(“</code>”);

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.