【发布时间】:2011-03-20 06:15:58
【问题描述】:
在 Visual Studio 2010 中,有没有办法根据客户端浏览器更改服务器端的层叠样式表?我想为不同的浏览器(Firefox、Chrome、IE、Opera、Safari 等)创建不同的样式表,并从母版页指定要使用的样式表。
【问题讨论】:
标签: asp.net css visual-studio-2010
在 Visual Studio 2010 中,有没有办法根据客户端浏览器更改服务器端的层叠样式表?我想为不同的浏览器(Firefox、Chrome、IE、Opera、Safari 等)创建不同的样式表,并从母版页指定要使用的样式表。
【问题讨论】:
标签: asp.net css visual-studio-2010
不确定我是否完全遵循,但您可以在项目的 App_browsers 文件夹中指定这些内容。
【讨论】:
这是一篇关于在asp.net中检测浏览器类型的好文章:
http://msdn.microsoft.com/en-us/library/3yekbd5b.aspx
一旦您使用例如HttpContext.Current.Request.Browser.Type 上的switch 语句检测浏览器类型,您就可以轻松地将css 引用插入到页面中,代码如下:
HtmlLink cssLink = new HtmlLink();
cssLink.Attributes["type"] = "text/css";
cssLink.Attributes["rel"] = "stylesheet";
switch(HttpContext.Current.Request.Browser.Type)
{
Case "Firefox":
//use a certain path depending on browser type
cssLink.Attributes["href"] = "firefox.css";
break;
Case "Internet Explorer"
cssLink.Attributes["href"] = "IE.css";
break;
//and so on
}
Page.Header.Controls.Add(cssLink);
我不知道每个浏览器的Browser.Type 的实际字符串值是多少。您必须进行测试。
即使采用上述方法,我仍然建议对所有浏览器使用一个样式表。只需稍加努力,您就可以使页面在所有主要浏览器中呈现几乎相同的效果。
首先,我建议从重置 CSS 文件开始,例如 YUI 2 Reset 或 YUI 3 Reset。从那里开始,大多数样式将在浏览器中很好且一致地应用。重置所有默认样式后,您可以完全控制自己的样式。
【讨论】:
我同意 KP;使用单个样式表。 如果您使用的是modernizr [原文如此],那么您可以非常简单地为不同的浏览器设置样式,例如:
someContainer {
/* standards based CSS */
}
someContainer.ie6 {
/* special CSS for IE6 */
}
我的建议是使用包含modernizr 的新HTML5 样板。你会很高兴你做到了!
查看下面的链接,不要回头。 :)
Link to Modernizr - ease the chaos!
干杯
【讨论】: