如何设置CSS切换器

时间:2020-03-05 18:38:26  来源:igfitidea点击:

我正在一个网站上工作,该网站将在设定的日期切换为新样式。该网站内置了语义HTML和CSS,因此更改只需要更改CSS参考即可。我正在与一位将需要查看外观的设计师一起工作,并与一位将需要查看当前外观的内容更新以及新外观的设计进度的客户一起工作。

我打算在页脚中使用一个神奇的querystring值和/或者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]-->

解决方案

回答

我建议将样式表选择存储在会话中,这样我们就不必一直依赖存在的querystring键。我们可以在Page_Load中检查会话并添加适当的样式表引用。听起来这是暂时的/发展中的情况,所以不管容易还是可行。

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

回答

在Asp.net 3.5中,我们应该能够将标头中的链接标签设置为服务器标签。然后,在后面的代码中,我们可以基于cookie值,查询字符串,日期等为链接元素设置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;
}

回答

我们应该研究一下ASP.NET主题,这正是它们的用途。它们还允许我们设置外观控件,这意味着为它们提供了一组默认属性。

回答

我将执行以下操作:

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
}