【问题标题】:unable to get a background image to load with css无法使用 css 加载背景图像
【发布时间】:2015-10-29 07:36:33
【问题描述】:

这是一个令人沮丧的..我试图通过 CSS 显示 3 个图像并且只能让 1 个工作(这让我很困惑 b/c 我对所有 3 个使用相同的方法.. )。我也在使用 Rails,它可能会或可能不会产生某种路由差异。这是我得到的:

views/audioplayer/show.html.erb:

footer_lodyas.png 不起作用..

<style type="text/css">
  html, body { margin: 0; padding: 0; }
  body { padding: 260px; background: #f2f2f2 url(footer_lodyas.png) no-repeat top center; }
  .audio-player { margin: 0 auto;}
</style>

app/assets/stylesheets/audioplayer.css.scss:

play-pause.png 有效工作

mute-unmute.png 不起作用工作

.mejs-controls .mejs-play button,
.mejs-controls .mejs-pause button {
  width: 21px;
  height: 21px;
  top: 35px;
  left: 135px;
  background: transparent url(play-pause.png) 0 0;
}

.mejs-controls .mejs-mute button,
.mejs-controls .mejs-unmute button {
  width: 14px;
  height: 12px;
  top: 70px;
  left: 140px;
  background: transparent url(mute-umute.png) 0 0;
}

所有这些图像都位于app/assets/images/ 目录中。服务器日志给了我以下错误:

ActionController::RoutingError (No route matches [GET] "/footer_lodyas.png"):

和

ActionController::RoutingError (No route matches [GET] "/assets/mute-umute.png"):

如果我的 play-pause.png 图像渲染正常,为什么会发生这种情况?提前致谢。

【问题讨论】:

  • 使用asset-url 而不仅仅是url。
  • 也许你需要指定完整路径。 "app/assets/images/footer_lodyas.png") 或 "/assets/images/footer_lodyas.png")
  • 尝试把图片的名字 mute-unmute.png 改成 mute_unmute.png

标签: html css ruby-on-rails


【解决方案1】:

资产网址

您需要使用asset-url:

background: transparent asset-url("mute-umute.png") 0 0;

原因是每当您在管道中使用资产时,Rails 都希望在某个时候预编译它们。预编译过程fingerprints新资产(预编译的资产放入public/assets文件夹)。

在生产中,您希望将图像命名为 mute-umute-09239923492394923492349.png。

如果您对这些资产调用 url,它们根本不会加载。您必须使用 asset-url 助手将直接 URL(包括任何指纹文件名)拉到视图中。


play-pause.png 图像渲染良好

可能的原因是这个文件没有预编译,或者你把它放在 Rails 能够找到的某个地方。

在不了解您的服务器设置的情况下,我只能推测它。


SASS

最后,个人建议使用sass - 这是scss 的更好版本(您已经在使用):

#app/assets/stylesheets/audioplayer.sass
.mejs-controls 
   .mejs-play button,
   .mejs-pause button 
     width: 21px
     height: 21px
     top: 35px
     left: 135px
     background: transparent asset-url("play-pause.png") 0 0

   .mejs-mute button,
   .mejs-unmute button 
     width: 14px
     height: 12px
     top: 70px
     left: 140px
     background: transparent asset-url("mute-umute.png") 0 0

【讨论】:

  • 我从来没有真正使用过scss,我自己作为一个初学者(对 CSS 有很好的了解)直接跳到了sass,因为它看起来要写同样的东西要少得多我还了解到,认为从常规 CSS 过渡到 sass 的人很难克服,这就是为什么创建 scss 是为了更容易慢慢过渡到使用 sass 函数,同时能够编写方式你想写。 - 只有我的 2c 和我 100% 同意该建议,但只有在他/她准备好时才应该这样做 :)
  • 非常感谢!这就是我让事情正常工作所需要的一切。对 Rails 较新,并且仍在习惯它的约定。以前玩过SASS,好像不太难学。
猜你喜欢
  • 1970-01-01
  • 2017-05-01
  • 2011-11-03
  • 2014-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多