目前,我网站上的所有网页都有一行如下:
<link rel="stylesheet" type="text/css" media="screen, projection" href="css/screenpro.css" />
screenpro.css是一个小文件,如下所示:
@import url("reset.css");
@import url("master.css");
@import url("account.css");
@import url("slideshow.css");
@import url("enriched.css");
@import url("ie.css");
@import url("popup.css");
一切正常。但是,我只是编写了一个小程序,生成一个动态css文件,用于更改页面上的背景颜色。我把它包含在我的一个页面上:
<link rel="Stylesheet" href="ColorChange.ashx" />
但是,我很懒,我的网站有很多页面 - 我不想在每个页面上添加这个新的导入。我试过这个:
@import url("../ColorChange.ashx");
和此:
@import url("ColorChange.ashx");
在screenpro.css中,但它没有用。有没有办法让我将生成动态css的.ashx页面包含到我现有的css树中,或者我是否必须从每个页面手动链接它?
编辑:ColorChange.ashx中的有趣位
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "text/css";
String query = context.Request.UrlReferrer.Query;
Match match = Regex.Match(query, "bg=(?<bg>\\w{6})");
if (!match.Success) return;
context.Response.Write("\n.proaccount div.box, .proouter #pnlHaveResults div.box { background-color:#" + match.Groups[1] + ";}\n");
}
答案 0 :(得分:4)
您是否正在发送正确的标题?类似于:'Content-type:text / css' 因为浏览器需要它来将您的响应标识为CSS。
我没有使用太多的ASP,但在PHP中你可以完全按照自己想做的方式做,只需先打印标题,然后再打印规则。
答案 1 :(得分:1)
我会使用绝对路径。如果你使用正斜杠/
开始所有操作,那么这意味着“从网站的根目录”。它为您提供了一个坚实的起点:
@import url("/css/ColorChange.ashx");
我不认为你也有这个线程中已经提到的内容类型问题,因为你有一行说:
context.Response.ContentType = "text/css";
使用绝对网址的唯一问题是,有时您最终会得到与您的直播网站不同的开发网址。例如,当您在visual studio中运行它时,最终可能会得到http://localhost/mysuperapplication/
之类的网址。有一种简单的方法来解决这个问题:
答案 2 :(得分:1)
浏览器是否在没有新导入行的情况下缓存旧的CSS文件?尝试清除缓存。