【问题标题】:Turbolinks and css classes applied to html tags应用于 html 标签的 Turbolinks 和 css 类
【发布时间】:2023-04-08 05:25:01
【问题描述】:

我的 HTML 标签定义了类来识别正确的布局。

<html class="one-column">

这成为Turbolinks 的问题,因为它只会刷新bodytitle 标记。

...它使当前页面实例保持活动状态并仅替换头部的正文和标题。

这意味着当我从具有one-column 的页面转换到具有two-column 类的页面时,HTML 类没有改​​变。

我该如何解决这个问题?我无法将类名应用于正文。

【问题讨论】:

    标签: javascript ruby-on-rails turbolinks


    【解决方案1】:

    Tublinks 的全部目的不是每次请求都加载整个 DOM。 html 标记位于 DOM 的顶部,更改其属性(例如 class)意味着它的子级也应该无效。所以它有点超出 Turbolinks 的目的。您可以完全禁用 Turbolinks,正如 here 指出的那样,或者您可以将 class 移动到正文中,这应该可以工作。为什么你实际上不可能把它移到身体上?

    【讨论】:

      【解决方案2】:

      你为什么不change the layout

      您当前的实现不起作用的原因是因为它是一个 hack。 CSS 类样式旨在为单个元素设置样式,而不是整个页面

      如果页面由于某种原因没有&lt;HTML&gt;标签会怎样?您的样式将失效


      布局

      处理此问题的一种可扩展方法是根据您的操作更改布局。以下是我的做法:

      #app/views/layouts/application.html.erb
      <html>
          <!-- Default Styling Here -->
      </html>
      
      #app/views/layouts/action.html.erb
      <html>
          <!-- Other Styling  -->
      </html>
      
      #app/controllers/your_controller.rb
      layout "action", :only => [ :index, :show ]
      

      布局独立于 Turbolink(它们是 HTML),这意味着您可以根据需要多次加载它们

      【讨论】:

      • 我想你误解了我的意思。我已经有不同的布局。您的解决方案不起作用,因为当布局更改时,Trubolinks 不会更新 html 节点,因此类名保持不变。
      • 感谢您的评论!我的解决方案不是以您的示例并将其放入不同的布局中。对 标记进行样式设置并不被认为是好的做法(出于这个原因),因此我建议使用不同的布局为每个标记创建不同的样式结构。这样,您可以动态更改样式,而不会妨碍 turbolinks
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多