Теги и атрибуты html5 описание. Используем собственные атрибуты в HTML5. Группировка элементов формы

Атрибуты обеспечивают дополнительную информацию об элементе, при этом они всегда определяются в начальном теге независимо от того парный это тег, либо одиночный.

В HTML существует ряд атрибутов, которые универсальны и могут применяться практически к любым тегам, поэтому входящие в эту группу атрибуты называются глобальными атрибутами .

Глобальные атрибуты будут часто встречаться в примерах этого учебника, предлагаю Вам бегло повторить те атрибуты, которые мы уже рассмотрели и ознакомиться с теми глобальными атрибутами, которые будут рассмотрены в ближайших статьях:

Вопросы и задачи по теме

Перед тем как перейти к изучению следующей темы пройдите практическое задание:


Подсказка: не забудьте определить язык содержимого страницы и элементов, где это требуется. После того как вы выполните упражнение проинспектируйте код страницы, открыв пример в отдельном окне, чтобы убедиться, что вы его выполнили правильно.

Собственные атрибуты считаются одним из наиболее важных дополнений к HTML5, которое может играть главную роль в семантической веб-разработке. В нашем сегодняшнем руководстве мы представим вам практические примеры создания и использования собственных атрибутов данных в HTML5, включая все необходимые javascript-функции.

До появления HTML5 было возможно добавлять собственные атрибуты к элементам HTML и осуществлять к ним доступ посредством javascript, но если вы когда-либо пробовали это реализовать, то наверняка знаете о том, что в этом случае нам придется забыть о валидации кода. HTML5 предлагает нам возможность создавать и использовать собственные атрибуты элементов внутри валидных страниц.

Создание документа HTML5

Если у вас нет готового шаблона, над которым можно было бы поработать, то просто скопируйте предложенный код в HTML-файл:





/*functions here*/





Мы разместим наши элементы с использованием собственных атрибутов в теле документа, а функции javascript помогут нам осуществить к ним доступ, и расположены эти функции будут в головной секции документа.

Создание элемента

Давайте добавим элемент с простеньким контентом, и добавим собственный атрибут вместе с ID для того, чтобы иметь возможность идентифицировать этот элемент в javascript, использованном в демо:


Cotton Shirt

Как видно, собственный атрибут имеет форму «data-*» с именем (или именами) на ваше усмотрение после части «data-». Это единственный валидный способ применения собственных атрибутов в HTML5, так что не забудьте всегда начинать названия элементов с этого указателя, если вам хочется, чтобы страницы были валидными.

Конечно же, детали вашего собственного проекта будут диктовать, окажутся ли собственные атрибуты удобными для вас или нет, а также эти детали помогут вам выдумывать соответствующие имена элементов. Данный пример может быть использован для веб-сайта-магазина с розничной торговлей. Собственные атрибуты позволят вам обрабатывать элементы определенными способами в рамках кода javascript на странице. Например, когда вы используете функции анимационного отображения. Это действительно единственный рекомендуемый способ использования собственных атрибутов, если, конечно, в данной ситуации не существует уже заранее предназначенного стандартного HTML-атрибута.

Добавляем тестовую кнопку

Ваши собственные javascript-функции будут обрабатывать события на ваших страницах, но для наглядного примера добавьте представленную кнопку на страницу:


Кнопка проводит ID элемента в качестве параметра таким образом, чтобы javascript-функция могла обратиться к нему, и осуществить доступ к собственному атрибуту.

Получение атрибута

Самый распространенный способ осуществления доступа к атрибутам в javascript заключается в использовании getAttributes, что мы и сделаем в первую очередь. Добавьте следующую функцию в раздел со скриптами, расположенный в головной секции вашей страницы:

Function getElementAttribute(elemID) {
var theElement = document.getElementById(elemID);
var theAttribute = theElement.getAttribute("data-product-category");
alert(theAttribute);
}
Ради наглядности, мы приводим атрибут в готовность, но ваши собственные скрипты могут выполнять то, что необходимо вам.

