【问题标题】:How to set a different background image for each page in Rails 3 site?如何为 Rails 3 站点中的每个页面设置不同的背景图像?
【发布时间】:2012-06-21 18:26:18
【问题描述】:

我试图弄清楚如何为我的 Rails 3 站点的每个页面设置不同的背景图像。如何在不必为每个页面重复我的 css 文件中的内容的情况下完成此操作?

application.html.erb

<!DOCTYPE html>
<html>
<head>
  <title>Site title</title>
  <%= stylesheet_link_tag    "application", :media => "all" %>
  <%= javascript_include_tag "application" %>
  <%= csrf_meta_tags %>
</head>
<body>
<div class="container">
<div class="content">
    <%= yield %>
</div>
<%= render 'layouts/footer' %> 
</div>
</body>
</html>

pages.css.scss

.container {
    width: 800px;
    height: 640px;
    position: absolute;
    left: 50%;
    top: 50%;
    margin-top: -320px;
    margin-left: -400px;
    background-image: url(amber1.jpg); 
    background-repeat: no-repeat; 
    background-color: black;
    font-family: times new roman, serif;
    text-align: center;
    }

【问题讨论】:

    标签: css ruby-on-rails ruby-on-rails-3 background-image


    【解决方案1】:

    我认为你不能使用 css 做到这一点。即使使用 scss,您也必须先将其编译为纯 css,然后才能使用它,因此您无法即时更改它。但是你可以从css中省略背景图片然后做

    <div class="container" style="background: url(<%= @my_computed_image_path %>)">
    </div>
    

    然后您所要做的就是在控制器中的某种 before_filter 中设置 @my_computed_image_path。

    【讨论】:

      【解决方案2】:

      您可以像这样直接在 html 中设置 background-image 属性:

      <!DOCTYPE html>
      <html>
      <head>
        <title>Site title</title>
        <%= stylesheet_link_tag    "application", :media => "all" %>
        <%= javascript_include_tag "application" %>
        <%= csrf_meta_tags %>
      </head>
      <body>
      <div class="container" style="background-image: url(<%=@page.background_image%>); ">
      <div class="content">
          <%= yield %>
      </div>
      <%= render 'layouts/footer' %> 
      </div>
      </body>
      </html>
      

      您可以直接从@page 变量或您想要的方式设置背景图像。

      如果您愿意,还可以使用如下样式表为每个页面设置不同的类:

      .page_one{background-image: url(your_first_image.jpg)}
      .page_two{background-image: url(your_second_image.jpg)}
      .
      .
      

      在你的 html 中:

      <div class="container <%=dynamically set here the class from you @page%>">
      

      【讨论】:

        【解决方案3】:

        您可以创建一个 my_styles.scss.erb 文件并设置如下变量:

        $body-background-color: <%= @page.body_background_color %>
        

        然后你可以在你的 scss 文件中使用它。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-11-12
          • 1970-01-01
          相关资源
          最近更新 更多