【问题标题】:Extract inline CSS from HTML and purify pages从 HTML 中提取内联 CSS 并净化页面
【发布时间】:2011-03-13 05:02:43
【问题描述】:

我有大量(超过 300 个)C# ASP.NET 页面 *.aspx 和控件 *.ascx,其中散布着内联 CSS 样式。我的任务是将这些样式提取到 CSS 文件中。

所以我正在寻找一种工具来简化手动提取此内联样式并将其替换为 class="" 语句的任务。

现在我知道这不是做事的理想解决方案,但任何可以减轻任务的工具都会有所帮助。

【问题讨论】:

    标签: asp.net html css


    【解决方案1】:

    我可能会选择使用带有正则表达式的脚本语言。这似乎特别适合python的列表功能-对于您的正则表达式的每个匹配项,您可以检查列表以查看是否有相应的条目,从该结果中提取和分配类,并添加每个未列出的匹配项到列表中以继续构建它。

    【讨论】:

    • 是的……是的,但我更想找一个现有的工具来做到这一点。我不是很想自己写。
    • 不要使用正则表达式解析 HTML,使用合适的 HTML 解析器:stackoverflow.com/a/1732454/3408
    • 他不是在寻找解析 HTML 的方法。他希望用另一组特定的模式替换一组特定的文本模式。正则表达式可以很好地做到这一点。这些模式出现在 HTML 中与正则表达式是否能恰当地满足他的需求无关。
    【解决方案2】:

    没有工具会为您编写好的 CSS 选择器,就像没有工具可以为您编写好的代码一样。是的,您可以从模板生成代码,但仅限于最重复的编码任务。 CSS 与其说是科学,不如说是艺术,因此“自动生成”不会产生好的结果。

    编写好的、干净、精简、可维护的 CSS 需要深入了解 HTML 标记、您想要实现的样式和布局,以及识别整个网站的模式(例如字体、颜色、h1)的技能标题、表格数据的表示等,可重复使用。

    即使编写自己的脚本也不会产生好的 CSS。您可能希望的最好结果是提取所有这些内联样式,用唯一的 id 或类替换它们,然后将它们全部转储到一个 css 文件中。我实际上并没有看到该练习有很多好处。实际上,由于您将创建所有额外的 id 或类,因此您最终需要维护更多代码。

    通过上述练习,您不会在整个网站上获得一致的外观,除非您开始将所有这些唯一 ID 或类合并为更少、更多重复使用的 ID,并且这是一项最好手动完成的任务,而不是自动化反正。由于 css 样式表的浏览器缓存,页面加载时间可能会有所改善,但这就是您获得的全部。

    抱歉,如果我偏离了您的问题,但您的网站听起来像是在呼唤您从头开始重新编写 CSS。

    查看CSS Zen Garden 获取有关 CSS 可以做什么的灵感,以及漂亮的 CSS 示例,并从中获得启发!

    【讨论】:

    • 你知道这是我进来的工作之一,而所有的损害都已经造成了。所以我创建了一个简单的估计,我将花费多少时间来“修复”当前的情况,并且至少需要 20 天左右。这是我不希望得到的答案。虽然以下是正确的,但它不会解决我的问题。它有助于零。
    • 是的,这将花费大量时间,比第一次正确执行所需的时间要长。您所能做的就是向您的团队/老板/客户解释为什么使用工具将 CSS 转储到文件中绝对没有意义,并解释正确操作的好处。让他们决定是否继续。
    【解决方案3】:

    您可以使用this 工具,它会查找内联样式=... 定义用类定义替换它们并生成样式表。希望这会有所帮助。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-31
    • 2012-07-10
    • 2011-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多