7

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手動でラップすることはできますが、HAML ファイルのタグ内では<style>なく、sass から css を生成することは一般的ではありません。<style>

4

3 に答える 3

13

あなたの質問に関連するドキュメントは、 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 グループからの最初の応答だったと思います。

于 2010-06-12T09:47:54.053 に答える
11

4.0.0以降

フィルタは、newフィルタと:sass同様に、出力をスタイルタグでラップするようになりました。:less:scss

4.0.0より前では、次のようにラップするだけです%style

%style
  :sass
    // so sassy! ;)
于 2012-11-02T02:27:51.203 に答える
2

カスタム フィルターを記述してスタイル タグを生成することもできます。

以下の例では、新しい ':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
于 2011-07-23T02:28:13.773 に答える