CSS和缺少常量/变量问题?

时间:2008-10-08 22:38:35

标签: asp.net .net css layout

如果样式表具有对另一台服务器上的图像资源的完全限定引用,是否有一种很好的方法可以通过需要不同基本URL的不同环境来处理促销?

  

background-image:url   (evironmentSpecificURL / resourceName.foo);

environmentSpecificURL因环境而异,我不希望在开发,qa,登台,制作等过程中修改此文件。

我有想法,但我对别人如何处理这个问题很感兴趣 - 我会发布我的一个想法。

让我强调(基于另一个响应)图像资源不存在于同一服务器上,而且是将要更改的URL。所以相对路径在那种情况下不起作用。

另外,我试图避免修改可能存在多个URL实例的css,并将该URL集中到一个配置点。

任何帮助!

8 个答案:

答案 0 :(得分:3)

您引用的资源实际上应该与您的css文件处于相对级别,这样它只是一个“.. \ resourceName.foo”远离工作。

对于cource,您还可以查看自动生成站点的环境特定区域的构建工具,因此所有属性(如css文件,.properties文件等)都是通过构建工具链接ANT动态生成的。的MSBuild

答案 1 :(得分:2)

在CSS样式表中,基本URL是样式表的基本URL,而不是包含它的文档。使样式表中的URL相对并正确定位样式表。

答案 2 :(得分:1)

您可以创建一个可配置的CSS预处理器,用URL替换定义并缓存结果。

答案 3 :(得分:0)

我的想法:

在Web应用程序上本地开发一个处理程序/ etc,以提取映像并处理配置文件中基本URL的更改:

  

background-image:url   (localHandler.ashx(CSS)/resourceName.foo);

localHandler调用目标资​​源,然后根据内容类型返回资源。

答案 4 :(得分:0)

要么跨环境保持一致(我总是喜欢这种方法)或动态生成CSS。

答案 5 :(得分:0)

根据您的构建环境,可能有一种机制来处理资源文件并用所需的值替换变量。

我将Maven用于我的Java开发,它内置了这个功能。

答案 6 :(得分:0)

您可以使用<base />标记并设置要使用的基本URL来解决所有其他相关请求,从而实现您的目标。

答案 7 :(得分:0)

你可以用我们的.Less CSS preprocessor做一些事情来在运行时换掉变量。

那说,你是如何部署的?如果您使用CI工具并自动编写部署脚本,那么您可以包括一个后期构建步骤来查找替换此基本路径。