代码之家  ›  专栏  ›  技术社区  ›  nonopolarity

在RubyonRails中,如何使用:sass过滤器?

  •  7
  • nonopolarity  · 技术社区  · 14 年前

    如果在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
    

    将踢在 :萨斯 过滤,但它在 <风格& GT; 标签。那么如何才能 :萨斯 是否使用过滤器?我们可以手动包装 <风格& GT; 在它周围,但是我们不希望从sass中生成css,而希望从sass内部生成css是不常见的。 <风格& GT; 在HAML文件中标记。

    3 回复  |  直到 9 年前
        1
  •  12
  •   Community rohancragg    7 年前

    与您的问题相关的文档是 here 在haml-lang.com和更详细的解释 sass-lang.com .

    我相信你缺少的是SASS不应该在你的HAML文件中使用。它们应该放在带有.sass扩展名的public/stylesheets/sass中。它们将被编译成公共/样式表中的.css文件,然后链接到布局中。

    从sas-lang.com链接:

    例如,public/stylesheets/sass/main.scss将编译为public/stylesheets/main.css。

    然后使用 stylesheet_link_tag 帮助程序(或手动链接样式表):

    <%= style_sheet_link_tag 'main' %>
    

    如果你真的需要在哈姆里使用sass, here 就是答案。您不能在HAML中嵌套过滤器。你显然需要这样做:

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

    我相信 this 是哈姆谷歌集团的最初回应。

        2
  •  10
  •   sam    9 年前

    Since 4.0.0 ,

    这个 :sass 过滤器现在将其输出包装在一个样式标记中,与新的一样 :less :scss 过滤器。

    在4.0.0之前,把它包起来 %style :

    %style
      :sass
        // so sassy! ;)
    
        3
  •  2
  •   kaorukobo    13 年前

    您也可以编写自定义过滤器来生成样式标记。

    下面的示例定义了一个新的“: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