【问题标题】:How to use relative/absolute paths in css URLs?如何在 css URL 中使用相对/绝对路径?
【发布时间】:2011-08-14 12:00:13
【问题描述】:

我有一个生产和开发服务器。 问题是目录结构。

发展:

  • http://dev.com/subdir/images/image.jpg
  • http://dev.com/subdir/resources/css/style.css

生产:

  • http://live.com/images/image.jpg
  • http://live.com/resources/css/style.css

我怎样才能在css 文件夹中有一个style.css 在两台服务器上使用background: url 属性的相同路径?有什么技巧可以用于相对路径?

【问题讨论】:

    标签: css relative-path absolute-path


    【解决方案1】:

    网址是relative to the location of the CSS file,所以这应该适合你:

    url('../../images/image.jpg')
    

    相对 URL 会返回两个文件夹,然后是 images 文件夹 - 只要结构相同,它应该适用于这两种情况。

    来自https://www.w3.org/TR/CSS1/#url

    部分 URL 被解释为相对于样式表的来源,而不是相对于文档

    【讨论】:

    • 如果我必须后退 2 步(更新答案) url(../../images/image.jpg) 会起作用吗?
    • @anothershrubery - 抱歉我的第一个例子有缺陷
    • @danip - 它应该可以工作,但你没有从http://domain.com/css/style.css 开始的两个步骤。我不确定在那里可以做什么...... 编辑: - 是的,它应该适用于更新的结构,我已经更新了答案(似乎只是另一个../)。
    【解决方案2】:

    就我个人而言,我会在 .htaccess 文件中解决这个问题。您应该可以访问它。

    这样定义你的 CSS URL:

    url(/image_dir/image.png);
    

    在您的 .htacess 文件中,输入:

    Options +FollowSymLinks
    RewriteEngine On
    RewriteRule ^image_dir/(.*) subdir/images/$1
    

    RewriteRule ^image_dir/(.*) images/$1
    

    取决于网站。

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题...每次我想发布我的 css.. 我必须进行搜索/替换.. 并且相对路径对我也不起作用,因为相对路径从开发到生产是不同的.

      最后厌倦了搜索/替换,我创建了一个动态 css,(例如 www.mysite.com/css.php)它是一样的,但现在我可以在 css 中使用我的 php 常量。有点像

      .icon{
        background-image:url('<?php echo BASE_IMAGE;?>icon.png');
      }
      

      让它动态化并不是一个坏主意,因为现在我可以使用 YUI 压缩器对其进行压缩,而不会丢失我的开发服务器上的原始格式。

      祝你好运!

      【讨论】:

      • 问题上没有php标签! OP 可能根本没有使用 php。
      • 只是一个例子..你可以使用php、asp、jsp..想法是一样的
      • 它也可以是静态的。
      • 另外,如果这是在 CSS 文件中,那么 &lt;?php **** ?&gt; 将不会被处理
      猜你喜欢
      • 1970-01-01
      • 2015-01-24
      • 1970-01-01
      • 1970-01-01
      • 2012-10-24
      • 1970-01-01
      • 1970-01-01
      • 2017-11-30
      • 1970-01-01
      相关资源
      最近更新 更多