Получение набора данных (dataset)

Как альтернативу DOM-методу «getAttributes», вы можете использовать наборы данных (dataset) элемента. Этот подход может быть более эффективным, особенно в тех случаях, когда ваш код повторяется в нескольких атрибутах. Тем не менее, браузерная поддержка данного метода пока еще очень плохая, что также важно учитывать. Данный код выполняет тот же самый процесс:

//var theAttribute = theElement.getAttribute("data-product-category");
var theAttribute = theElement.dataset.productCategory;
С помощью наборов данных вы можете избежать использования аффикса «data-» в начале имени атрибутов при обращении к ним javascript-функций, которые вам по прежнему придется включать в HTML. Учтите что, если имя вашего собственного атрибута имеет в себе дефис (который есть в имени нашего атрибута), то у нас здесь получается горбатый регистр, если доступ осуществляется посредством набора данных «data-product-category» становится «productCategory»).

Другие методы и функции

Мы рассказали вам о том, как создавать атрибуты, но ваши скрипты также могут создавать их или удалять. Следующий код демонстрирует нам процесс настройки атрибутов посредством стандартного javascript-метода и набора данных в качестве альтернативы:

//DOM method
theElement.setAttribute("data-product-category", "sale");

//dataset version
theElement.dataset.productCategory = "sale";
Для того чтобы убрать атрибут, вы также можете использовать либо набор данных, либо DOM-метод:

//DOM method
theElement.removeAttribute("data-product-category");

//dataset version
theElement.dataset.productCategory = null;
Вывод

Внедрение собственных атрибутов в HTML5 – это, с технической точки зрения, не такой уж и сложный процесс, но при этом сама сложность возникает в том, каким образом было бы правильнее их применить в собственных проектах. В конце концов, запомните тот факт, что еще слишком рано полностью переходить на использование наборов данных, и если вы все-таки решите их использовать, то постарайтесь предоставить откат для браузеров, которые не поддерживают данную технологию.

Последнее обновление: 08.04.2016

Прежде чем переходить непосредственно к созданию своих веб-страниц на HTML5, рассмотрим основные строительные блоки, кирпичики, из которых состоит веб-страница.

Документ HTML5, как и любой документ HTML, состоит из элементов, а элементы состоят из тегов. Как правило, элементы имеют открывающий и закрывающий тег, которые заключаются в угловые скобки. Например:

Текст элемента div

Здесь определен элемент div , который имеет открывающий тег и закрывающий тег . Между этими тегами находится содержимое элемента div. В данном случае в качестве содержимого выступает простой текст "Текст элемента div".

Элементы также могут состоять из одного тега, например, элемент
, функция которого - перенос строки.

Текст
элемента div

Такие элементы еще называют пустыми элементами (void elements). Хотя я использовал закрывающий слеш, но его наличие согласно спецификации необязательно, и равнозначно использованию тега без слеша:

Каждый элемент внутри открывающего тега может иметь атрибуты . Например:

Кнопка

Здесь определено два элемента: div и input. Элемент div имеет атрибут style . После знака равно в кавычках пишется значение атрибута: style="color:red;" . В данном случае значение "color:red;" указывает, что цвет текста будет красным.

Второй элемент - элемент input, состоящий из одного тега, имеет два атрибута: type (указывает на тип элемента - кнопка) и value (определяет текст кнопки)

Существуют глобальные или общие для всех элементов атрибуты, как например, style, а есть специфические, применяемые к определенным элементам, как например, type.

Кроме обычных атрибутов существуют еще булевые или логические атрибуты (boolean attributes). Подобные атрибуты могут не иметь значения. Например, у кнопки можно задать атрибут disabled:

Атрибут disabled указывает, что данный элемент отключен.

Глобальные атрибуты

