【问题标题】:VS2010 Changing style sheet based on the browserVS2010 基于浏览器更改样式表
【发布时间】:2011-03-20 06:15:58
【问题描述】:

在 Visual Studio 2010 中,有没有办法根据客户端浏览器更改服务器端的层叠样式表?我想为不同的浏览器(Firefox、Chrome、IE、Opera、Safari 等)创建不同的样式表,并从母版页指定要使用的样式表。

【问题讨论】:

    标签: asp.net css visual-studio-2010


    【解决方案1】:

    不确定我是否完全遵循,但您可以在项目的 App_browsers 文件夹中指定这些内容。

    【讨论】:

      【解决方案2】:

      这是一篇关于在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 ResetYUI 3 Reset。从那里开始,大多数样式将在浏览器中很好且一致地应用。重置所有默认样式后,您可以完全控制自己的样式。

      【讨论】:

      • 谢谢。这正是我想要的。
      【解决方案3】:

      我同意 KP;使用单个样式表。 如果您使用的是modernizr [原文如此],那么您可以非常简单地为不同的浏览器设置样式,例如:

      someContainer {
         /* standards based CSS */
      }
      
      someContainer.ie6 {
         /* special CSS for IE6 */ 
      }
      

      我的建议是使用包含modernizr 的新HTML5 样板。你会很高兴你做到了!

      查看下面的链接,不要回头。 :)

      Link to Boilerplate for HTML5

      Link to Modernizr - ease the chaos!

      干杯

      【讨论】:

        猜你喜欢
        • 2011-07-31
        • 1970-01-01
        • 2021-07-12
        • 1970-01-01
        • 2015-07-23
        • 2015-07-11
        • 1970-01-01
        • 2014-10-10
        • 1970-01-01
        相关资源
        最近更新 更多