Many people forget that ASP isn't just for making dynamic HTML pages. In this article Thomas shows us just how easy it is to build style sheets with ASP too...
'Explorer IE = FALSE IE4 = FALSE IE5 = FALSE IE6 = FALSE If InStr(strUserAgent, "MSIE") Then IE = TRUE End If If InStr(strUserAgent, "MSIE 4") Then IE4 = TRUE ElseIf InStr(strUserAgent, "MSIE 5") Then IE5 = TRUE ElseIf InStr(strUserAgent, "MSIE 6") Then IE6 = TRUE End If
'Opera Opera = FALSE Opera5 = FALSE If InStr(strUserAgent, "Opera") Then Opera = TRUE End If If InStr(strUserAgent, "Opera 5") _ Or InStr(strUserAgent, "Opera/5") Then Opera5 = TRUE End If
'Netscape NS = FALSE NS4 = FALSE NS6 = FALSE If InStr(strUserAgent, "Netscape6") Then NS6 = TRUE ElseIf InStr(strUserAgent, "Mozilla/4") AND Not (IE OR Opera) Then NS4 = TRUE End If 'This may not be 100% accurate; there are a lot of browsers based on the Mozilla core If NS6 OR NS4 OR (InStr(strUserAgent, "Mozilla") AND Not (IE OR Opera)) Then NS = TRUE End If
'If the document looses the Loose DTD instead of Transitional or Strict 'then set css2compatible to FALSE for IE6 instead If Opera5 Or IE6 Or NS6 Then css2compatible = TRUE Else css2compatible = FALSE End If
OtherBrowser = FALSE If Not (IE OR NS4 OR NS6 OR Opera) Then OtherBrowser = TRUE End If If InStr(strUserAgent, "MSIE 5") _ Or InStr(strUserAgent, "MSIE 6") Then IE5Plus = TRUE Else IE5Plus = FALSE End If
Generating the CSS Now that we have tools to detect the type of browser, it is very simple to customize the output of the style sheet. We start by changing the ASP content type to that of a CSS style sheet. Then we include the browser detection code in BrowserDetect.asp. With these two preliminary steps complete, we just use simple IF...Then code to specify where and when a given style command should be part of our definition.
<% Response.ContentType = "text/css" %> <!--#include file="BrowserDetect.asp"--> #SampleBox { <% If Not NS4 Then %> font-family: Tahoma, Arial, sans-serif; font-size: 10pt; <% Else %> fontfamily: Tahoma, Arial, sans-serif; fontsize: 10pt; <% End If %> <% If css2compatible Then %> /* in css2 standard the width of the box does not invlude its padding, borders, or margins */ width: 230px; height: 80px; padding: 10px; <% Else %> /* in older browsers, padding in considered part of a box's width and height */ width: 250px; height: 100px; padding: 10px; <% End If %> }
The above code accounts for two circumstances in which you'd wnt to customize CSS output, but there could be many more. The first is that one corrects for improperly implemented style commands in Netscape 4, which doesn't use the hyphen in font commands as it should. The second accounts for a rather critical clarification of the way padding should be implemented that was not corrected until version 6 or IE and Netscape.