在C#中动态更改CSS类的属性

时间:2013-02-25 19:26:18

标签: c# css class

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

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

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

有没有一种简单的方法可以做到?

1 个答案:

答案 0 :(得分: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文件并不常见,通常不是解决问题的正确方法。正如评论家指出的那样,有像LESS和SASS这样的CSS预处理器,它们通常用于解决一些CSS内部问题(主要是冗余)。预处理器修复了CSS的问题并且非常有用,但是没有像你所问的那样使用它。关键不同类和ID的单独CSS文件或CSS文件是解决方案,而不是动态创建具有不同属性值的CSS文件或块。