【发布时间】:2016-12-21 21:21:27
【问题描述】:
有没有办法编写 CSS 审计脚本?我只需要文件级信息,而不是单独的规则。似乎页面必须实际呈现才能获得准确的信息……所以像 Selenium 这样的东西可能会有所帮助?
我看到有浏览器插件可以审核 CSS 文件(例如,StackOverflow question、A List Apart article),但是手动查看每个页面的结果会花费太长时间
背景
多年来,各种 CSS 文件已潜入我们网络应用的模板标题中。当来自多个框架、插件等的重叠规则都在争夺霸权时,尝试为元素设置样式是一个巨大的痛苦。
作为整合/标准化尝试的一部分,我想将旧参考从网站模板移到各个页面标题中,因此 CSS 规则的影响将仅限于使用/需要它们的地方.
我认为最简单的方法是抓取网站并跟踪在何处使用了哪些 CSS 样式表。
更新
可能会出现无意的规则匹配,所以我开始认为我无法编写此脚本。我们可能不得不逐页浏览。即便如此,某些页面的样式可能依赖于对立样式表的奇怪交集:-/
另外,我对这些静态 CSS 检查器持怀疑态度,尤其是对于模板文件。规则 ul > li.special 可能直到运行时才匹配任何内容(可以在服务器端或 javascript 创建元素)
【问题讨论】:
-
PurifyCSS 怎么样?看起来它可以与 web-scraper 和/或 Selenium 驱动的脚本结合使用。
-
grunt-uncss 也可能是一个选项,具体取决于您的开发堆栈。
-
问题是 PurifyCSS 和 uncss 做的与想要的相反……我只需要识别给定页面未使用(或使用)的样式表,因此它们不会开箱即用跨度>
-
我曾经遇到过这样的情况,我在模板样式上进行了自定义样式,包括旧页面的一些旧版样式表。我当时所做的(这也需要很多时间)是删除所有样式,然后重新开始,自上而下,重新实现样式表。这样做的好处是它很干净,我借此机会用 SCSS 编写所有内容并将一些结构应用到 CSS 项目中。
-
在继承旧代码时,我做了类似的事情(特别是围绕媒体查询)。我写了一篇关于它的文章here。
标签: html css selenium web-scraping