【问题标题】:Image path in CSSCSS中的图像路径
【发布时间】:2012-12-15 04:51:19
【问题描述】:

我正在使用一些 CSS 框架并尝试显示图标(使用具有 background-image 属性的类选择器)。可以说,我的文件结构是:

Content / site.css
Content / Folder1  / framework.css
Content / Folder1  / Folder2       / framework-images.css
Content / Folder1  / Folder2       / framework-icon1.png

site.css 看起来像:

@include "Folder1/framework.css";
...

framework.css 喜欢:

@include "Folder2/framework-images.css";
...

framework-images.css 是:

.selector {
    background-image: url("icon1.png");
}

但是当我试图添加到我的 html 元素类“选择器”时,Firefox 开发工具显示它试图从这里加载图标:

http://localhost:1234/Content/~/Content/Folder1/Folder2/icon.png

虽然正确的路径是(我是对的吗?):

~/Content/Folder1/Folder2/icon.png

或者只是

http://localhost:1234/Content/Folder1/Folder2/icon.png

那么哪里会出错呢?如何告诉客户端使用正确的路径?

附:如果重要的话,我正在使用 dotless (Less css)。换句话说,所有的.css实际上都是.less

P.P.S.这是 ASP.NET MVC4 应用程序。

更新: 正如@djfarrelly 指出的那样,问题出在 background-image: url(...) 中的路径不正确。我已将其更改为:

background-image: url("/Content/Folder1/Folder2/Icon1.png");

它开始工作了。 但我还是很困惑。谁能解释为什么没有完整路径指定它不能工作?

【问题讨论】:

  • 你介意发布你分配班级的那一行吗,不清楚“~”字符是如何进入那里的(css可能是正确的,问题取决于其他地方)。
  • @Ulises 我很确定这是 LESS 魔法的一部分:它会为您生成 URL,包括波浪号。生成的 url 是否实际上指向了错误的位置,或者您只是对其外观感到困扰?
  • 感谢澄清,我对 LESS 不熟悉
  • 我想原因不在 LESS 中,因为据我所知 ~/Content/ 是 MVC4 的东西。我很确定它类似于 ASP.NET MVC3 的 ../../Content/

标签: asp.net css asp.net-mvc-4 background-image less


【解决方案1】:

您对图像的所有引用都应引用您网站中的根文件夹,以避免混淆。您是否尝试将您的 css 更改为从根目录引用:

.selector {
    background-image: url("/Content/Folder1/Folder2/icon1.png");
}

如果您包含应该清理它的/

编辑: 我最初用../ 而不是正确的/ 发布这个来引用根文件夹。

【讨论】:

  • 我认为 background-image url 应该与 css 文件相关。我已尝试按您提到的那样指定路径,但 dev.tools 指出 localhost:4883/Content/~/Content/Folder1/Folder2/icon1.png。之后,我在开始时尝试了没有“..”的 url("/Content/...") - 它有效。感谢您指出问题的根源。
  • 是的,我也想过这个,但我没有找到任何证据。你有吗?
猜你喜欢
  • 2012-12-28
  • 2013-12-18
  • 2020-05-15
  • 1970-01-01
  • 2016-06-15
  • 2010-09-27
  • 2011-04-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多