代码之家  ›  专栏  ›  技术社区  ›  kobe

如何通过config entry引用css中的背景图像url

  •  1
  • kobe  · 技术社区  · 15 年前

    在css中指定背景图像url时,我们可以从配置项中获取值。

    http://imageserver ,明天可能会改成 http://imagecacheserver .

    在.net方面,我从appsettings获取服务器url。

    4 回复  |  直到 15 年前
        1
  •  2
  •   isNaN1247    15 年前

    你在用.Net MVC吗?即使你使用的是WebForms,你也可以加入MVC(只要有一个快速的Google)。

    无论如何,如果是这样的话,可以在Global.asax中放入UrlRoute

    routes.MapRoute(
                    "ImageHandler",
                    "images/{*fileName}",
                    new { controller = "ImageHandler", action = "Handle", fileName = "" } 
                );
    

    然后只需添加一个执行以下操作的“ImageHandler”控制器:

    public class ImageHandlerController : Controller
        {
            public ActionResult Handle(string fileName)
            {
                return Redirect("http://myactualserver.com/imageshere/" + fileName);
            }
    
        }
    

    然后,将所有来自/images/*的HTTP GET请求重定向到动态Url。当然,您可以“爵士乐”上面的方法使用您在AppSettings中的Url,而不是硬编码字符串。您可能还希望HtmlEncode'fileName'是安全的。

    所以你的CSS代码现在可以使用 background-image: url("/images/blah.jpg")

        2
  •  2
  •   Surreal Dreams    15 年前

    如果仔细使用相对url,这不是问题。考虑一下:

    .testclass { background: url(http://mydomain.com/images/myimage.jpg); }
    

    这很好-只要你还在mydomain.com上注册。另一种选择:

    .testclass { background: url(/images/myimage.jpg); }
    

    如果有一个/images文件夹,这将适用于您粘贴它的任何域。只要你的文件结构保持一致,你就可以走了。当然,所有这些都假设您将图像和CSS/HTML托管在同一个域中。

        3
  •  1
  •   pedrofalcaocosta    15 年前

    我有办法给你!叫少一点!

    就你而言:

    @path: "http://myserver.net/images";
    
    
    body {
      background-image: url(%("%s/bg-body.jpg", @path));
    }
    

    然后你只需要编译你的CSS并上传到服务器。 当你的图像服务器改变时,你只需要改变变量,编译CSS并上传它。

    当然,如果这仅仅是为了一个图像是过度杀伤力,但如果你有一个有数百个声明的CSS,它真的很好有这样一个解决方案。

    你可以访问较少的网站 http://lesscss.org/

        4
  •  0
  •   pedrofalcaocosta    15 年前