В HTML5 есть набор глобальных атрибутов , которые применимы к любому элементу HTML5:

    accesskey : определяет клавишу для быстрого доступа к элементу

    class : задает класс CSS, который будет применяться к элементу

    contenteditable : определяет, можно ли редактировать содержимое элемента

    contextmenu : определяет контекстное меню для элемента, которое отображается при нажатии на элемент правой кнопкой мыши

    dir : устанавливает направление текста в элементе

    draggable : определяет, можно ли перетаскивать элемент

    dropzone : определяет, можно ли копировать переносимые данные при переносе на элемент

    hidden : скрывает элемент

    id : уникальный идентификатор элемента. На веб-странице элементы не должны иметь повторяющихся идентификаторов

    lang : определяет язык элемента

    spellcheck : указывает, будет ли для данного элемента использоваться проверка правописания

    style : задает стиль элемента

    tabindex : определяет порядок, в котором по элементам можно переключаться с помощью клавиши TAB

    title : устанавливает дополнительное описание для элемента

    translate : определяет, должно ли переводиться содержимое элемента

Но, как правило, из всего этого списка наиболее часто используются три: class , id и style .

Пользовательские атрибуты

В отличие от предыдущей версии языка разметки в HTML5 были добавлены пользовательские атрибуты (custom attributes). Теперь разработчик или создатель веб-страницы сам может определить любой атрибут, предваряя его префиксом data- . Например:

Здесь определен атрибут data-color , который имеет значение "red". Хотя для этого элемента, ни в целом в html не существует подобного атрибута. Мы его определяем сами и устанавливаем у него любое значение.

Одинарные или двойные кавычки

Нередко можно встретить случаи, когда в html при определении значений атрибутов применяются как одинарные, так и двойные кавычки. Например:

И одинарные, и двойные кавычки в данном случае допустимы, хотя чаще применяются именно двойные кавычки. Однако иногда само значение атрибута может содержать двойные кавычки, и в этом случае все значение лучше поместить в одинарные:

HTML - язык гипертекстовой разметки. В его основе лежат так называемые теги. Теги - это некие элементы обвертки, задающие формат и свойства элементов веб-страницы. На одной странице мы собрали для вас актуальный справочник тегов HTML.

Всего насчитывается более ста элементов разметки. Каждый имеет ряд атрибутов и собственный синтаксис. Справочник по тегам HTML поможет быстрой найти нужный вам элемент.

Список тегов HTML

Ниже в таблице представлен список тегов HTML5 с кратким описанием на русском языке.

Тег Краткое описание
Комментарий.
Определяет тип документа.
Ссылка, гиперссылка, якорь.
Определяет текст как аббревиатуру.
Контактная информация автора или владельца документа.
Определяет область на карте-изображении
Статья
Контент в стороне (содержимое не является основным на странице по смыслу)
Позволяет вставить воспроизводимый аудио файл.
Полужирный текст.
Задает базовый URL или аттрибут target для относительных ссылок в документе.
Область, где написание текста может имееть другое направления.
Устанавливает направление написания текста. В отличии от направление указывается физическое направление
Цитата.
Указывает область body документа.

