【问题标题】:Different background color for different pages in railsrails中不同页面的不同背景颜色
【发布时间】:2012-01-16 16:13:38
【问题描述】:

所以我使用了一个 application.html.erb 文件,它基本上是我网站中每个页面的布局。但我希望主页具有白色背景,其余页面具有不同的背景。问题是,如果我将整个主页文件包装在一个 div 中,它只会包装“yield”位置,因此它显示为一个带有白色背景的框,位于一个带有灰色背景的较大框内。那么如何更改主页的整个背景并留下其余部分?

谢谢!

【问题讨论】:

    标签: ruby-on-rails css background styling


    【解决方案1】:

    扩展@muffinista 提供的答案: 您可以使用控制器中设置的实例变量来确定何时将“主页”类放在 body 标记上。所以:

    def index
      @home_page = true
      # existing code
    end
    

    在布局中:

    <body class="<%= @home_page ? 'homepage' : ''%>">
     <%= yield %>
    </body>
    

    【讨论】:

    • 首页后面放什么? &lt;body class="&lt;%= @home_page ? 'homepage' : 'background-color: #000'%&gt;"&gt; ?
    • @evan 在答案中,如果它不是主页,则不要在其中放置任何内容(因此是空字符串)。如果您想对所有其他页面使用其他类,则该类可以去那里。你不应该把样式信息放在那里,因为样式应该在样式表中,而且这部分代码是专门用于添加类的。
    • @MrTheWalrus 编辑我已删除的帖子:home 在做什么,为什么black 不作为班级工作? &lt;body class="&lt;%= @home ? 'home' : "black" %&gt;"&gt;
    • @evan home 是一个类。 @home 是一个实例变量。假设“黑色”是一个类,我认为您的代码没有任何问题。也许您应该针对您的具体案例提出一个新问题 - 这似乎超出了评论的范围。
    【解决方案2】:

    考虑在你的主页的 body 标签(或者你的主包装器)上放置一个特殊的类,然后在 CSS 中做。所以你可以在你的主页上有:

    <body class="homepage">
      <p>hi!</p>
    </body>
    

    然后在您的其他页面上:

    <body>
      <p>i am not a homepage!</p>
    </body>
    

    在你的 CSS 中:

    body {
     // some general css
    }
    
    body.homepage {
     // some css for homepage elements
     background-color: #000000;
    }
    

    更新:您可以使用这样的助手让生活更轻松:

    def body_class
      @body_class || ''
    end
    

    然后在您的主页视图中,将这样的内容放在顶部:

    <% @body_class = "homepage" %>
    

    显然,这取决于您应用的具体情况,但对我来说效果很好。

    【讨论】:

    • 问题是,主页没有正文。主页中的所有 HTML 都作为模板 application.html.erb 的输出,该模板只有一个正文...我可以在正文中有正文吗?
    • 如果你想在视图中修改它,你也可以使用content_for在头部添加javascript来改变body的类。 (不修改布局的通用方式修改布局)
    • @NosayrYassin 我刚刚在我的答案中添加了一些细节,说明我是如何做到这一点的——简而言之,有一个助手可以让你更轻松。这通常也是人们设置页面标题等的方式。
    【解决方案3】:

    只是添加到已接受的答案中,如果您需要为多个页面设置不同的背景,将用于查找适当背景的代码移动到部分中是有意义的并增加可读性:

    &lt;body class= &lt;%=render partial: "layouts/background" %&gt; &gt;

    _background.html.erb:

        <%- if @main_page_background OR @stylish_background %>
           "main_page_background"
          <%- elsif @dark_background %>   
            "dark_page_background"
          <%- else %>  
            ""  
        <% end %>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-01
      • 2017-06-21
      • 2021-03-16
      • 1970-01-01
      • 2018-11-18
      相关资源
      最近更新 更多