javascript - Angular 2 避免编译 CSS 中定义的图像

标签 javascript html css angular

我的 Angular 2 应用程序中有一个 styles.css。 它在 .angular-cli.jsonapp.styles 对象中被引用。 在那个 css 里面我有背景图片的 url,例如:

.bg-game {
  background-image: url("assets/app/game_bg_768.jpg");
}

在编译应用程序时,Angular 2 似乎将文件从它们的位置复制到已编译应用程序的根文件夹中,并在其名称中添加一个随机哈希值。

例如 assets/app/game_bg_768.jpg 将作为 game_bg_768.023f195663c85e8f0322.jpg 复制到 dist/(已编译的应用程序文件夹)。

然后在Angular 2编译出来的styles css中,引用会相应的改变:

.bg-game {
  background-image: url("game_bg_768.023f195663c85e8f0322.jpg");
}

我想禁用整个过程,仅针对在 CSS 中链接到的图像,我不想为整个应用禁用随机哈希生成。

这背后的原因 - 我在游戏开始前预加载 assets/app/game_bg_768.jpg,但由于在编译的 css 中指定了不同的 url,在游戏过程中会发出另一个请求加载 game_bg_768.023f195663c85e8f0322.jpg

另一个原因是,我希望我的图像保留在我的 Assets 文件夹中,我不希望它们被复制到已编译应用程序的根文件夹中。

最佳答案

您可以使用绝对 URL 来避免它。

.bg-game {
  background-image: url("/assets/app/game_bg_768.jpg");
}

但是,在您这样做之后,编译器将不再检查图像是否存在于 assets 目录中。

此外,如果您将应用程序部署到域的子目录,浏览器将在 /assets 而不是 /subdirectory/assets 中查找 Assets 。使用 base-hrefdeploy-url 无济于事。

关于javascript - Angular 2 避免编译 CSS 中定义的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42881306/

相关文章:

html - 表格有序列表

html - CSS Div 布局拉伸(stretch)以适应宽度和高度

javascript - JS 滚动条滚动不流畅

javascript - 基于传入参数的计算器函数

javascript - 循环依赖 Super 表达式必须为 null 或函数

php - 使用 PHP 仅显示属于特定数据的数据

css - 是否可以使用 CSS 设置按百分比设置的边距的最小值?

css - 固定高度 div 内 max-height div 内的最大高度图像

JavaScript - 从加载多个链接的 For 循环调用 'onClick' 函数

javascript - 为 "IF"编写具有多个选项的 Jquery If 语句的更短方法