Pug / Jade中的IMG标签 - 错误re:嵌套内容

时间:2016-06-11 14:33:13

标签: pug pugjs

我正在用Pug构建一个组件,并继续使用img元素出错。这里是相关代码(CSS类是Tachyons'):

.fl.w-100.w-75-ns.tc.pa3.pb4.right-col
.f1 COLUMN TWO
  .br2.ba.dark-gray.b--black-10.mv4.w-100.w-50-m.w-25-l.mw5.center
    img.db.w-100.br2.br--top(src='assets/img/img.svg')
      .pa2.ph3-ns.pb3-ns
        .dt.w-100.mt1
          .dtc
            h1.f5.f4-ns.mv0 TITLE
          .dtc.tr
            h2.f5.mv0 PRICE
        p.f6.lh-copy.measure.mt2.mid-gray DESCRIPTION GOES HERE

当我尝试编译时,我收到以下错误:

events.js: 160
      throw er; // Unhandled 'error' event
      ^
Error: /$workdir/$proj_7/_pugfiles/_03.pug:8
img is a self closing element: <img/> but contains nested content.

我无法解决这个问题。我想也许svg有问题,但那不是。我想也许它要求alt属性,但那不是它。也许它是缩进,但我也没有运气摆弄它。有什么想法吗?

2 个答案:

答案 0 :(得分:3)

图片元素里面不能包含其他HTML。这就是问题所在。

所以当你有

img.db.w-100.br2.br--top(src='assets/img/img.svg')
    .pa2.ph3-ns.pb3-ns
帕格(前玉)将解释像

<img class="db w-100 br2 br--top" src="assets/img/img.svg">
    <div class="pa2 ph3-ns pb3-ns">
    ...
</img>

那是无效的HTML。所以帕格不这样做,而是给你一个错误。

我不知道你想要HTML的样子,但是我的例子中的那两个元素应该是兄弟姐妹吗? (即在同一水平)像这样:

.fl.w-100.w-75-ns.tc.pa3.pb4.right-col
.f1 COLUMN TWO
  .br2.ba.dark-gray.b--black-10.mv4.w-100.w-50-m.w-25-l.mw5.center
    img.db.w-100.br2.br--top(src='assets/img/img.svg')
    .pa2.ph3-ns.pb3-ns
      .dt.w-100.mt1
        .dtc
          h1.f5.f4-ns.mv0 TITLE
        .dtc.tr
          h2.f5.mv0 PRICE
      p.f6.lh-copy.measure.mt2.mid-gray

答案 1 :(得分:-1)

img.db.w-100.br2.br--top(src='assets/img/img.svg')
  .pa2.ph3-ns.pb3-ns
     .dt.w-100.mt1

...

不正确。 这样做:

img.db.w-100.br2.br--top(src='assets/img/img.svg')
.pa2.ph3-ns.pb3-ns
  .dt.w-100.mt1

请参阅第2行代码中的diff Pug / Jade通过缩进制作标签。 tag没有一对,并且不应该比itseltf

更低的边缘