如何设置CSS切换器

时间:2008-08-07 18:31:23

标签: javascript html asp.net css

我正在开设一个网站,该网站将在设定的日期切换到新的风格。该网站内置语义HTML和CSS,因此更改应该只需要CSS参考更改。我正在与一位需要能够看到它外观的设计师一起工作,以及一位需要能够审查当前外观的内容更新以及新外观设计进度的客户。

我打算在页脚中使用魔术查询字符串值和/或javascript链接,写出一个cookie来选择新的CSS页面。我们正在使用ASP.NET 3.5。有什么建议吗?

我应该提一下,我们正在使用IE条件注释来支持IE8,7和6。我可以创建一个替换函数:

<link href="Style/<% GetCssRoot() %>.css" rel="stylesheet" type="text/css" />
<!--[if lte IE 8]>
    <link type="text/css" href="Style/<% GetCssRoot() %>-ie8.css" rel="stylesheet" />
<![endif]-->
<!--[if lte IE 7]>
    <link type="text/css" href="Style/<% GetCssRoot() %>-ie7.css" rel="stylesheet" />
<![endif]-->
<!--[if lte IE 6]>
    <link type="text/css" href="Style/<% GetCssRoot() %>-ie6.css" rel="stylesheet" />
<![endif]-->

4 个答案:

答案 0 :(得分:15)

在Asp.net 3.5中,您应该能够在标头中将Link标记设置为服务器标记。然后在代码隐藏中,您可以根据cookie值,查询字符串,日期等设置link元素的href属性。

在您的aspx文件中:

<head>
  <link id="linkStyles" rel="stylesheet" type="text/css" runat="server" />
</head>

在守则背后:

protected void Page_Load(object sender, EventArgs e) {
  string stylesheetAddress = // logic to determine stylesheet
  linkStyles.Href = stylesheetAddress;
}

答案 1 :(得分:5)

您应该查看ASP.NET主题,这正是它们的用途。它们还允许您进行皮肤控制,这意味着为它们提供一组默认属性。

答案 2 :(得分:1)

我建议将样式表选择存储在会话中,这样您就不必一直依赖查询字符串键。您可以在Page_Load中检查会话并添加相应的样式表引用。听起来这是一个临时/发展的情况,所以选择简单易行的方式。

if (!String.IsNullOrEmpty(Request.QueryString["css"]))
  Session.Add("CSS",Request.QueryString["css"]);

答案 3 :(得分:-3)

我会做以下事情:

www.website.com/?stylesheet=new.css

然后在您的ASP.NET代码中:

if (Request.Querystring["stylesheet"] != null) {
    Response.Cookies["stylesheet"].Value = Request.QueryString["stylesheet"];
    Response.Redirect(<Current Page>);
}

然后在哪里定义样式表:

if (Request.Cookies["stylesheet"] != null) {
    // New Stylesheet
} else {
    // Default
}