【问题标题】:Yii2 Assets: How to use image asset inside CSS file?Yii2 资产:如何在 CSS 文件中使用图像资产?
【发布时间】:2017-03-28 04:18:52
【问题描述】:

我想创建一个包含AssetBundle 的扩展,它提供了一个简单的静态 CSS 文件。在那个静态 CSS 文件中,我想使用一个图像文件,它也是扩展的一部分。

如何知道图像文件的 URL,以便在 CSS 文件中使用它?

如果我将图像文件注册为资产,它将获得一个我们无法预测的随机 URL!所以不可能做这样的事情:

.some-selector { background: url('/assets/?????/image.jpg'); }

那么,如何做到这一点呢?


为了进一步说明,以下是此类扩展的示例文件夹结构:

  • extension/Widget.php - 一些注册我们 AssetBundle 的小部件
  • extension/AssetBundle.php - 注册 css 的资产包
  • extension/assets/css/style.css - CSS
  • extension/assets/images/image.jpg - 我们要在 style.css 中使用的图像

【问题讨论】:

  • 您的预期结果是什么?
  • @LIJINSAMUEL 拥有一个纯静态 CSS 文件,该文件使用扩展程序提供的图像。
  • 资产文件夹中的图片?
  • .some-selector { 背景: url('assets/image.jpg'); }
  • @LIJINSAMUEL 不,资产位于扩展程序的 vendor 文件夹中,因此它们不会位于应用程序的 assets 文件夹中。

标签: css yii2 assets yii2-extension yii2-module


【解决方案1】:

在这种情况下,我建议在资产定义中也包含一个新的 css 文件。在这种情况下,图像和 css 文件将位于 assets 文件夹中,您可以指定相对路径,而不是绝对路径。 例如 /assets/a4dc56/image.jpg

/assets/a4dc56/style.css 包含以下内容:

.some-selector {
    background: url('image.jpg');
}

【讨论】:

  • 太棒了。我知道必须有一个明显的解决方案。我最终通过相对路径包含图像:background: url('../images/image.jpg');
  • 如何使用AssetManager 就像:$bundle = AppAsset::register($this); 然后:<img src="<?= $bundle->baseUrl.'/logo.png' ?>" />
猜你喜欢
  • 2016-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-16
  • 1970-01-01
  • 1970-01-01
  • 2021-08-05
  • 1970-01-01
相关资源
最近更新 更多