【问题标题】:Mixin nested in paragraphMixin 嵌套在段落中
【发布时间】:2021-02-22 14:24:21
【问题描述】:

我目前正在尝试将一个图形放入一个文本块中,但是我遇到了以下问题:

mixin figure
  figure(style="float:right" width="50%")
    img(src="image.jpeg" alt="Alttext")
    figcaption Caption

block content
  div(class="content-width")
    h1 Heading
    p.
      #[+figure]
      Lorem ipsum dolor sit amet, 

评估为

<div class="content-width">
<h1>Heading</h1>
<p></p>
<figure>[...]</figure>
Lorem ipsum dolor sit amet,

我本来希望得到以下结果:

<div class="content-width">
<h1>Heading</h1>
<p>
<figure>[...]</figure>
Lorem ipsum dolor sit amet,
</p>

这种行为是否正确并且我使用 Pug 错误?还是我偶然发现了一个错误?

【问题讨论】:

  • 如果您将代码粘贴到pugjs.org 的可编辑文本区域之一,您应该会得到预期的(正确)结果。或者至少我得到了预期的结果。您使用的是什么版本的 Pug?

标签: pug


【解决方案1】:

编辑:

Figure 元素是块级元素,不允许成为 HTML 中段落元素的子元素。您看到的输出可能是浏览器试图通过在遇到图形元素时关闭未闭合的段落标签来纠正无效的 HTML。


上一个答案:

#[] 语法仅适用于 tag interpolation,不适用于 mixins。

改为使用dot block 语法 mixin 之后,像这样——

block content
  div(class="content-width")
    h1 Heading
    p
      +figure
      .
        Lorem ipsum dolor sit amet, 

——或使用piped text 语法,如下所示:

block content
  div(class="content-width")
    h1 Heading
    p
      +figure
      | Lorem ipsum dolor sit amet, 

【讨论】:

  • 您的建议似乎不起作用,问题仍然存在。我创建了一个存储库,以便可以重现该问题。 github.com/Paktosan/expresspugtest
  • @Paktosan 啊,我应该仔细看看你使用的元素。我已经修改了答案。
  • 所以我只写了格式错误的HTML,好尴尬。 :) 感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 2021-01-03
  • 1970-01-01
  • 1970-01-01
  • 2017-01-01
  • 2012-11-30
  • 2023-03-16
  • 1970-01-01
相关资源
最近更新 更多