在 Ruby on Rails 上的 HAML 中,如何使用 :sass 过滤器?

发布于 2024-09-05 00:18:09 字数 614 浏览 4 评论 0原文

如果在 Ruby on Rails 上使用 HAML,则

:sass
  #someDiv
    border: 3px dashed orange

它们周围不会有任何

然后

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

不会启动 :sass 过滤器,但

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

会启动 :sass 过滤器,但它位于 之外代码>标签。那么如何使用:sass过滤器呢?我们可以手动将

If using HAML on Ruby on Rails, then

:sass
  #someDiv
    border: 3px dashed orange

won't have any <style> tag around them.

and then

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

won't kick on the :sass filter, but

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

will kick on the :sass filter, but it is outside of the <style> tag. So how can the :sass filter be used? We can manually wrap <style> around it, but it is not common use that we want to generate css from sass but not inside <style> tag in an HAML file.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

风和你 2024-09-12 00:18:09

与您的问题相关的文档位于 haml-lang.com 的此处以及更详细的解释位于 sass-lang.com

我相信您缺少的是 sass 不应该在您的 haml 文件中使用。它们应该放置在 public/stylesheets/sass 中,扩展名为 .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 谷歌小组的原始回复。

The documentation related to your question is here at haml-lang.com and a more detailed explanation over at sass-lang.com.

I believe what you are missing is that sass should not be used in your haml files. They should be placed in public/stylesheets/sass with a .sass extension. They will be compiled into a .css file in public/stylesheets, which you then link into your layout.

From the sas-lang.com link:

For instance, public/stylesheets/sass/main.scss would be compiled to public/stylesheets/main.css.

You would then use the stylesheet_link_tag helper (or link the stylesheet manually):

<%= style_sheet_link_tag 'main' %>

If you really need to use sass within haml, here is the answer. You can not nest filters in haml. You apparently need to do something like this:

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

I believe this was the original response from the haml google groups.

你穿错了嫁妆 2024-09-12 00:18:09

自 4.0.0 起

:sass 过滤器现在将其输出包装在样式标记中,新的 :less:scss 过滤器也是如此。

4.0.0之前,只需将其包裹在 %style 中即可:

%style
  :sass
    // so sassy! ;)

Since 4.0.0,

The :sass filter now wraps its output in a style tag, as do the new :less and :scss filters.

Before 4.0.0, just wrap it in %style:

%style
  :sass
    // so sassy! ;)
如果没有 2024-09-12 00:18:09

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

下面的示例定义了一个新的 ':csss' 过滤器。

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

You can write a custom filter to generate style tag also.

The example below defines a new ':csass' filter.

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

So you can do it like this :)

:csass
  #someDiv
    border: 3px dashed orange
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文