Я не смог найти точного ответа на вопрос, являются ли пользовательские теги действительными в HTML5, например:
<greeting>Hello!</greeting>
Я ничего не нашел в спецификации так или иначе:
http://dev.w3.org/html5/spec/single-page.html
А пользовательские теги, похоже, не проверяются с помощью валидатора W3C.
Ответы:
Спецификация пользовательских элементов доступна в Chrome и Opera и становится доступной в других браузерах . Он предоставляет средства для регистрации пользовательских элементов формальным образом.
Пользовательские элементы являются частью более широкой спецификации W3, называемой веб-компонентами , наряду с шаблонами, импортом HTML и Shadow DOM.
Однако из этой превосходной статьи о разработчиках Google о пользовательских элементах v1:
Некоторые ресурсы
источник
Это возможно и разрешено:
http://www.w3.org/TR/html5/infrastructure.html#extensibility-0
Но, если вы намереваетесь добавить интерактивность, вам нужно сделать ваш документ недействительным (но все же полностью функциональным), чтобы соответствовать IE 7 и 8.
См. Http://blog.svidgen.com/2012/10/building-custom-xhtml5-tags.html (мой блог)
источник
NB. Приведенный ниже ответ был верным, когда он был написан в 2012 году. С тех пор все немного изменилось. Спецификация HTML теперь определяет два типа пользовательских элементов - «автономные пользовательские элементы» и «настраиваемые встроенные элементы». Первый может идти везде, где ожидается фразовое содержание; это большинство мест внутри тела, но не, например, дочерние элементы элементов ul или ol или элементов таблицы, отличных от элементов td, th или caption. Последние могут идти туда, куда может пойти элемент, который они расширяют.
Это на самом деле является следствием накопления контентной модели элементов.
Например, корневой элемент должен быть
html
элементом.html
Элемент может содержать только головной элемент , за которым следует элемент тела.body
Элемент может содержать только содержимое потока , где содержание потока определяются как элементы: a, abbr, адрес, область (если это потомок элемента карты), статья, в стороне, аудио, b, bdi, bdo, blockquote, br, кнопка, холст, ссылаться, код, команда, список данных, del, подробности , dfn, div dl, em, embed, fieldset, рисунок, нижний колонтитул, форма, h1, h2, h3, h4, h5, h6, заголовок, hgroup, hr, i, iframe, img, ввод, ins, kbd, keygen, метка, карта, метка, математика, меню, метр, навигация, noscript, объект, ol, output, p, pre, progress, q, ruby, s, samp, script, section, select, small, span, strong, style ( если атрибут scoped присутствует), sub, sup, svg, table, textarea, time,u, ul, var, видео, wbr и тексти так далее.
Модель контента ни в коем случае не говорит: «Вы можете поместить в нее любые элементы, которые вам нравятся», что было бы необходимо для пользовательских элементов / тегов.
источник
Основные пользовательские элементы и атрибуты
Пользовательские элементы и атрибуты действительны в HTML при условии, что:
x-
data-
Например,
<x-foo data-bar="gaz"/>
или<br data-bar="gaz"/>
.Общая конвенция для элементов
x-foo
;x-vendor-feature
Рекомендовано.Это справляется с большинством случаев, поскольку, возможно, редкость тому, что разработчику потребуется вся мощь, связанная с регистрацией их элементов. Синтаксис также адекватно действителен и стабилен. Более подробное объяснение ниже.
Расширенные пользовательские элементы и атрибуты
По состоянию на 2014 год появился новый, значительно улучшенный способ регистрации пользовательских элементов и атрибутов. Он не будет работать в старых браузерах, таких как IE 9 или Chrome / Firefox 20. Но он позволяет вам использовать стандартный
HTMLElement
интерфейс, предотвращать коллизии, использовать неназванныеx-*
и неназванныеdata-*
имена и определять пользовательское поведение и синтаксис, которые браузер должен соблюдать , Это требует немного причудливого JavaScript, как подробно описано в ссылках ниже.HTML5 Rocks - Определение новых элементов в HTML
WebComponents.org - Введение в пользовательские элементы
W3C - Веб-компоненты: пользовательские элементы
Относительно обоснованности основного синтаксиса
Использование
data-*
пользовательских имен атрибутов в течение некоторого времени было вполне допустимо и даже работает со старыми версиями HTML.W3C - HTML5: расширяемость
Что касается пользовательских (незарегистрированных) имен элементов, W3C настоятельно рекомендует против них и считает их несоответствующими. Но браузеры обязаны поддерживать их, и
x-*
идентификаторы не будут конфликтовать с будущими спецификациями HTML, аx-vendor-feature
идентификаторы не будут конфликтовать с другими разработчиками. Пользовательский DTD может использоваться для работы с любыми требовательными браузерами.Вот некоторые соответствующие выдержки из официальных документов:
W3C - HTML5: соответствие документов
WhatWG - Стандарт HTML: элементы DOM
источник
Я хотел бы отметить, что слово «действительный» может иметь два разных значения в этом контексте, причем любое из них потенциально может быть действительным.
Следует ли считать HTML-документ с пользовательскими тегами допустимым HTML5? Ответ на это явно "нет". Спецификация указано, какие именно теги допустимы в каких контекстах. Вот почему средство проверки HTML не будет принимать документ с пользовательскими тегами или со стандартными тегами в неправильных местах (например, тег «img» в заголовке).
Будет ли HTML-документ с пользовательскими тегами обрабатываться и отображаться стандартным, четко определенным образом в браузерах? Здесь, возможно, удивительно, ответ «да». Даже если документ технически не будет считаться допустимым HTML5, спецификация HTML5 точно определяет , что именно должны делать браузеры, когда они видят пользовательский тег: короче говоря, пользовательский тег действует примерно как
<span>
- он ничего не значит и ничего не делает с помощью по умолчанию, но он может быть стилизован под HTML и доступен через javascript.источник
Пользовательские элементы HTML - это новый стандарт W3, в который я внес вклад, который позволяет вам объявлять и регистрировать пользовательские элементы с помощью анализатора. Вы можете прочитать спецификацию здесь: Спецификация пользовательских элементов веб-компонентов W3 . Кроме того, Microsoft поддерживает библиотеку (написанную бывшими разработчиками Mozilla), которая называется X-Tag - это делает работу с веб-компонентами еще проще.
источник
dom.webcomponents.enabled
наtrue
.Чтобы дать обновленный ответ, отражающий современные страницы.
Пользовательские теги действительны, если либо,
1) они содержат тире
2) Они встроены в XML
Это предполагает, что вы используете тип документа HTML5
<!doctype html>
Учитывая эти простые ограничения, теперь имеет смысл сделать все возможное, чтобы ваша HTML-разметка была действительной (пожалуйста, прекратите закрывать такие теги, как
<img>
и<hr>
, это глупо и неправильно, если вы не используете тип документа XHTML, который вам, вероятно, не нужен).Учитывая, что HTML5 четко определяет правила синтаксического анализа, совместимый браузер сможет обрабатывать любые теги, которые вы к нему добавляете, даже если они не совсем корректны.
источник
Цитирование из раздела «Расширяемость» спецификации HTML5 :
Поэтому, если вы используете сериализацию XML для HTML5, вы можете сделать что-то вроде этого:
Однако, если вы используете синтаксис HTML, вы гораздо более ограничены в своих действиях.
Но эти инструкции в первую очередь направлены на производителей браузеров, которые предположительно будут предоставлять визуальные стили и функциональность для любых пользовательских элементов, которые они выберут для создания.
Для автора, хотя и может быть законно встраивать пользовательский элемент в страницу (по крайней мере, в сериализацию XML), вы не получите ничего, кроме узла в DOM. Если вы хотите, чтобы ваш пользовательский элемент действительно что-то делал или отображался каким-то особым образом, вам следует обратить внимание на спецификацию пользовательских элементов .
Для более подробного ознакомления с предметом ознакомьтесь с разделом «Введение в веб-компоненты» , в котором также содержится информация о Shadow DOM и другие соответствующие спецификации. Эти спецификации все еще находятся в стадии разработки - вы можете увидеть текущий статус здесь - но они активно развиваются.
Например, простое определение
greeting
элемента может выглядеть примерно так:Это говорит браузеру отображать содержимое элемента в кавычках с префиксом текста «Саймон говорит:», который оформлен в сером цвете. Как правило, пользовательское определение элемента, подобное этому, будет храниться в отдельном html-файле, который вы импортируете со ссылкой.
Хотя вы также можете включить его, если хотите.
Я создал рабочую демонстрацию приведенного выше определения, используя библиотеку Polymer Polyfill, которую вы можете увидеть здесь . Обратите внимание, что здесь используется старая версия библиотеки Polymer - более поздние версии работают совсем по-другому. Однако, так как спецификация все еще находится в разработке, я бы не рекомендовал использовать ее в производственном коде.
источник
просто используйте все, что вы хотите, без декларации DOM
добавьте свой собственный стиль (display: block), и он будет работать с любым современным браузером
источник
data-*
атрибуты действительны в HTML5 и даже в HTML4 во всех веб-браузерах, которые их уважают. Добавление новых тегов технически нормально, но не рекомендуется только потому, что:Я использую пользовательские теги только в тех местах , что Google не заботится, для ecample в IFRAME игрового движка, я сделал
<log>
тег , который содержал<msg>
,<error>
и<warning>
- но через JavaScript только. И это было полностью в силе, по словам валидатора. Он даже работает в Internet Explorer со своим стилем! ;]источник
<inventory>
,<item type="potion" sprite="2">
- так это лучше назвать SGML + CSS , а не HTML, несмотря на это HTML элементы , которые имеют определение работать как есть - кнопки, списки, ...Пользовательские теги недопустимы в HTML5. Но в настоящее время браузеры поддерживают их анализ, а также вы можете использовать их с помощью CSS. Так что если вы хотите использовать пользовательские теги для текущих браузеров, тогда вы можете. Но поддержка может быть отменена, когда браузеры реализуют стандарты W3C строго для анализа содержимого HTML.
источник
<center>
и<marquee>
?Я знаю, что этот вопрос старый, но я изучал эту тему, и хотя некоторые из приведенных выше утверждений верны, они не являются единственным способом создания пользовательских элементов. Например:
будет работать отлично (пока в новых версиях Google Chrome, IE, FireFox и мобильных Safari). Все, что вам нужно, это просто буквенный символ (az, AZ), чтобы начать тег, а затем вы можете использовать любой из не буквенных символов. Если в CSS вы должны использовать «\» (обратную косую черту), чтобы найти элемент, например, потребуется Query \ ^ {...}. Но в JS вы просто называете это так, как видите. Я надеюсь, что это поможет. См пример здесь
-Минк CBOS
источник