无可奈何的CSS路径

众所周知,ASP.NET 2.0中的css有了很大的改进,使用CSS设计时,只需要考虑其图像的相对于CSS的路径即可。这实现了表现分离,对美工而言的好处不言而喻。

事实上,.NET在生成页面css时,会自动对URL进行过滤,无论你处于什么目录,只要原始CSS中的img指向正确,URL内的返回就是正确的。

但,这次,我踢到了铁板!!

需求很简单,在制作的自定义控件中,我们使用PNG格式的图片。这种格式的图片在IE6下(全中国用IE6的仍然是多数)需要使用Hack技巧来使其背景透明,以下是一个示例:

 

.messageFrame .framebody .centerLeft
{
    background: transparent url(../images/window/rcL1100png.png); *background-image:none;
width:15px;
height:100%;
float:left;
filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod='scale',src="./images/window/rcL1100png.png");
}

 

此页面的效果在FF下一切正常,不过,在ie6下,问题来了,它可能正常,也可能不正常。原因很简单:filter使用的路径是不会改变的!!!

.NET 2.0中对于src属性会视而不见,完全不进行任何转化。

无法可想的情况下,只有两种办法:

1)在所有需要图片的相对路径目录下,放入图片;

2)在每个页面上重写该CSS,使用就近优先原则来实现CSS覆盖。

只是这样一来,所有自定义控件的封装性全被打破。

不知道还没有其它的办法????

 

posted @ 2008-08-24 19:01  minttang  阅读(1784)  评论(3编辑  收藏  举报