Перенос строки.
Кликабельная кнопка
Используется для рисовании графики с помощью скриптов
Подпись таблицы.
Сноска на название материала.
Используется для вставки компьютерного кода в текстовом виде.
Задает характеристики колонок в таблице.
Определяет группу из одной или более колонок таблицы для форматирования.
Используется для определения предопределенных вариантов на выбор при вводе в текстовом поле
Определяет описание термина из тега в списке терминов .
Текст, который удален в новой версии документа.
Определяет дополнительную информацию, которую пользователь может просмотреть или скрыть
Указывает, что содержимое является термином.
Определяет диалоговое окно или интерактивный элемент
Блочный элемент - один из основных элементов верстки.
Определяет список определений.
Название термина в списке определений .
выделенный по смыслу текст (обычно, текст выделенный курсивом).
Контейнер для внешнего приложения
Группа связанных элементов в форме
Заголовок для элемента
Определяет автономную группу из нескольких элементов (например картинка с подписью)
Нижний колонтитул
Определяет форму пользовательского ввода
- Заголовки HTML разного уровня: , , , , , .
Указывает область head документа.
Блок заголовка
Горизонтальная линия - тематический разделитель.
Корневой элемент. Сообщает браузеру, что данный документ является HTML документом.
Выделяет текст курсивом.
Определяет встроенный фрейм
Изображение, картинка.
Поле для ввода
Текст, который был добавлен в новой версии документа.
Текст введенный с клавиатуры или названия кнопок клавиатуры. Обычно выделен моноширинным шрифтом.
Метка для поля ввода. Указывает на привязку элемента (обычно текста) к полю ввода.
Заголовок элементов
  • Элемент списка.
    Определяет привязку внешнего ресурса (чаще всего, привязку таблицы стилей CSS)
    Основной контент
    Контейнер для . Определяет пользовательскую карту на изображении
    Выделенный текст (обычно с помощью подсветки фона).
    Контейнер для списка пунктов меню
    Определяет элементы, которые пользователь может вызвать из контекстного меню
    Используется для определения мета-данных документа.
    Измеритель значений в заданном диапазоне
    Контейнер для навигационных элементов
    Альтернативный контент для пользователей, отключивших скрипты
    Определяет встроенный объект
    Определяет нумерованный список.
    Определяет группу связанных вариантов в выпадающем списке. Дает название группу
    Параметр (вариант выбора) в выпадающем списке
    Результат вычислений

    Абзац.
    Задает параметры для встроенных объектов
    Контейнер для нескольких изображений
    Предварительно отформатированный текст.
    Индикатор выполнения (прогресса)
    Цитата в тексте.
    Альтернативный текст, если браузер не поддерживает тег .
    Аннотация к содержимому тега .
    Контейнер для символов и их расшифровки (в основном для Восточно-азиатских символов, иероглифов).
    Перечеркнутый текст.
    Текст, являющийся результатом выполнения компьютерной программы (обычно выводится моноширинным шрифтом).
    Определяет скрипт или подключение скрипта из внешнего ресурса.
    Раздел
    Определяет выпадающий список
    Текст шрифтом меньшего размера.
    Определяет ресурс для тегов , и .
    Строчный элемент.
    Текст, выделенный по значению. Обычно отображается полужирным.
    Определяет контейнер для определения стилей документа
    Отображает текст в виде нижнего индекса.
    Заголовок внутри тега
    Отображает текст в виде верхнего индекса.
    Определяет таблицу.
    Определяет область контента в таблице.
    Ячейка в таблице .
    Многострочное поле для ввода
    Определяет группу строк в нижней части таблицы - нижний колонтитул.
    Ячейка - заголовок в таблице .
    Позволяет вставить воспроизводимое видео.
    Место, где допускается перенос строки.
    Устаревшие теги HTML

    Чем заменить устаревший тег HTML? В большинстве случаев подойдут каскадные таблицы стилей CSS. Также, существуют альтернативы не используемым в новой спецификации тегам и в пределах HTML. Ниже в таблице представлены устаревшие теги HTML с вариантами их замены.

    Тег Краткое описание
    Акроним. Используйте тег вместо него.
    Встроенный апплет. Используйте или вместо него.
    Задает цвет, размер, и семейство шрифта всего текста в документе. Используйте вместо него
    Текст большего размера. Используйте вместо него
    Отцентрованный текст. Используйте вместо него
    Список директорий. Используйте
      вместо него
    Определяет цвет, размер и семейство шрифта. Используйте вместо него
    Фрейм внутри . Используйте вместо него
    Определяет набор фреймов. Для добавления нескольких встроенных фреймов используйте несколько элементов
    Альтернативный текст, если фреймы не поддерживаются
    Перечеркнутый текст. Используйте или вместо него
    Моноширный текст. Используйте вместо него
    Подчеркнутый текст. Используйте вместо него

    Давным-давно, во времена XHTML/HTML4 у разработчиков было всего несколько возможностей, которыми они могли пользоваться для того, чтобы хранить произвольные данные, относящиеся к DOM. Вы могли изобретать свои собственные атрибуты, но это было рискованно - ваш код не был бы валидным, браузеры могли игнорировать ваши данные, и это могло вызвать проблемы, если название совпадало со стандартными атрибутами HTML.

    Поэтому большинство разработчиков завязывались на атрибуты class или rel так как они были единственным разумным способом хранить дополнительные строки. К примеру, предположим, что мы создаем виджет для отображения сообщений типа временной линии сообщений в Twitter. В идеале JavaScript должен иметь возможность конфигурирования без необходимости переписывать код, так что мы определяем идентификатор пользователя в атрибуте class, например:

    Наш JavaScript код будет искать элемент с ID msglist . С помощью скрипта мы будем искать классы, начинающиеся с user_ , а “bob” в нашем случае будет идентификатором пользователя, и мы отобразим все сообщения этого пользователя.

    Скажем, мы бы хотели также задать максимальное количество сообщений, и пропускать сообщения старше шести месяцев (180 дней):

    Наш атрибут class очень быстро загромождается - проще допустить ошибку, а разбор строк на JavaScript становится все сложнее.

    Data-атрибуты HTML5

    К счастью, в HTML5 была введена возможность использовать пользовательские атрибуты. Вы можете использовать любое имя в нижнем регистре с префиксом data- , например:

    Пользовательские data-атрибуты:

    • это строки - в них вы можете хранить любую информацию, которая может быть представлена или закодирована в виде строки, например JSON. Приведение типов должно осуществляться с помощью JavaScript
    • должны использоваться в тех случаях, когда нет подходящих элементов HTML5 или атрибутов
    • относятся только к странице. В отличие от микроформатов они должны игнорироваться внешними системами, типа поисковых систем и поисковых роботов
    Пример №1 обработки на JavaScript: getAttribute и setAttribute

    Все браузеры позволяют вам получить и изменить data-атрибуты с использованием методов getAttribute и setAttribute:

    Var msglist = document.getElementById("msglist"); var show = msglist.getAttribute("data-list-size"); msglist.setAttribute("data-list-size", +show+3);

    Это работает, но должно использоваться только для поддержания совместимости со старыми браузерами.

    Пример №2 обработки на JavaScript: метод data() библиотеки jQuery

    Начиная с версии jQuery 1.4.3 метод data() обрабатывает data-атрибуты HTML5. Вам нет необходимости явно указывать префикс data- , так что подобный код будет работать:

    Var msglist = $("#msglist"); var show = msglist.data("list-size"); msglist.data("list-size", show+3);

    Но как бы то ни было, имейте в виду, что jQuery пытается конвертировать значения таких атрибутов в подхдящие типы (булевы значения, числа, объекты, массивы или null) и затронет DOM. В отличие от setAttribute , метод data() физически не заменит атрибут data-list-size - если вы проверите его значение вне jQuery - оно все еще останется равным 5.

    Пример №3 обработки на JavaScript: API для работы с наборами данных

    И, наконец, у нас есть API для работы с наборами данных HTML5, которое возвращает объект DOMStringMap. Необходимо помнить, что data-атрибуты отображаются в объект без префиксов data- , из названий убираются знаки дефиса, а сами названия конвертируются в camelCase, например:

    Имя атрибута Имя в API набора данных
    data-user user
    data-maxage maxage
    data-list-size listSize

    Наш новый код:

    Var msglist = document.getElementById("msglist"); var show = msglist.dataset.listSize; msglist.dataset.listSize = +show+3;

    Данный API поддерживается всеми современными браузерами, но не IE10 и ниже. Для таких браузеров существует обходной путь , но, наверное, куда практичнее использовать jQuery, если вы пишете для старых браузеров.