Angular 4+ 背景 css 参考 URL 图像路径

Posted

技术标签:

【中文标题】Angular 4+ 背景 css 参考 URL 图像路径【英文标题】:Angular 4+ background css reference URL image path 【发布时间】:2018-07-10 13:17:03 【问题描述】:

我一直被试图从我的应用程序中引用图像所困扰。 目录结构为:

src/app/assets/images/splashImage.png

在这个微不足道的情况下,我试图从以下位置引用它:

src/app/app.component.html

html的第一行:

<div class="splashContainer">

css 文件:

.splashContainer 
background: url("../../assets/images/splashImage.png") no-repeat center center fixed;

构建诊断表明它在 --> 上面的 URL 路径中找不到文件。

我的明显错误的规则是从包含 html 的文件夹开始计数。 app 是 1,src 是 2,这让我在资产文件夹之上。因此这两个 ../ 部分。

我做错了什么?

提前致谢。 修行者

【问题讨论】:

scss文件在哪里? Scss 与 html 位于同一位置。 :-) 然后尝试 ./assets/images/splashImage.png 作为 background-img 的位置 ./src/app/app.component.scss 模块中的错误未找到:错误:无法解析 './assets/Images/SolutionHunter%20Splash%20Image.png' in 'D: \Solution Hunter Engineering\Active Development\Hunter2\src\app' 【参考方案1】:

试试

background: url(assets/images/splashImage.png) no-repeat center center fixed;

【讨论】:

我试过了: background: url("assets/Images/SolutionHunter%20Splash%20Image.png") no-repeat center center fixed;并在 ./src/app/app.component.scss Module not found: Error: Can't resolve './assets/Images/SolutionHunter%20Splash%20Image.png' in 'D:\Solution Hunter Engineering\Active Development\Hunter2\src\app' 使用描述文件解析 './assets/Images/SolutionHunter%20Splash%20Image.png' 在 'D:\Solution Hunter Engineering\Active Development\Hunter2\src\app' 中:D:\Solution Hunter Engineering\Active Development\Hunter2\package.json(相对路径:./src/app) 什么是Solution Hunter after image here?资产/图像/解决方案猎人。图片文件名是 splashImage.png 对吧? 伟大的瑜伽士,你有一个解决方案。但我有一个建议,我认为最好使用没有空格的图像文件名,我从你的回答中了解到你有一个名为“SolutionHunter Splash Image.png”的图像文件,而且它应该可以使用背景:url (assets/images/yourfilename.png),因为它对我有用。谢谢【参考方案2】:

不要使用 ../dir 或 ../../dir 之类的路径,因为这样的相对路径很可能会在构建后在服务器中失败。由于 assets/ 文件夹默认在 angular.json 文件中声明。我建议您仅对图像使用内联 css。 例如:

<div class="bg-div" style="background-image: url(assets/images/imageX.png)"></div>

然后继续使用您的 css 文件中的其他 css:即

.bg-div: 
  background-size: cover;
  background-position: center center;
  height: 100%;
  position: relative;

这样,它在开发期间和部署期间都适用于本地构建。您不必在构建期间再次更改路径。

这是如果你有另一个外部 css 文件,除了主要的 angular 的styles.css

【讨论】:

【参考方案3】:

感谢您的所有帮助。我想出了答案。 首先:我的路径“公式”是错误的。我应该从包含该文件的文件夹的父级开始计数。所以在这种情况下:app包含html,scss所以我不计算它。但是,它的父 Src 是 1,它在资产之上。所以路径是 ../assets 等 webstorm 对路径感到满意,但对文件名不满意。 所以,我去掉了路径中的 %20 并用空白替换它们。 因此:

background: url("../assets/Images/SolutionHunter Splash Image.png") no-repeat center center fixed;

这行得通。 感谢您的协助。 修行者

【讨论】:

你不应该在文件名中使用空格,它真的会搞砸事情。建议你把图片名改成solutionHunterSplashImage.png 我同意 .. 会的。谢谢。【参考方案4】:

查看此答案。

详细解释 Angular 在 CSS 文件中的路径解析。

https://***.com/a/65799235/10569886

【讨论】:

以上是关于Angular 4+ 背景 css 参考 URL 图像路径的主要内容,如果未能解决你的问题,请参考以下文章

angular4 组件 css 附加带有背景图像名称的随机字符串

用于删除 Angular 材质 v5 模态背景的 CSS 代码

如何在Angular 4中使用ngStyle作为背景网址

如何将 Angular 应用程序的背景设置为图像?

使用css的background:url设置背景图方法

CSS背景设置代码怎么写?