IMG-теги в Pug/Jade - ошибка в отношении вложенного содержимого

Я создаю компонент с 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 ответа

Элементы изображения не могут иметь другой 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

Такие теги, как img, meta и link, автоматически закрываются (если вы не используете тип документа XML).

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

См. Diff в коде 2-й строки. Pug/Jade делают теги по вашим отступам. тег не имеет пары, и не должен иметь худших полей больше, чем itseltf

Другие вопросы по тегам