我重新阅读了这个问题,并认为我应该给出一个完全不同的答案。
css 主要是声明性的。这是一个很大的方便。如果您以这种方式声明某些内容,则无需关心在新元素上重新应用 css 或重新处理 DOM。它发生在“浏览器中”。每次发生某些事情(例如添加新元素)时都必须将新元素更改为新状态不仅不方便,而且会导致很多错误。所以没有“异步加载元素”的一般事件,但你不应该寻找一个。
缓存
在任何 web 环境中,拥有一个恒定的 css 文件主要是一个好主意。浏览器缓存 css,每次需要时都可以使用它。如果您更改 css,浏览器将不会注意到。当然有很多设置需要考虑,但在大多数情况下都是如此。
因此,如果您可以编辑您的 css 文件,这并不重要,因为您需要以某种方式告诉浏览器注意更改。
有一种叫做cache-busting的技术,主要是在css后面加一个GET参数,比如:
<link href="https://www.famous-cats.com/style/puna.css?v=3" rel="stylesheet" type="text/css" />
浏览器认为 ?v=1 与 ?v=2 不同,尽管您只是引用了同一个文件。所以它会缓存它具有不同 GET 参数的每个版本。
好的。
更改文件
但即使您更改了文件:更改 css 文件本身是否是个好主意?如果 95% 的规则每次都是相同的(与那一种颜色无关的所有内容),您可能希望将其分隔在一个“主”文件中,并且只更改有关颜色的部分,这可能是不同的文件/内联 html。
关于更改文件的另一件事是,如果您不打算以程序方式生成新样式,您应该只编写常量文件并切换它们。
DOTLESS
它是lesscss 到asp.net 的一个端口。检查 http://lesscss.org/ 的功能,它基本上是 sass,语法略有不同。
它的好处是你可以使用变量,并从 url 参数中获取它的值,所以如果你链接 style.less?color=fuschia 它只会将名为“color”的变量设置为你喜欢的颜色。
Less 是整洁的东西,可以大大减少开发时间。
我推荐的解决方案
只需在不同于主要的 css 中进行着色:
<link href="https://www.famous-cats.com/style/main.css" rel="stylesheet" type="text/css" />
<link href="https://www.famous-cats.com/style/color.less?color=00FF55" id="colorcss" rel="stylesheet" type="text/css" />
如果您需要更改颜色,只需调用:
document.getElementById('colorcss').href = 'color.less?color=F35741';
(我已经给链接标签一个id)。
而且它有效。
深入浅出,看看如何使用颜色变量。您可以让管理员只选择一种颜色。
另外,内联 CSS 也不是魔鬼的工作,您可以在 razor 中轻松创建它。如果只是一些规则,它不会伤害任何人。因此,如果您不喜欢 less,您可以使用内联 css,或使用 MVC 控制器操作生成 css(只需将 mimetype 设置为 text/css,并使用 url 参数进行颜色更改/缓存破坏)。
我希望这能回答你的问题。