Чи потрібні нам ще кінці рисочки в HTML5?


122

Чи потрібен нам у HTML5 кінець косої риски, як у XHTML?

<img src="some_image.png" />

validator.w3.org не скаржився, якщо я його відкинув, навіть не попереджуючи. Але деякі інтернет-документи, схоже, вказують на те, що кінець нахилу все ще потрібен для тегів, таких як img, link, meta, br тощо.


6
Все-таки ? Будь-яка версія HTML вимагала закриття всіх тегів?
Гейб

9
@Gabe XHTML 1.0 Суворі потреби в ньому. Я маю на увазі, що веб-сторінки завантажуватимуться нормально, але це вважається недійсним.
CaptSaltyJack

3
Так, але те, що X не просто там, тому що X крутий, між HTML і XHTML є досить розрив.

1
@Capt: Ви маєте рацію, але це має бути проблемою лише у тому випадку, якщо у вашому документі вказано XHTML.
Гейб

Відповіді:


80

img теги - це елементи Void, тому їм не потрібен кінцевий тег.

Пустота елементів, база, br, col, команда, embed, hr, img, input, keygen, посилання, мета, парам, джерело, трек, wbr

...

Пустотні елементи мають лише початковий тег; кінцеві теги не повинні бути вказані для недійсних елементів.

W3C | WHATWG

При цьому, це не суворий аналіз в HTML5, тому він не принесе великої шкоди.


Цікаво, адже мій редактор (Комодо) відступає, якщо я набираю '<img src = "x">' і натискаю клавішу Enter. Він очікує, що косої риски в режимі HTML5, і я хотів переконатися, що це правильна поведінка.
CaptSaltyJack

5
Це HTML, а не XHTML, тому його не потрібно. На щастя, парсери все ще добре розуміють кінцеві нахили в стилі XHTML просто чудово, тому не залишаючи шкоди залишати його там. Значить простіше перетворити назад у XHTML, якщо це необхідно з будь-якої причини.
Nightfirecat

4
@FreeRadical: Косою косою рисою необов’язково для елемента "void", але кінцевий тег був би недійсним.
Ри-

26
Хоча питання стосується кінцевої косої риси (наприклад <br/), ця відповідь стосується лише кінцевих тегів (наприклад <br></br>).
Безкоштовний радикальний

12
@FreeRadical правильно. Ця відповідь є технічно невірно, тому що він плутає an ending slashз an end tag, і , таким чином , неправильно розуміє специфікацію абзаци , які він цитує. Це призводить до плутанини @ YannisDran. @minitech правильно визначає, що є правдою.
ToolmakerSteve

94

У HTML 5 заключна коса риса є необов’язковою для таких елементів void img(я додаю це тому, що прийнята в даний час відповідь говорить лише: "кінцеві теги не повинні бути вказані для недійсних елементів", і не стосується косої косої риски в недійсних елементах).

Посилаючись на http://www.w3.org/TR/html5/syntax.html#start-tags (номер 6):

Тоді, якщо елемент є одним з недійсних елементів або якщо елемент є стороннім елементом, то може бути один символ "/" (U + 002F). Цей символ не впливає на недійсні елементи, але на сторонні елементи він позначає стартовий тег як самозакриваючись.


Це не предмет HTML5. Насправді, у попередніх версіях HTML <br/>або <img ... />були помилки.
jj

@jj Я цитую документи HTML5, тому я не розумію, чому не думаю, що це не HTML5. І справді, в інших версіях таке нарізання було помилками.
Безкоштовний радикальний

Звичайно, я мав на увазі сказати, "чи все-таки нам потрібні кінці косої риски в HTML5" - це неправильне питання. Можливо, я колись пишу повну відповідь з деякими історичними посиланнями. IIRC це було важке рішення для Ian Hickson (редактор HTML), щоб дозволити сліші косої риски в HTML5.
jj

2

Ні. HTML ніколи цього не вимагав, навіть раніше HTML5. Якщо ви плануєте використовувати XHTML з функціями HTML, то так, це необхідно.


1
XHTML - це не те саме, що HTML5, правда? Якщо мій DOCTYPE - це просто "html", мені не потрібні кінці косої риски, правильно?
CaptSaltyJack

@CaptSaltyJack: Правильно.
Ри-

1
@CaptSaltyJack - HTML5 охоплює як звичайний HTML, так і XHTML. XHTML вимагає закриття всіх елементів, але для веб-переглядачів доктіп не впливає на ситуацію. Більш повне пояснення див stackoverflow.com/questions/2662508 / ...
Alohci


1

Кінцева коса риса для недійсних елементів не є обов'язковою.

Обидва дійсні HTML5:

<img src="some_image.png" />

і

<img src="some_image.png">

Недійсними елементами є:

  • area
  • base
  • br
  • col
  • embed
  • hr
  • img 👍
  • input
  • link
  • meta
  • param
  • source
  • track
  • wbr

Крім цікавого:

Недійсні елементи не можуть містити вмісту (оскільки немає кінцевого тегу, між початковим і кінцевим тегом не можна розміщувати вміст)

Детальніше на сайті: https://html.spec.whatwg.org/multipage/syntax.html#elements-2


Дивіться також питання SO тут:
Самозакриваються теги (елементи недійсних) у HTML5

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.