我正在试图弄清楚如何为我的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;
}
答案 0 :(得分:3)
我认为你不能用css做到这一点。即使使用scss,您必须先将其编译为纯css,然后才能使用它,这样您就无法动态更改它。但是你可以省略css中的背景图像然后再做
<div class="container" style="background: url(<%= @my_computed_image_path %>)">
</div>
然后你需要做的就是在控制器中以某种before_filter设置@my_computed_image_path。
答案 1 :(得分: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%>">
答案 2 :(得分:0)
您可以创建 my_styles.scss.erb 文件并设置如下变量:
$body-background-color: <%= @page.body_background_color %>
然后你可以在你的scss文件中使用它。