带有资产管道的背景图像

Posted

技术标签:

【中文标题】带有资产管道的背景图像【英文标题】:Background images with asset pipeline 【发布时间】:2013-07-04 22:06:27 【问题描述】:

这应该是一件简单的事情,但由于某种原因它不起作用。

我无法在我的页面上显示背景图片。我将 Rails 3.2 与资产管道一起使用。我正在尝试在与我的 home 控制器相关的页面上显示它。

图片位置为:app/assets/images/dna.jpg

home.css.scss

background: url('/assets/images/dna.jpg');

我还尝试了以下方法:

background: url('dna.jpg');
background: url('/assets/dna.jpg');
background-image: image-url("dna.jpg");
background-image:url(image_path('dna.jpg'));

无论我尝试哪种方法,我都会收到相同的错误:

Sass::SyntaxError at /
Invalid CSS after "background:": expected pseudoclass or pseudoelement, was "   url('/assets/i..."

(在 /Users/sean/Dropbox/bin/rails/assay/app/assets/stylesheets/home.css.scss)

另请参阅此 SO 帖子:Adding a background image in Ruby on Rails 2 in CSS

编辑

参考此帖:sass-rails asset pipeline: generating image paths incorrectly; `url(/images/blah.png)` instead of `url(/assets/blah.png)`

我清除了资产缓存

rake tmp:cache:clear

并且捆绑更新了我的 sass-rails gem。现在是3.2.6。 这些都没有任何区别。

【问题讨论】:

【参考方案1】:

我怀疑你的麻烦有一个非常简单的原因:缩进。在scss 中的大多数情况下,语句之后都没有空格,在您的情况下为background:。在你的 scss 前缀文件中也试试这个:

background: url(dna.jpg);

它总是对我有用。

【讨论】:

【参考方案2】:

我找到了解决方法:将 scss 文件转换为普通的 css 文件。

home.css

body background-image:url('dna.jpg');
      background-size:cover;

现在它工作正常。不过,这似乎不是正确的解决方案。

【讨论】:

我怀疑你的麻烦有一个非常简单的原因:缩进。大多数情况下,在 scss 中,语句后没有空格,在您的情况下为 background:。在您的 scss 前缀文件中也可以试试这个:background: url(dna.jpg);。它总是对我有用。 @Qumara SixOneTour 你是对的。请将其添加为答案,以便我接受。 我很高兴能提供帮助。祝你申请顺利。【参考方案3】:

我遇到了完全相同的问题,这是我在 SCSS 文件中使用 Sass 缩进语法的结果。

更多关于 Sass 和 SCSS 之间差异的信息:http://sass-lang.com/documentation/file.INDENTED_SYNTAX.html

【讨论】:

以上是关于带有资产管道的背景图像的主要内容,如果未能解决你的问题,请参考以下文章

如何使用资产目录作为导航栏背景图片?

带有子域的 Rails 资产管道不检索图像

iPhone X 中的背景图像拉伸

带有黑色背景的 alpha 图像绘制其他白色...?

Rails 3.1 资产管道和缓存

带有资产目录的 iOS 图像切片会创建奇怪的工件