【问题标题】:Accessing the img directory from scripts and css files从脚本和 css 文件访问 img 目录
【发布时间】:2013-12-21 08:19:06
【问题描述】:

我正在使用 html5 样板布局,它在同一级别具有 css、img 和 js 目录。我在从 .css 文件和 .js 文件访问图像时遇到各种问题。有人警告我,使用 ../ 可能会导致问题,但如果没有某种 url 生成器(就像我的模板文件一样),我如何才能最好地访问 .js 和 .css 文件中的图像?

【问题讨论】:

  • 如果您使用的是 smarty 之类的模板引擎,您可以设置一个 APP_BASE_URL 并在您的模板引擎中使用它,例如 {$APP_BASE_URL}js/ 和 {$APP_BASE_URL}css/ 和 {$APP_BASE_URL}images /

标签: javascript css html5boilerplate


【解决方案1】:

在 CSS 中访问静态资源的一种可靠方法是始终提供完整路径:

body {
    background-image: url("/path/to/image.png");
}

注意前面的/ 字符。它告诉浏览器在服务器的根目录中查找文件。例如,如果您当前在http://example.com/pictures/album/5,那么上面的 CSS 将在http://example.com/path/to/image.png 找到背景。

使用完整路径还可以鼓励您保持资源井井有条。

但这并不是说使用相对路径是一件坏事。如果您正在处理一个 CSS 项目并将其放在一个子文件夹中,例如 /static/myproject/project.css,那么您可以使用相对路径来引用该文件夹中的图像。

如果我们说你的项目在/static/myproject,文件夹结构是这样的:

/static/myproject/project.css
/static/myproject/back-button.gif
/static/myproject/forward-button.gif

然后,在您的 CSS 文件中,您可以调用相对于 CSS 文件的图像:

.back {
    background-image: url("back-button.gif");
}
.forward {
    background-image: url("forward-button.gif");
}

这样做的问题是资源往往存储在各处。这使得重用资源变得更加困难。

【讨论】:

  • 我想知道在使用 CDN(如 Amazon 的 CloudFront)时效果如何?预先挂起 / 会导致它从 CDN 的源目录中查找吗?如果没有,在遍历 CDN 目录时使用../ 是否仍然有效?
  • @FloatingRock 不,如果您使用的是 CDN,那么您需要提供完整的 URI(例如 http://your-cdn.com/path/to/image.gif)。 CDN 基本上只是您放置文件的地理分布的硬盘,它们不知道您的 HTML hrefs/srcs 指向什么。
猜你喜欢
  • 2021-01-06
  • 2019-06-25
  • 2013-05-19
  • 2010-12-29
  • 2013-05-24
  • 2013-12-11
  • 1970-01-01
  • 2012-12-30
  • 1970-01-01
相关资源
最近更新 更多