【问题标题】:Rename all selectors in all HTML, CSS and JS by pattern (add prefixes to selectors)按模式重命名所有 HTML、CSS 和 JS 中的所有选择器(为选择器添加前缀)
【发布时间】:2017-06-26 07:44:55
【问题描述】:

我有一个静态网站:HTMLCSSJS 文件和无后端 编程。本网站的部分内容将被注入另一个网站。所以我需要确保我的项目中的新 CSS 文件不会损坏旧的 CSS 文件,反之亦然。

我需要做的一件事是像这样重命名所有选择器:

<button class="button">

<button class="my-button">

.button {
    background: blue;
}

.my-button {
    background: blue;
}

$('.button').on('click');

$('.my-button).on('click');

最好使用 GULPpostCSS,但任何其他方式也可以。有 GULP 插件吗?到目前为止,我只找到了 CSS。

谢谢。

【问题讨论】:

  • 使用文本编辑器重命名。
  • 为什么不用notepad++的replaceALL函数?
  • 嗯...有很多代码和很多不同的选择器。
  • 你做到了吗?
  • @BalaSivagnanam 现在我在我的代码中看到了这一点。尝试谷歌这样的插件。我的任务已解决,但我不记得我的解决方案有多“好”。我还是有不好的预感 :) var name = require('gulp-rename'); var rework = require('gulp-rework'); var reworkNPM = require('rework-npm'); var classPrefix = require('rework-class-prefix');

标签: javascript html css gulp postcss


【解决方案1】:

这仅适用于 CSS 部分,但我认为无论如何都没有适合您的自动化方式:

我会尝试不同的方法。我确信您包含的网站将位于容器内。如果它是 iframe,那么无论如何您都没有任何碰撞的危险 - 无需做任何事情。

为确保在其他 HTML 文档中正确包含内容时不会发生冲突,请执行以下操作:

  1. 将所有 *.css 文件重命名为 *.scss
  2. 创建一个新文件“includes.scss”,其中将包含所有重命名的 css 文件(确保顺序正确):

    .my-website { @import("header.scss"); @import("main.scss"); @import("footer.scss"); }

这会将所有包含的文件放在类上下文中,因此包含的规则仅影响.my-website 容器内的元素。

【讨论】:

  • 不,它不会是 iframe。将有普通页面,它们将具有来自两个项目的组件。感谢您将其包装到 of .my-website 中的想法,但同样,它对我的​​情况没有帮助。
  • CSS 实际上是最简单的部分。我找到this plugin 添加前缀。有一个 plugin 可以将 !important 添加到属性(它将解决相反的问题)和所有其他内容。但到目前为止,我没有看到 HTML 或 JS。
猜你喜欢
  • 1970-01-01
  • 2015-01-09
  • 2012-06-25
  • 2011-03-21
  • 1970-01-01
  • 2012-08-02
  • 2016-12-21
  • 1970-01-01
相关资源
最近更新 更多