我要求每个客户使用白色标签(特别是更改标题徽标/菜单/字体颜色)我们现有的asp.net网络表单网站。客户可以选择他们想要的网站颜色。
该网站是一个门户网站,由多个网站组成。我不想使用主题或不同的母版页,因为我们没有足够的带宽来重组应用程序。据我所知,我有几个选择。我想知道是否有更多或有人知道任何其他更好/最好的方法来做到这一点。前两个选项可能类似,但一个可能是更好的表现。
为所有"颜色变化提供虚拟css课程"部分 - 比如customColor。
实施例
<div class="menu customColor" />
<div class="header customColor" />
菜单和标题css类包含所有样式,但颜色。
加载母版页时,以编程方式为此css类添加颜色。伪代码:Page.Header.Controls.Add(New LiteralControl("<style type=""text/css""> .customColor { color: blue }");
让asp.net ashx处理程序返回包含customColor { color:blue };
的whiteLabel.css,并动态地将此css添加到页面中。
每个页面中的元素并不多,需要更改。您可以在每个页面中设置一个功能,从数据库中设置适当的颜色。
我认为我的选择几乎是动态地改变css或以编程方式将颜色设置为单个元素。
另外我认为选择#1比#2更好,因为css会缓存在#2上吗?这将使公司难以改变颜色。
答案 0 :(得分:0)
您的所有网页都使用共同的MasterPage吗? 如果是这样,那么我曾经使用过为body设置一个类,或者可能是一个div包装器,如:
<div class='<%= GetCustomClass() %>'>
<div class="menu customColor" />
<div class="header customColor" />
</div>
GetCustomClass是一个静态方法,它将根据客户的选择返回说class1或class2 .css将类似于:
class1.customColor{color:blue;}
class2.customColor{color:red;}
希望有所帮助。
答案 1 :(得分:0)
我们也排除了选项3,如果在页面加载期间发生javascript错误,它可能无法重新页面。
留下选项1,尽管你可能想要更具可读性的东西:
<style>
.menu.customColor { color: <%= menuColor %>; }
.header.customColor { color: <%= headerColor %>; }
</style>