Advertisement
  1. Code
  2. HTML5

Что такое HTML5?

Scroll to top
Read Time: 13 min

Russian (Pусский) translation by Masha Kolesnikova (you can also view the original English article)

Кредит: Тема Простая - Что такое HTML5? Они делают классные анимированные ролики.

Введение в HTML5

Добро пожаловать в Envato Tuts +! Этот учебник содержит вводный обзор HTML5. Если вы ничего не слышали об этом или просто хотите понять его значимость, вы попали в нужное место.

HTML5 является последним стандартом для браузеров для отображения и взаимодействия с веб-страницами. Утвержденный в 2014 году, это первое обновление для HTML за 14 лет. Это прямо целая жизнь между обновлениями.

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

Вот несколько ключевых улучшений в HTML5:

  • На страницах есть более простая, более прямолинейная структура элементов, что упрощает их сбор, настройку и отладку - и создание автоматизированных службы, которые помогут вам найти важные ресурсы в Интернете.
  • Он предоставляет стандартные элементы для обычных медиа-объектов, которые ранее требовали раздражающих плагинов для аудио, видео и т.д. Эти плагины необходимо было регулярно обновлять, то есть повторять загрузки для управления безопасностью.
  • Существует встроенная интеграция с интерфейсами для удовлетворения современных веб-и мобильных потребностей. Одним из моих любимых примеров этого является геолокация, которая позволяет вам определять координаты GPS посетителя через браузер. Ранее эта функция была ограничена телефонами с поддержкой GPS.

Например, ниже приведен пример геолокации HTML5 из «Создание вашего стартапа с PHP: геолокация и Google Места» (Tuts +):

What is HTML5 Geolocation ExampleWhat is HTML5 Geolocation ExampleWhat is HTML5 Geolocation Example

Для кого HTML5 имеет значение?

Вы просто веб-пользователь или поклонник YouTube?

HTML5 улучшит скорость, удобство использования и согласованность в Интернете. Да, ваш опыт YouTube будет постепенно становиться все лучше. Будет меньше обновлений для браузера и плагинов, меньше угроз безопасности и больше более элегантных, более читаемых и более быстрых веб-сайтов.

Вы веб-разработчик?

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

Вы хотите создать веб-браузер?

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

Хотите узнать больше?

Просто быстрое напоминание, прежде чем мы погрузимся! Я стараюсь участвовать в обсуждениях ниже. Если у вас есть вопрос или тема для будущего учебника, пожалуйста, напишите комментарий ниже или свяжитесь со мной в Twitter @reifman.

Предистория HTML5

Откуда выходит HTML5?

HTML5 является последним за более чем 20 лет стандартов программирования браузера с момента запуска Интернета в 1991 году.

История HTML

HTML впервые появился в качестве стандарта в 1993 году, и вот график версий HTML, принятых комитетами по стандартам:

  • HTML 2.0: 1995
  • HTML 4.0: 1997
  • HTML 4.01: 2000
  • HTML 5: 2014

Цели HTML5

Согласно Википедии, HTML5 предназначен для консолидации более ранних версий и дифференцированных типов документов, таких как XHTML 1 и DOM Level 2 HTML:

[HTML5] расширяет, улучшает и рационализирует разметку, доступную для документов, и вводит разметку и ... (API) для сложных веб-приложений ... HTML5 также является потенциальным кандидатом для кросс-платформенных мобильных приложений. Многие функции были разработаны с использованием маломощных устройств, таких как смартфоны и планшеты, которые были приняты во внимание.

Вот краткое описание того, как MakeUseOf объясняет цели HTML5:

  • Устранение плагинов, таких как Flash, для общих функций, которые вам нужны. Создание собственной поддержки для таких вещей, как аудио, видео и т.д.
  • Уменьшение необходимости в JavaScript и дополнительном коде с новыми встроенными элементами.
  • Обеспечение согласованности между браузерами и устройствами.
  • При этом сделать все это максимально прозрачным.
What is HTML5 Plugin Past for Video ElementWhat is HTML5 Plugin Past for Video ElementWhat is HTML5 Plugin Past for Video Element

Кредит изображения: Простая тема

Какие новые возможности предлагает HTML5?

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

What is HTML5 Browser compatiblityWhat is HTML5 Browser compatiblityWhat is HTML5 Browser compatiblity

Кредит изображения: PHPFlow

Там также эта интерактивная визуальная радуга в HTML5Readiness. Наведите указатель мыши на разные дуги, и вы увидите, какие функции поддерживаются браузерами:

What is HTML5 Compatibility RainbowWhat is HTML5 Compatibility RainbowWhat is HTML5 Compatibility Rainbow

Это весело, но другие диаграммы на других сайтах могут быть более функционально интуитивными в использовании.

Уровни поддержки HTML5

В 2011 году Wikipedia сообщила, что около трети из 100 лучших веб-сайтов поддерживали некоторые возможности HTML5. К августу 2013 года было сделано около 153 сайтов из списка Fortune 500.

Вот визуализация огромности возможностей HTML5:

What is HTML5 Feature OverviewWhat is HTML5 Feature OverviewWhat is HTML5 Feature Overview

Кредит изображения: Википедия

Новые элементы HTML5

Самые основные новые элементы HTML5 облегчают выкладку веб-страниц и отладку кода. Это также облегчает автоматические услуги для сканирования документов в Интернете и понимания важности различных компонентов страницы.

Для макета страницы и ключевых функций в настоящее время существуют определенные элементы, такие как:

  • <header> и <footer>
  • <nav> для всех видов меню
  • <side> для боковых панелей или близлежащего контента
  • <article>, куда идет контент, такой например, как сообщение в блоге
  • <section> похож на <div>, но более ориентирован на контент
  • <audio> и <video>, чтобы браузеры управляли воспроизведением каждого из них. Больше нет плагинов и обновлений безопасности для этого
  • <canvas> специально для того, чтобы вы могли рисовать графику с помощью отдельного языка сценариев
  • <embed> для размещения внешнего контента или приложений на странице

Вот хороший визуальный очерк их Smashing Magazine:

What is HTML5 New ElementsWhat is HTML5 New ElementsWhat is HTML5 New Elements

Вот некоторые из более продвинутых функций HTML5, включая интеграцию API, что делает программирование в JavaScript для сложных действий более простым и последовательным в браузерах:

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

Google Gears предоставил нам автономное хранилище данных, и Flash познакомил нас с кешем приложений (Pandora использует его для сохранения вашей информации в журнале). Благодаря HTML5 эти возможности теперь доступны для использования прямо в браузере и могут быть легко расширены с помощью JavaScript.

Нужно выяснить, какие функции поддерживаются в браузерах? HTML5Test имеет полезную интерактивную оценку функций и поддержки браузера:

What is HTML5 Feature Compatibility Browser MatrixWhat is HTML5 Feature Compatibility Browser MatrixWhat is HTML5 Feature Compatibility Browser Matrix

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

Несколько примеров HTML5 в действии

Давайте рассмотрим несколько интересных примеров HTML5 в действии.

Страница Boilerplate HTML5

Простота HTML5 понятна в новых макетах страниц. Чем больше элементов, ориентированных на контент, тем легче понять код страницы и отладить. Вот простой пример, который я построил с помощью проекта HTML5-Reset:

1
<!doctype html>
2
3
<html lang="en">
4
<head>
5
  <meta charset="utf-8">
6
7
  <title></title>
8
    <meta name="author" content="" />
9
  <meta name="description" content="" />
10
11
 <link rel="stylesheet" href="assets/css/style.css" />
12
13
  <!--[if lt IE 9]>

14
  <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>

15
  <![endif]-->
16
</head>
17
18
<body>
19
    <header>
20
    	<h1><a href="/">Page Title</a></h1>
21
		<nav>
22
			<ol>
23
				<li><a href="">Nav Link 1</a></li>
24
				<li><a href="">Nav Link 2</a></li>
25
				<li><a href="">Nav Link 3</a></li>
26
			</ol>
27
		</nav>
28
	</header>
29
	<article>
30
		<h1>Article Header</h1>
31
		<p>Etiam pretium odio eu mi convallis vitae varius neque pharetra. Nulla vestibulum nisi ut sem cursus sed mattis nisi egestas.</p>
32
33
		<h2>Article Subhead</h2>
34
		<p>Vestibulum lacus erat, volutpat vel dignissim at, fringilla ut felis.</p>
35
36
	</article>
37
38
	<aside>
39
		<h2>Sidebar Content</h2>
40
	</aside>
41
42
	<footer>
43
		<p><small>&copy; Copyright Your Name Here 2014. All Rights Reserved.</small></p>
44
	</footer>
45
46
</div>
47
48
  <script src="scripts/js/scripts.js"></script>
49
</body>
50
</html>

Обратите внимание, что есть более простой тег doctype, теги ссылок и теги скриптов. Сценарий HTML5Shiv обеспечивает устаревшую поддержку версий Internet Explorer до 9.x.

Если вы хотите увидеть некоторые другие подходы, ознакомьтесь с HTML5 Boilerplate, более широкой версией HTML5 с открытым исходным кодом.

Элемент video и плейеры

Вот видео-пример из W3Schools, показывающий исходный код слева, и полученный плейер справа:

What is HTML5 Video ExampleWhat is HTML5 Video ExampleWhat is HTML5 Video Example

Нет никакого плагина и нет обновлений.

Формы

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

What is HTML5 Input Element ExampleWhat is HTML5 Input Element ExampleWhat is HTML5 Input Element Example

Вот пара отличных уроков для перехода к более продвинутым формам в HTML5 Doctor:

Например, вот демонстрация элемента range, отображаемого в браузере Chrome:

What is HTML5 Range element exampleWhat is HTML5 Range element exampleWhat is HTML5 Range element example

Масштабируемая векторная графика (SVG)

В HTML5 вы можете легко анимировать элементы с помощью JavaScript и HTML5. Вот масштабируемые простые анимированные часы (изменение масштаба):

What is HTML5 SVG Animated Clock DemoWhat is HTML5 SVG Animated Clock DemoWhat is HTML5 SVG Animated Clock Demo

Вот пример кода для демонстрации выше интеграции JavaScript:

1
<!DOCTYPE html>
2
<html lang="en">
3
<head>
4
<meta charset=utf-8>
5
<meta name="viewport" content="width=620">
6
<title>HTML5 Demo: SVG clock animation</title>
7
<link rel="stylesheet" href="css/html5demos.css">
8
<script src="js/h5utils.js"></script></head>
9
<body>
10
<section id="wrapper">
11
<div id="carbonads-container"><div class="carbonad"><div id="azcarbon"></div><script type="text/javascript">var z = document.createElement("script"); z.type = "text/javascript"; z.async = true; z.src = "http://engine.carbonads.com/z/14060/azcarbon_2_1_0_VERT"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(z, s);</script></div></div>
12
    <header>
13
      <h1>SVG clock animation</h1>
14
    </header>
15
16
<style>
17
  /* any custom styles live here */
18
  line {
19
  stroke-width: 3px;
20
  stroke: black;
21
  }      
22
</style>
23
<article>
24
  <p>SVG clock animation by <a href="http://twitter.com/davidbasoko">David Basoko</a>.</p>
25
    <div>
26
      <label for="zoominput">Zoom</label>
27
      <select id="rangeinput" onchange="CLOCK.zoom();">
28
        <option value="1" selected="selected">1x</option>
29
        <option value="2">2x</option>
30
        <option value="3">3x</option>
31
        <option value="4">4x</option>
32
        <option value="5">5x</option>
33
      </select>
34
    </div>
35
    <div>
36
      <svg xmlns="http://www.w3.org/2000/svg" width="1000" height="1000" >
37
        <g>
38
          <circle id="circle" style="stroke: black; fill: #f8f8f8;" cx="100" cy="100" r="100"/>
39
          <line id="hour0" x1="100" y1="10"  x2="100" y2="0"/>
40
          <line id="hour1" x1="150" y1="13"  x2="145" y2="22"/>
41
          <line id="hour2" x1="187" y1="50"  x2="178" y2="55"/>
42
          <line id="hour3" x1="190" y1="100" x2="200" y2="100"/>
43
          <line id="hour4" x1="187" y1="150" x2="178" y2="145"/>
44
          <line id="hour5" x1="150" y1="187" x2="145" y2="178"/>
45
          <line id="hour6" x1="100" y1="190" x2="100" y2="200"/>
46
          <line id="hour7" x1="50"  y1="187" x2="55"  y2="178"/>
47
          <line id="hour8" x1="13"  y1="150" x2="22"  y2="145"/>
48
          <line id="hour9" x1="0"   y1="100" x2="10"  y2="100"/>
49
          <line id="hour10" x1="13"  y1="50"  x2="22"  y2="55" />
50
          <line id="hour11" x1="50"  y1="13"  x2="55"  y2="22" />
51
        </g>
52
        <g>
53
          <line x1="100" y1="100" x2="100" y2="45" style="stroke-width: 6px; stroke: green;" id="hourhand"/>
54
          <line x1="100" y1="100" x2="100" y2="15" style="stroke-width: 4px; stroke: blue;"  id="minutehand"/>
55
          <line x1="100" y1="100" x2="100" y2="5"  style="stroke-width: 2px; stroke: red;"   id="secondhand"/>
56
        </g>
57
      </svg>
58
    </div>
59
60
</article>
61
<script>
62
var CLOCK = (function() {
63
    var drawClock = function() {
64
        var INITIAL_R = 100;
65
66
        var zoom = document.getElementById("rangeinput").value;
67
        
68
        var r = INITIAL_R * zoom;
69
70
        // Draw Circle

71
        var circle = document.getElementById("circle");
72
        circle.setAttribute('r', r);
73
        circle.setAttribute('cx', r);
74
        circle.setAttribute('cy', r);
75
76
        // Draw Hours

77
        for(var i = 0; i < 12; i++) {
78
            var hour = document.getElementById("hour"+i);
79
            var degrees = i * 30;
80
            hour.setAttribute('x1', getX(degrees, r, 0.9)); // 90% of radio's length.

81
            hour.setAttribute('y1', getY(degrees, r, 0.9)); // 90% of radio's length.

82
            hour.setAttribute('x2', getX(degrees, r));
83
            hour.setAttribute('y2', getY(degrees, r));
84
        }
85
86
        // Draw hands

87
        drawHands();
88
    };
89
90
    var drawHands = function() {
91
        // Constants for hand's sizes.

92
        var SECONDS_HAND_SIZE = 0.95,
93
        MINUTES_HAND_SIZE = 0.85,
94
        HOURS_HAND_SIZE = 0.55;
95
96
        var circle = document.getElementById("circle");
97
98
        // Clock Circle's Properties

99
        var r = circle.getAttribute('r'),
100
        cx = parseInt(circle.getAttribute('cx')),
101
        cy = parseInt(circle.getAttribute('cy'));
102
103
        // Current time.

104
        var currentTime = new Date();
105
106
        // Draw Hands

107
        drawHand(document.getElementById("secondhand"),
108
                 currentTime.getSeconds(),
109
                 SECONDS_HAND_SIZE,
110
                 6);
111
        drawHand(document.getElementById("minutehand"),
112
                 currentTime.getMinutes(),
113
                 MINUTES_HAND_SIZE,
114
                 6);
115
        drawHand(document.getElementById("hourhand"),
116
                 currentTime.getHours(),
117
                 HOURS_HAND_SIZE,
118
                 30);
119
        
120
        function drawHand(hand, value, size, degrees) {
121
            var deg = degrees * value;
122
            x2 = getX(deg, r, size, cx),
123
            y2 = getY(deg, r, size, cy);
124
            
125
            hand.setAttribute('x1', cx);
126
            hand.setAttribute('y1', cy); 
127
            hand.setAttribute('x2', x2);
128
            hand.setAttribute('y2', y2); 
129
        }
130
    };
131
132
    /*

133
     * Get a Point X value.

134
     * degress. Angle's degrees.

135
     * r. Circle's radio.

136
     * adjust. Percent of length.

137
     * x. Start of X point.

138
     */
139
    function getX(degrees, r, adjust, x) {
140
        var x = x || r, 
141
        adj = adjust || 1;
142
        return x + r * adj * Math.cos(getRad(degrees));
143
    }
144
145
    /*

146
     * Get a Point Y value.

147
     * degress. Angle's degrees.

148
     * r. Circle's radio.

149
     * adjust. Percent of length.

150
     * x. Start of Y point.

151
     */   
152
    function getY(degrees, r, adjust, y) {
153
        var y = y || r,
154
        adj = adjust || 1;
155
        return y + r * adj * Math.sin(getRad(degrees));
156
    }
157
158
    // Convert from degrees to radians.

159
    function getRad(degrees) {
160
        var adjust = Math.PI / 2;
161
        return (degrees * Math.PI / 180) - adjust;
162
    }
163
        
164
    return {
165
        init: function() {
166
            drawClock();
167
            setInterval(drawHands, 1000);
168
        },
169
        zoom: function() {
170
            drawClock();
171
        }
172
    };
173
})();
174
CLOCK.init();
175
</script>
176
<a id="html5badge" href="http://www.w3.org/html/logo/">
177
<img src="http://www.w3.org/html/logo/badge/html5-badge-h-connectivity-device-graphics-multimedia-performance-semantics-storage.png" width="325" height="64" alt="HTML5 Powered with Connectivity / Realtime, Device Access, Graphics, 3D & Effects, Multimedia, Performance & Integration, Semantics, and Offline & Storage" title="HTML5 Powered with Connectivity / Realtime, Device Access, Graphics, 3D & Effects, Multimedia, Performance & Integration, Semantics, and Offline & Storage">
178
</a>
179
    <footer><a href="/">HTML5 demos</a>/<a id="built" href="http://twitter.com/rem">@rem built this</a>/<a href="#view-source">view source</a></footer> 
180
</section>
181
<a href="http://github.com/remy/html5demos"><img style="position: absolute; top: 0; left: 0; border: 0;" src="http://s3.amazonaws.com/github/ribbons/forkme_left_darkblue_121621.png" alt="Fork me on GitHub" /></a>
182
<script src="js/prettify.packed.js"></script>
183
<script>
184
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
185
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
186
</script>
187
</body>
188
</html>

Что дальше?

Надеюсь, вам понравился этот обзор появления и преимуществ HTML5. Если вы хотите еще раз изучить HTML5, есть еще два ресурса, которые я хотел бы предложить:

  • Введение в HTML5: отличное введение в улучшения HTML5 для разработчиков, которые хотят быстро пройти по всем новым элементам.
  • HTML5 Demos and Examples: Идеально подходит для показа организованного меню из множества демонстраций HTML5, показывая вам новые возможности.

Вот пример доступных для просмотра демонстраций в HTML5 Demos (не все из них для меня оказались рабочими):

What is HTML5 Demo site at HTML5TestcomWhat is HTML5 Demo site at HTML5TestcomWhat is HTML5 Demo site at HTML5Testcom

Если вы являетесь менеджером сайта WordPress, как и многие читатели Envato Tuts +, вы можете оценить будущие темы для их соответствия HTML5. Разработка, основанная на стандартах с последовательной поддержкой браузера, делает веб-разработку намного проще для многих из нас и уменьшит количество ошибок, с которыми сталкиваются наши клиенты, в то же время все более обеспечивая лучший пользовательский опыт.

В целом, я очень впечатлен HTML5. И, похоже, он будет продолжать развиваться быстрее, чем каждые 14 лет.

Кроме того, если вы ищете другие утилиты, которые помогут вам развить свои навыки HTML5, не забудьте посмотреть, что у нас есть на Envato Market.

Мне бы хотелось узнать больше в ваших отзывах о HTML5 и предложениях для будущих тем, о которых вы хотели бы узнать больше. Пожалуйста, не стесняйтесь оставлять свои вопросы и комментарии ниже. Вы также можете напрямую связаться со мной в Twitter @reifman. Чтобы увидеть другие учебники, которые я написал, просмотрите страницу инструктора Envato Tuts +.

Ссылки по теме

Поскольку для HTML5 существует так много полезных ресурсов, я включил дополнительную помощь некоторых из тех, которые я считаю наиболее полезными:

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.