-3

我希望能够“A”动态生成 CSS 文件 - 或“B”能够读取 css 文件并更改 C# 中 CSS 类的某些属性。

原因是,我的网站将被配置为用户的公司,利用他们的颜色、徽标、文本大小等......

第一个想法是动态创建一个 CSS 文件——但我在网上找不到任何人展示示例或诸如此类的地方。第二个想法是读取 css 文件并根据用户的登录更改 CSS 类。

有没有简单的方法呢?

4

1 回答 1

2

通常,这是通过几种不同的方式处理的。您可以根据请求的属性(例如当前站点)包含一个附加的或不同的 CSS 文件。您还可以根据请求属性输出包含不同类的 HTML。一种常见的技术是在满足某些条件时向根元素添加类,然后编写 CSS 来使用这些类。

例如,如果您为多个站点使用相同的代码库,则在站点 A 上您可以拥有<html class="site-a">,在站点 B 上您将拥有<html class="site-b">. 然后,您可以轻松地覆盖基于站点的样式。

/* Default to white background */
body {
    background: white;
}

/* Use a black background for Site A */
.site-a body {
    background: black;
}

/* Use a blue background for Site B */
.site-b body {
    background: blue;
}

这当然是一个非常简单的例子。在整个站点的情况下,单独的 CSS 文件更具有架构意义,因为您将它们与其他站点特定文件一起存储。

我建议更多地研究应用程序通常如何组织其前端表示层和文件。例如,MVC 是一种分离应用程序部分的方法。在演示的上下文中,您可以使用模板和主题等概念来封装 UI 的各个部分并将其转换为可重用的部分。

编辑:在我的回答中迷失的是我没有谈论实际动态生成 CSS 文件。这是因为动态生成 CSS 文件并不常见,而且通常不是问题的正确解决方案。正如评论者所指出的,有一些 CSS 预处理器,如 LESS 和 SASS,它们通常旨在解决一些 CSS 内部问题(主要是冗余)。预处理器修复了 CSS 的问题并且非常有用,但并没有按照您所询问的方式使用。单独的 CSS 文件或不同类和 ID 的 CSS 文件是解决方案,而不是动态创建具有不同属性值的 CSS 文件或块。

于 2013-02-25T19:48:44.850 回答