我真的很喜欢 Sass mixins 如何让您使用可自定义的包装器来包装代码块:
=container($class)
.#{$class}.container
.container-inner
@content
+container(header)
foo: bar
+container(main)
baz: quux
生成的 CSS:
.header.container .container-inner {
foo: bar;
}
.main.container .container-inner {
baz: quux;
}
我正在尝试对 Padrino/Middleman 部分做同样的事情。问题是部分不接受内容块(为什么?)。:(
我试图通过将内容块传递给 来解决它content_for
,但随后使用的content_for
将附加到内容而不是替换它:
部分partials/container.haml
:
.container
= yield_content :container
页面index.html.haml
:
- content_for :container do
Foo
= partial('partials/container')
- content_for :container do
Bar
= partial('partials/container')
生成的 HTML:
<div class="container">
Foo
</div>
<div class="container">
Foo
Bar
</div>
如您所见,它复制了我的内容,这是绝对不可接受的。此外,这种方式不允许提供用于自定义包装 HTML 的参数。
所以我想创建一个助手。它将启用以下使用方式,这种方式比内容块更优雅content_for
,并且还支持将变量传递到内容块:
= partial_with_content_block('partials/container', class: 'header') do
Foo
= partial_with_content_block('partials/container', class: 'main') do
Bar
我如何实现这样的助手?