4

我试图弄清楚如何为我的 Rails 3 站点的每个页面设置不同的背景图像。我怎样才能做到这一点,而不必为每个页面重复我的 css 文件中的内容?

应用程序.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;
    }
4

3 回答 3

3

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

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

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

于 2012-06-21T18:32:14.567 回答
0

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

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

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

于 2012-06-21T23:55:39.253 回答
0

您可以像这样直接在 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%>">
于 2012-06-21T23:04:57.377 回答