Перевод статьи «10 useful HTML5 features, you may not be using».
HTML5 это уже не новинка. Некоторые его фичи мы используем еще с первого релиза (т. е. с января 2008 года). В рамках марафона #100DaysOfCode я заново пересмотрел список отличительных особенностей HTML5. И оказалось, что я все еще не использовал многие функции!
В этой статье я перечислю десять вещей из HTML5, которыми сам раньше не пользовался, но сейчас думаю, что они весьма полезны. Я также создал рабочие примеры и разместил их на Netlify. Надеюсь, они вам тоже пригодятся.
https://html5-tips.netlify.app/
Тег details
Тег <details>
предоставляет подробности чего-либо по запросу пользователя. Если вам нужно показывать какой-то контент только если пользователь явно этого хочет, используйте этот тег. По умолчанию этот виджет закрыт. При открытии он разворачивается и показывает находящийся в нем контент.
Вместе с тегом <details>
используется тег <summary> — для видимого заголовка.
Код
<details> <summary>Click Here to get the user details</summary> <table> <tr> <th>#</th> <th>Name</th> <th>Location</th> <th>Job</th> </tr> <tr> <td>1</td> <td>Adam</td> <td>Huston</td> <td>UI/UX</td> </tr> </table> </details>
Вот как это выглядит:
Поиграть можно здесь.
Совет
Используйте это в GitHub Readme, чтобы показывать подробную информацию только по запросу. Вот пример того, как я спрятал огромный список свойств react-компонентов и при этом оставил возможность для его просмотра. Круто, правда?
Редактируемый контент
Чтобы сделать контент редактируемым, можно добавлять к элементам атрибут contenteditable
. Это работает с такими элементами как DIV, P, UL и т. п. Атрибут указывается со значением true или false, например <element contenteditable="true|false">
.
Обратите внимание, что когда для элемента не указан атрибут contenteditable
, он наследует его от родителя.
Код
<h2> Shoppping List(Content Editable) </h2> <ul class="content-editable" contenteditable="true"> <li> 1. Milk </li> <li> 2. Bread </li> <li> 3. Honey </li> </ul>
Вот как это выглядит:
Поиграть можно здесь.
Совет
С помощью этого атрибута можно сделать редактируемыми элементы span
или div
. При этом вы можете применять к контенту css-стили. Это может быть куда лучшим вариантом, чем работа с полями ввода. Попробуйте!
Map
Тег <map>
помогает нам определять карту-изображение. Карта-изображение это любая картинка с одной или большим числом кликабельных зон. Тег <map>
используется с тегом <area>, при помощи которого определяются кликабельные зоны. Эти зоны могут иметь форму прямоугольника, круга или многоугольника. Если вы не указываете форму, захватывается все изображение.
Код
<div> <img src="circus.jpg" width="500" height="500" alt="Circus" usemap="#circusmap"> <map name="circusmap"> <area shape="rect" coords="67,114,207,254" href="elephant.htm"> <area shape="rect" coords="222,141,318, 256" href="lion.htm"> <area shape="rect" coords="343,111,455, 267" href="horse.htm"> <area shape="rect" coords="35,328,143,500" href="clown.htm"> <area shape="circle" coords="426,409,100" href="clown.htm"> </map> </div>
Вот как это выглядит:
Поиграть можно здесь.
Совет
Карта-изображение имеет свои недостатки, но ими можно пользоваться для визуальных презентаций. Скажем, можно создать фамильное древо и поставить ссылки на фотографии отдельных людей.
Выделение контента
Для выделения любого текста можно использовать тег <mark>
.
Код
<p> Did you know, you can <mark>"Highlight something interesting"</mark> just with an HTML tag? </p>
Вот как это выглядит:
Поиграть можно здесь.
Совет
При помощи CSS можно легко изменить цвет выделения.
mark { background-color: green; color: #FFFFFF; }
Атрибут data-*
Атрибуты data-*
используются для хранения пользовательских данных на странице или в приложении без визуального представления. Сохраненные данные можно использовать в JavaScript-коде для дальнейшего взаимодействия с пользователем.
Атрибуты data-*
состоят из двух частей:
- имени атрибута, которое не должно содержать заглавных букв и должно иметь как минимум один символ после префикса «data-»,
- значения атрибута, которое может быть любой строкой.
Код
<h2> Know data attribute </h2> <div class="data-attribute" id="data-attr" data-custom-attr="You are just Awesome!"> I have a hidden secret! </div> <button onclick="reveal()">Reveal</button>
И на JavaScript:
function reveal() { let dataDiv = document.getElementById('data-attr'); let value = dataDiv.dataset['customAttr']; document.getElementById('msg').innerHTML = `<mark>${value}</mark>`; }
Примечание. Для чтения этих атрибутов в JavaScript вы можете использовать getAttribute()
с полными именами атрибутов (например, data-custom-attr
). Но стандарт определяет более простой способ: с использованием свойства dataset
.
Вот как это выглядит:
Поиграть можно здесь.
Совет
Вы можете использовать эти атрибуты для сохранения каких-то данных на странице, а после передавать их на сервер, используя вызов REST.
Тег output
Тег <output>
представляет результат вычислений. Обычно этот элемент определяет область, которая будет использоваться для показа текстового результата каких-то вычислений.
Код
<form oninput="x.value=parseInt(a.value) * parseInt(b.value)"> <input type="number" id="a" value="0"> * <input type="number" id="b" value="0"> = <output name="x" for="a b"></output> </form>
Вот как это выглядит:
Поиграть можно здесь.
Совет
Если вы осуществляете какие-то вычисления на стороне клиента (в JavaScript) и хотите, чтобы результат отображался на странице, используйте тег <output>
. Вам не придется выполнять дополнительные действия по получению элемента с использованием getElementById()
.
Тег datalist
При помощи тега <datalist>
задается скрытый список заготовленных опций, из которых пользователь может выбрать нужное при наборе в текстовом поле. Здесь есть функционал автодополнения autocomplete
, благодаря которому можно получить только подходящие опции.
Код
<form action="" method="get"> <label for="fruit">Choose your fruit from the list:</label> <input list="fruits" name="fruit" id="fruit"> <datalist id="fruits"> <option value="Apple"> <option value="Orange"> <option value="Banana"> <option value="Mango"> <option value="Avacado"> </datalist> <input type="submit"> </form>
Вот как это выглядит:
Поиграть можно здесь.
Совет
Чем это отличается от традиционной связки <select>-<option>
? Тег <select>
предназначен для выбора одного или большего числа элементов из списка. Чтобы их выбрать, нужно просмотреть весь список. Тег <datalist>
более продвинутый, в нем есть поддержка автодополнения.
Range (ползунок)
Range это тип input, при помощи которого можно создавать ползунок для ввода чисел в заданном диапазоне.
Код
<form method="post"> <input type="range" name="range" min="0" max="100" step="1" value="" onchange="changeValue(event)"/> </form> <div class="range"> <output id="output" name="result"> </output> </div>
Вот как это выглядит:
Поиграть можно здесь.
Тег meter
Этот тег используется для вывода количественных данных в заданном диапазоне.
Код
<label for="home">/home/atapas</label> <meter id="home" value="4" min="0" max="10">2 out of 10</meter><br> <label for="root">/root</label> <meter id="root" value="0.6">60%</meter><br>
Вот как это выглядит:
Поиграть можно здесь.
Совет
Не используйте тег <meter>
для отображения прогресса завершенности задачи. В HTML5 для этого есть специальный тег <progress>
.
<label for="file">Downloading progress:</label> <progress id="file" value="32" max="100"> 32% </progress>
Input-ы
Тег <input>
нам знаком по использованию таких его видов как text
, password
и т. п. Но у этого тега есть несколько специфических вариантов использования.
Код
required
Можно пометить поле ввода как обязательное.
<input type="text" id="username1" name="username" required>
autofocus
Элемент автоматически получает фокус (на него помещается курсор).
<input type="text" id="username2" name="username" required autofocus>
Валидация при помощи регулярных выражений
Вы можете задать паттерн для проверки input-а.
<input type="password" name="password" id="password" placeholder="6-20 chars, at least 1 digit, 1 uppercase and one lowercase letter" pattern="^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,20}$" autofocus requ
Инструмент выбора цвета
<input type="color" onchange="showColor(event)"> <p id="colorMe">Color Me!</p>
Итоги
Я уверен, что пропустил много других полезных тегов и атрибутов из HTML5. Как насчет того чтобы дополнить список? Предлагайте свои варианты в комментариях!
[customscript]techrocks_custom_after_post_html[/customscript]
[customscript]techrocks_custom_script[/customscript]