簡體   English   中英

在Ruby on Rails的HAML中,如何使用:sass過濾器?

[英]In HAML on Ruby on Rails, how to use the :sass filter?

如果在Ruby on Rails上使用HAML,那么

:sass
  #someDiv
    border: 3px dashed orange

周圍不會有任何<style>標記。

然后

:css
  :sass
    #someDiv
      border: 3px dashed orange

不會踢:sass過濾器,但是

:css
:sass
  #someDiv
    border: 3px dashed orange

將啟用:sass過濾器,但它位於<style>標記之外。 那么如何使用:sass過濾器? 我們可以在它周圍手動包裝<style> ,但是我們想要從sass生成css而不是在HAML文件中的<style>標記內部生成css並不常見。

與此問題相關的文檔是在這里 ,在haml-lang.com和更詳細的解釋了sass-lang.com

我相信你缺少的是不應該在你的haml文件中使用sass。 它們應放在帶有.sass擴展名的public / stylesheets / sass中。 它們將被編譯為public / stylesheets中的.css文件,然后將其鏈接到您的布局中。

來自sas-lang.com鏈接:

例如,public / stylesheets / sass / main.scss將被編譯為public / stylesheets / main.css。

然后,您將使用stylesheet_link_tag幫助程序(或手動鏈接樣式表):

<%= style_sheet_link_tag 'main' %>

如果你真的需要在haml中使用sass, 就是答案。 你不能在haml中嵌套過濾器。 你顯然需要做這樣的事情:

%style(type="text/css") 
  :sass 
    div 
      color: red 

我相信是haml google小組的原始回復。

從4.0.0開始

:sass過濾器現在將其輸出包裝在樣式標記中,新的:less:scss過濾器也是如此。

在4.0.0之前,只需將其包裝為%style

%style
  :sass
    // so sassy! ;)

您也可以編寫自定義過濾器來生成樣式標記。

下面的示例定義了一個新的':csass'過濾器。

require "haml/filters"
module Haml::Filters::Csass
  include Haml::Filters::Base
  include Haml::Filters::Sass
  lazy_require 'sass/plugin'
  def render(text)
    src = super
    "<style>#{src}</style>"
  end
end

所以你可以這樣做:)

:csass
  #someDiv
    border: 3px dashed orange

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM