Top Banner
ОБЗОР HTML 5 ПО СЛЕДАМ #HTML5CAMP Сергей Звягин Ingate Development
48

Обзор Html 5

May 22, 2015

Download

Technology

GetDev.NET

Обзорный доклад Сергея Звягина о HTML 5
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Обзор Html 5

ОБЗОР HTML 5ПО СЛЕДАМ #HTML5CAMP

Сергей ЗвягинIngate Development

Page 2: Обзор Html 5

Ingate Development / TulaDev.NET 2

ЧТО ТАКОЕ HTML5?

19.02.2011

Page 3: Обзор Html 5

Ingate Development / TulaDev.NET 3

СЕМАНТИКА

19.02.2011

Page 4: Обзор Html 5

Ingate Development / TulaDev.NET 4

СЕМАНТИЧЕСКАЯ РАЗМЕТКАБыло Стало

19.02.2011

Страница свёрстана с использованием элементов div и присвоенных каждому из них классов CSS. Исходный код не отражает идеи дизайнера, он сложен для восприятия.

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

Page 5: Обзор Html 5

Ingate Development / TulaDev.NET 5

СЕМАНТИЧЕСКАЯ РАЗМЕТКА• Теги не должны определять отображение• Главная цель тегов – смысловая нагрузка

• Разрешены перекрывающиеся теги• Бинарные атрибуты не имеют значений

19.02.2011

Page 6: Обзор Html 5

Ingate Development / TulaDev.NET 6

СЕМАНТИЧЕСКАЯ РАЗМЕТКА• Новые семантические теги:– <header>– <footer>– <article>– <section>– <nav>– <aside>– <figure>– <figcaption>– <progress> и другие

19.02.2011

Page 7: Обзор Html 5

Ingate Development / TulaDev.NET 7

СЕМАНТИЧЕСКАЯ РАЗМЕТКА• Уже существующие теги получили

семантический оттенокНапример:

– <i> - интонация– <strong> - важность– <b> - выделение без указания важности

19.02.2011

Page 8: Обзор Html 5

Ingate Development / TulaDev.NET 8

WEB FORMS 2.O

• Новые типы полей ввода:– range– search– color– email– url– date– time– tel и другие

• Спецификация НЕ описывает как они должны отображаться

19.02.2011

Page 9: Обзор Html 5

Ingate Development / TulaDev.NET 9

MICRODATA

• расширение текущего механизма микроформатов

• набор пар ключ-значение, добавленных в документ параллельно основному контенту

• нацелено на автоматизированные парсеры (напр., поисковые роботы)

19.02.2011

Page 10: Обзор Html 5

Ingate Development / TulaDev.NET 10

MICRODATA

Пример:<section itemscope itemtype="http://example.org/animals#cat"> <h1 itemprop="name http://example.com/fn">Hedral</h1> <p itemprop="desc"> Hedral is a male american domestic shorthair, with a fluffy <span itemprop="http://example.com/color">black</span> fur with <span itemprop="http://example.com/color">white</span> paws and belly. </p> <img itemprop="img" src="hedral.jpeg" alt=""

title="Hedral, age 18 months" /></section>

19.02.2011

Page 11: Обзор Html 5

Ingate Development / TulaDev.NET 11

CSS3 И СТИЛИЗАЦИЯ

19.02.2011

Page 12: Обзор Html 5

Ingate Development / TulaDev.NET 12

CSS3: ПРОЗРАЧНОСТЬ

Было

background-color: rgb(0,0,255);opacity: 0.5;

• Все потомки элемента наследуют свойство opacity

Стало

background-color:rgba(0,0,255,0.5);

• Прозрачность получит только фон конкретного элемента

19.02.2011

Page 13: Обзор Html 5

Ingate Development / TulaDev.NET 13

CSS3: ФОНОВЫЕ ИЗОБРАЖЕНИЯ

19.02.2011

• Указание размера фоновой картинки.backgroundsize { background: url(logo.gif); background-size: 203px 45px;}

• Использование нескольких фоновых картинок

.multiplebackgrounds { background: url(top.gif) top left no-repeat,

url(bottom.gif) bottom left no-repeat,

url(middle.gif) left repeat-y;}

Page 14: Обзор Html 5

Ingate Development / TulaDev.NET 14

CSS3: ГРАНИЦЫ И ТЕНИ

19.02.2011

• Закругленные углы.border_rounded { border: 2px solid #897048; border-radius: 5px;}

• Тени.border_shadow { box-shadow: 10px 10px 5px #888;}.text_shadow { text-shadow: 2px 2px 2px #ddccb5;}

Page 15: Обзор Html 5

Ingate Development / TulaDev.NET 15

CSS3: ТРАНСФОРМАЦИИ

19.02.2011

• Растягивание блоков.ui_resizable { resize: both;}

• Трансформация.transform_element a:hover { transform: scale(1.15) rotate(-5deg);}

Page 16: Обзор Html 5

Ingate Development / TulaDev.NET 16

WEB OPEN FONT FORMAT

19.02.2011

• Сжатый OpenType или TrueType шрифт• Нет возможности шифрования

Пример:@font-face {

font-family: 'MyFontFamily';src: url('myfont-webfont.eot?') format('eot'), url('myfont-webfont.woff') format('woff'), url('myfont-webfont.ttf')

format('truetype'), url('myfont-webfont.svg#name')format('svg');

}

Page 17: Обзор Html 5

Ingate Development / TulaDev.NET 17

3D, ГРАФИКА И ЭФФЕКТЫ

19.02.2011

Page 18: Обзор Html 5

Ingate Development / TulaDev.NET 18

SVG

19.02.2011

• Xml-подобный язык для визуального описания векторной графики

• Первый черновик спецификации создан аж в 1998 году

• Индексируется поисковыми машинами• 2 варианта анимации:

SMIL или CSS Transform

Page 19: Обзор Html 5

Ingate Development / TulaDev.NET 19

SVG

19.02.2011

Пример:<rect x="100" y="100« width="550" height="550« fill="#FAFAA2" stroke="#000«/><circle cx="100" cy="100" r="275« fill="#FAFAA2" stroke="#000«/><line x1="230" y1="570" x2="640" y2="490« stroke="#000«/>

Page 20: Обзор Html 5

Ingate Development / TulaDev.NET 20

SVG

19.02.2011

• DOM модель у SVG и HTML одинаковая• Следовательно можно изменять отдельные

блоки посредством JavaScript• Медиа-выражения позволяют добавлять

условные блоки

Page 21: Обзор Html 5

Ingate Development / TulaDev.NET 21

CANVAS

19.02.2011

• Набор API для создания и управления растровой графикой при помощи JavaScript

HTML:<canvas id="canvas"> width="600" height="600"></canvas>

JavaScript:var canvas = document.getElementyId('canvas').getContext('2d');canvas.rect( 25, 25, 550, 550 );canvas.fillStyle = '#FAFAA2';canvas.strokeStyle = '#000';canvas.lineWidth = 50;

Page 22: Обзор Html 5

Ingate Development / TulaDev.NET 22

WEBGL

19.02.2011

• Развитие эксперимента Canvas 3D• Графика аппаратно ускорена• Первая черновая спецификация стандарта

опубликована 10 декабря 2009 года

Page 23: Обзор Html 5

Ingate Development / TulaDev.NET 23

МУЛЬТИМЕДИА

19.02.2011

Page 24: Обзор Html 5

Ingate Development / TulaDev.NET 24

AUDIO И VIDEO

19.02.2011

• Не нужно никаких дополнительных кодеков, установленных программ или кода

• Набор воспроизводимых форматов ограничен

• Спецификация не предоставляет описания, как должны выглядеть элементы управления

Page 25: Обзор Html 5

Ingate Development / TulaDev.NET 25

AUDIO И VIDEO

19.02.2011

Поддержка разных форматов аудио различными браузерами:

ogg/vorbis + + - + -

mp3 + - + - +

wav + + - + +

AAC + - + - +

* Информация приведена для браузеров Opera 11, Firefox 4 beta, IE9 beta, Chrome 9, Safari 5

Page 26: Обзор Html 5

Ingate Development / TulaDev.NET 26

AUDIO И VIDEO

19.02.2011

Поддержка разных форматов видео различными браузерами:

ogg/theora + + - + -

H.264 + - + - +

WebM + + - + -

* Информация приведена для браузеров Opera 11, Firefox 4 beta, IE9 beta, Chrome 9, Safari 5

Page 27: Обзор Html 5

Ingate Development / TulaDev.NET 27

АВТОНОМНАЯ РАБОТА И ЛОКАЛЬНЫЕ ХРАНИЛИЩА

19.02.2011

Page 28: Обзор Html 5

Ingate Development / TulaDev.NET 28

OFFLINE & STORAGE

19.02.2011

• Offline Application Caching API• Web Storage• Indexed Database API• File API• Web SQL Database

Page 29: Обзор Html 5

Ingate Development / TulaDev.NET 29

HTML5 APP CACHE

19.02.2011

• Можно принудительно указать какие файлы кешируются браузером, а какие нет:

HTML:<!DOCTYPE HTML><html manifest="cache-manifest">...

Manifest File (text/cache-manifest):CACHE MANIFESTindex.htmlstyle/default.cssimages/logo.png

NETWORK:server.cgi

Page 30: Обзор Html 5

Ingate Development / TulaDev.NET 30

WEB STORAGE

19.02.2011

• Можно хранить состояние для сайта в течение короткого или длительного промежутка времени

• Используются объекты sessionStorage и localStorage

• Предполагается использовать как замену Cookies

Page 31: Обзор Html 5

Ingate Development / TulaDev.NET 31

INDEXED DB

19.02.2011

• Возможность хранения пар ключ-значение• Индексы, курсоры, транзакции…• 2 API для работы с базой: синхронный и

асинхронный

Page 32: Обзор Html 5

Ingate Development / TulaDev.NET 32

INDEXED DB

19.02.2011

• Пример:

var db = indexedDB.open('books', 'Book store', false);if (db.version !== '1.0') { var olddb = indexedDB.open('books', 'Book store'); olddb.createObjectStore('books', 'isbn'); olddb.createIndex('BookAuthor', 'books', 'author', false); olddb.setVersion("1.0"); }var index = db.openIndex('BookAuthor');var matching = index.get('fred');if (matching) report(matching.isbn, matching.name, matching.author);else report(null);

Page 33: Обзор Html 5

Ingate Development / TulaDev.NET 33

FILE API

19.02.2011

• Контроль процесса загрузки файла на сервер

• Можно работать с содержимым файла до отправки на сервер (объект FileReader)

• Возможность выбирать сразу несколько файлов

Page 34: Обзор Html 5

Ingate Development / TulaDev.NET 34

ВЗАИМОДЕЙСТВИЕ КЛИЕНТА И СЕРВЕРА

19.02.2011

Page 35: Обзор Html 5

Ingate Development / TulaDev.NET 35

WEB SOCKETS

19.02.2011

• протокол полнодуплексной двунаправленной связи поверх TCP соединения, предназначенный для обмена сообщениями между браузером и веб-сервером в режиме реального времени

• W3C занимается стандартизацией API Web Sockets, а IETF занимается утверждением протокола Web Socket

Page 36: Обзор Html 5

Ingate Development / TulaDev.NET 36

WEB SOCKETS

19.02.2011

• Пример:

<script> var webSocket = new WebSocket('ws://localhost/echo'); webSocket.onopen = function(event) { alert('onopen'); webSocket.send("Hello Web Socket!"); }; webSocket.onmessage = function(event) { alert('onmessage, ' + event.data); webSocket.close(); }; webSocket.onclose = function(event) { alert('onclose'); };</script>

Page 37: Обзор Html 5

Ingate Development / TulaDev.NET 37

SERVER-SENT EVENTS

19.02.2011

• Способ получения данных от сервера• Нет никакой обработки ошибок• Пример:

<event-source src="http://example.com/ticker.php" id="stock"><script type="text/javascript">document.getElementById('stock') .addEventListener('stock change', function () { var data = event.data.split('\n'); updateStocks(data[0], data[1], data[2]); }, false);</script>

Page 38: Обзор Html 5

Ingate Development / TulaDev.NET 38

ДОСТУП К УСТРОЙСТВАМ

19.02.2011

Page 39: Обзор Html 5

Ingate Development / TulaDev.NET 39

GEOLOCATION API

19.02.2011

• Позволяет определить местоположение пользователя

• Используется только с согласия пользователя

• Предоставляет 2 метода: можно узнать местоположение разово или подписаться на изменение местоположения

Page 40: Обзор Html 5

Ingate Development / TulaDev.NET 40

<DEVICE>

19.02.2011

• Доступ к веб-камере, микрофону, плееру, сканеру…

• Есть возможность захвата данных (объект StreamRecorder) и последующей работы с ними (например отправки на сервер посредством File API)

• На данный момент ни одна стабильная версия браузеров не поддерживает работу с тегом <device>

Page 41: Обзор Html 5

Ingate Development / TulaDev.NET 41

ПРОИЗВОДИТЕЛЬНОСТЬ

19.02.2011

Page 42: Обзор Html 5

Ingate Development / TulaDev.NET 42

WEB WORKERS

19.02.2011

• Перенос части клиентского кода в отдельный поток• При создании объекта Worker указывается путь к

исполняемому скрипту• Исполняемый скрипт вызывает метод postMessage• В этот момент у объекта Worker возникает событие

onmessage• Удобно использовать в сочетании с другими

рассмотренными ранее API: IndexedDB, WebSockets…

Page 43: Обзор Html 5

Ingate Development / TulaDev.NET 43

XHR LEVEL 2

19.02.2011

• Добавлено событие изменения прогресса• Поддерживается работа с бинарными

данными• Появилась поддержка кросс-доменных

запросов

Page 44: Обзор Html 5

Ingate Development / TulaDev.NET 44

NAVIGATION TIMING

19.02.2011

• На данный момент довольно сложно определить, почему страница загружается в браузере долго

• Профайлеры помогают не всегда• Navigation Timing – решение для измерения

скорости загрузки страницы• API предоставляет 2 объекта

performance.timing и performance.navigation

Page 45: Обзор Html 5

Ingate Development / TulaDev.NET 45

NAVIGATION TIMING

19.02.2011

Page 46: Обзор Html 5

Ingate Development / TulaDev.NET 46

ЭТО ВСЁ?

19.02.2011

Page 47: Обзор Html 5

Ingate Development / TulaDev.NET 47

ВОПРОСЫ

19.02.2011

Page 48: Обзор Html 5

ОБЗОР HTML 5

Сергей ЗвягинIngate Development

Twitter: @Bingo87

Специально для TulaDev.NET