90

Олег Мохов: Модель Отображения. Браузеры

  • Upload
    yandex

  • View
    2.085

  • Download
    1

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Олег Мохов: Модель Отображения. Браузеры
Page 2: Олег Мохов: Модель Отображения. Браузеры

Разработчик интерфейсов

Модель отображения

Олег Мохов

Page 3: Олег Мохов: Модель Отображения. Браузеры

Модель отображения

:3

1. Поток, контексты, позиционирование, браузерная математика

2. Особенности реализаций модели отображения в разных браузерах

3. Браузеры

Page 4: Олег Мохов: Модель Отображения. Браузеры

Принципы работы современных веб-браузеров

:4

Page 5: Олег Мохов: Модель Отображения. Браузеры

Принципы работы современных веб-браузеров

http://clck.ru/8aCyc

:4

Page 6: Олег Мохов: Модель Отображения. Браузеры

Механизм работы браузера

Page 7: Олег Мохов: Модель Отображения. Браузеры

Общая схема

Механизм работы браузера

Page 8: Олег Мохов: Модель Отображения. Браузеры

Общая схема

Networking

Механизм работы браузера

Page 9: Олег Мохов: Модель Отображения. Браузеры

Общая схема

Networking

Rendering

Механизм работы браузера

Page 10: Олег Мохов: Модель Отображения. Браузеры

Общая схема

Networking

Rendering

JavaScript

Механизм работы браузера

Page 11: Олег Мохов: Модель Отображения. Браузеры

Общая схема

Page 12: Олег Мохов: Модель Отображения. Браузеры

Архитектура браузера

:7

Page 13: Олег Мохов: Модель Отображения. Браузеры

Архитектура браузера

:7

Page 14: Олег Мохов: Модель Отображения. Браузеры

Networking

Page 15: Олег Мохов: Модель Отображения. Браузеры

Networking

:9

Page 16: Олег Мохов: Модель Отображения. Браузеры

Networking

:10

Page 17: Олег Мохов: Модель Отображения. Браузеры

Rendering

Page 18: Олег Мохов: Модель Отображения. Браузеры

Построение дерева

рендеринга

Схема работы модуля отображения

:12

Парсим HTML для построения

DOM дерева

Расстановка элементов дерева

Отрисовка дерева

рендеринга

Page 19: Олег Мохов: Модель Отображения. Браузеры

Пример работы (Webkit)

:13

Page 20: Олег Мохов: Модель Отображения. Браузеры

Пример работы (Firefox)

:14

Page 21: Олег Мохов: Модель Отображения. Браузеры

Rendering

:15

Page 22: Олег Мохов: Модель Отображения. Браузеры

Анализ документа

:16

Лексический анализДокумент Синтаксический

анализСинтаксическое

деревотокен

Page 23: Олег Мохов: Модель Отображения. Браузеры

Лексический анализ

:17

Сеть Токенизация Конструктор деревьев DOM

Скрипт

document.write

Page 24: Олег Мохов: Модель Отображения. Браузеры

Особенности обработки скриптов

:18

Page 25: Олег Мохов: Модель Отображения. Браузеры

<html>!<body>!Hello world!

</body>!</html>

HTML Example

:19

Page 26: Олег Мохов: Модель Отображения. Браузеры

Алгоритм построения дерева

:20

Page 27: Олег Мохов: Модель Отображения. Браузеры

Синтаксический анализ (особенности)

:21

1. Язык имеет "щадящий" характер. 2. В браузерах заложены механизмы обработки некоторых частых ошибок в коде HTML.

3. Цикл синтаксического анализа характеризуется возможностью повторного вхождения. Исходный документ обычно не меняется в процессе анализа, однако в случае HTML теги скрипта, содержащие document.write, могут добавлять новые токены, поэтому исходный код может меняться.

Page 28: Олег Мохов: Модель Отображения. Браузеры

Ошибки синтаксиса

:22

1. Использование добавляемого элемента явно запрещено одним из внешних тегов. В этом случае необходимо закрыть все теги, кроме того, который запрещает использование данного элемента, и добавить этот элемент в самом конце.?

2. Элемент нельзя добавить напрямую. Возможно, автор документа забыл вставить тег между элементами (или такой тег необязателен). Это касается тегов HTML, HEAD, BODY, TBODY, TR, TD, LI.?

3. Блочный элемент добавлен внутрь строчного. Необходимо закрыть все строчные элементы вплоть до следующего в иерархии блочного элемента.?

4. Если это не помогает, необходимо закрывать элементы, пока не появится возможность добавить нужный элемент или проигнорировать тег.?

Page 29: Олег Мохов: Модель Отображения. Браузеры

<table>! <table>! <tr><td>inner table</td></tr>! </table>! <tr><td>outer table</td></tr>!</table>!

HTML Example

:23

Page 30: Олег Мохов: Модель Отображения. Браузеры

<table>! <tr><td>outer table</td></tr>!</table>!<table>! <tr><td>inner table</td></tr>!</table>!

HTML Example

:24

Page 31: Олег Мохов: Модель Отображения. Браузеры

if (m_inStrayTableContent && localName == tableTag)! popBlock(tableTag);!

HTML Example

:25

Page 32: Олег Мохов: Модель Отображения. Браузеры

Деревья

Page 33: Олег Мохов: Модель Отображения. Браузеры

<!doctype html>!<html>! <title>Example</title>! <style>! p:last-child { display: none; }! </style>! <div>! <h1>Женское окончание потенциально.</h1> ! <p>Добавлю, что гидродинамический удар конвенционален.</p>! <p>Плазма, в отличие от классического случая, дает комплекс.</p>! </div>!</html>

HTML Example

:27

Page 34: Олег Мохов: Модель Отображения. Браузеры

Синтаксическое дерево документа

:28

Page 35: Олег Мохов: Модель Отображения. Браузеры

DOM

:29

HTMLHtmlElement

HTMLBodyElement

HTMLDivElement

HTMLHeader1Element HTMLParagraphElement

HTMLParagraphElement

Page 36: Олег Мохов: Модель Отображения. Браузеры

Render tree

:30

Page 37: Олег Мохов: Модель Отображения. Браузеры

Render tree vs DOM

:31

Page 38: Олег Мохов: Модель Отображения. Браузеры

Render tree vs DOM

:31

Page 39: Олег Мохов: Модель Отображения. Браузеры

Render tree vs DOM

:31

• не все блоки из DOM попадают в дерево отображения;

Page 40: Олег Мохов: Модель Отображения. Браузеры

Render tree vs DOM

:31

• не все блоки из DOM попадают в дерево отображения;• в некоторых случаях в render tree будет создаваться

Page 41: Олег Мохов: Модель Отображения. Браузеры

Render tree vs DOM

:31

• не все блоки из DOM попадают в дерево отображения;• в некоторых случаях в render tree будет создаватьсябольше блоков, чем есть в DOM;

Page 42: Олег Мохов: Модель Отображения. Браузеры

CSS

Page 43: Олег Мохов: Модель Отображения. Браузеры

.foo {!width: 10em!height: 10em;!background: red;!

}!?.bar {!width: 10bem;!height: 10em;!background: red;!?

.baz {!width: 10em;!height: 10em;!background: red;!

}

CSS Example

:33

Page 44: Олег Мохов: Модель Отображения. Браузеры

.foo {!width: 10em!height: 10em;!background: red;!

}!?.bar {!width: 10bem;!height: 10em;!background: red;!?

.baz {!width: 10em;!height: 10em;!background: red;!

}

CSS Example

:34

Page 45: Олег Мохов: Модель Отображения. Браузеры

.foo {!width: 10em!height: 10em;!background: red;!

}!?.bar {!width: 10bem;!height: 10em;!background: red;!?

.baz {!width: 10em;!height: 10em;!background: red;!

}

CSS Example

:35

Page 46: Олег Мохов: Модель Отображения. Браузеры

.foo {!width: 10em!height: 10em;!background: red;!

}!?.bar {!width: 10bem;!height: 10em;!background: red;!?

.baz {!width: 10em;!height: 10em;!background: red;!

}

CSS Example

:36

Page 47: Олег Мохов: Модель Отображения. Браузеры

.foo {!background: red;!

}!?.bar {!height: 10em;!background: red;!

}

CSS Example

:37

Page 48: Олег Мохов: Модель Отображения. Браузеры

Reflow и Repaint

Page 49: Олег Мохов: Модель Отображения. Браузеры

Компоновка и отрисовка

Page 50: Олег Мохов: Модель Отображения. Браузеры

Reflow

:40

Page 51: Олег Мохов: Модель Отображения. Браузеры

Reflow

:40

Глобальный Reflow

Page 52: Олег Мохов: Модель Отображения. Браузеры

Reflow

:40

Глобальный Reflow

Page 53: Олег Мохов: Модель Отображения. Браузеры

Глобальный Reflow

:41

Page 54: Олег Мохов: Модель Отображения. Браузеры

Глобальный Reflow

:41

• Первоначальное отображение страницы

Page 55: Олег Мохов: Модель Отображения. Браузеры

Глобальный Reflow

:41

• Первоначальное отображение страницы• изменение размеров окна бразуера

Page 56: Олег Мохов: Модель Отображения. Браузеры

Глобальный Reflow

:41

• Первоначальное отображение страницы• изменение размеров окна бразуера• изменение размеров шрифта в браузере

Page 57: Олег Мохов: Модель Отображения. Браузеры

Глобальный Reflow

:41

• Первоначальное отображение страницы• изменение размеров окна бразуера• изменение размеров шрифта в браузере• и т.п

Page 58: Олег Мохов: Модель Отображения. Браузеры

Инкрементеный Reflow

:42

Page 59: Олег Мохов: Модель Отображения. Браузеры

Инкрементеный Reflow

:42

• вставка новых элементов в DOM

Page 60: Олег Мохов: Модель Отображения. Браузеры

Инкрементеный Reflow

:42

• вставка новых элементов в DOM• изменение атрибутов (например, смена класса)

Page 61: Олег Мохов: Модель Отображения. Браузеры

Инкрементеный Reflow

:42

• вставка новых элементов в DOM• изменение атрибутов (например, смена класса)

• смена состояния

Page 62: Олег Мохов: Модель Отображения. Браузеры

Инкрементеный Reflow

:42

• вставка новых элементов в DOM• изменение атрибутов (например, смена класса)

• смена состояния• наведение курсора

Page 63: Олег Мохов: Модель Отображения. Браузеры

Инкрементеный Reflow

:42

• вставка новых элементов в DOM• изменение атрибутов (например, смена класса)

• смена состояния• наведение курсора• выбор чекбокса

Page 64: Олег Мохов: Модель Отображения. Браузеры

Инкрементеный Reflow

:42

• вставка новых элементов в DOM• изменение атрибутов (например, смена класса)

• смена состояния• наведение курсора• выбор чекбокса• фокус в поле текстового ввода

Page 65: Олег Мохов: Модель Отображения. Браузеры

Инкрементеный Reflow

:42

• вставка новых элементов в DOM• изменение атрибутов (например, смена класса)

• смена состояния• наведение курсора• выбор чекбокса• фокус в поле текстового ввода

• и т.д

Page 66: Олег Мохов: Модель Отображения. Браузеры

:43

Page 67: Олег Мохов: Модель Отображения. Браузеры

:43

Page 68: Олег Мохов: Модель Отображения. Браузеры

Порядок отрисовки

:44

Page 69: Олег Мохов: Модель Отображения. Браузеры

Порядок отрисовки

:44

• Цвет фона

Page 70: Олег Мохов: Модель Отображения. Браузеры

Порядок отрисовки

:44

• Цвет фона• Фоновое изображение

Page 71: Олег Мохов: Модель Отображения. Браузеры

Порядок отрисовки

:44

• Цвет фона• Фоновое изображение• Рамка

Page 72: Олег Мохов: Модель Отображения. Браузеры

Порядок отрисовки

:44

• Цвет фона• Фоновое изображение• Рамка• Дочерние объекты

Page 73: Олег Мохов: Модель Отображения. Браузеры

Порядок отрисовки

:44

• Цвет фона• Фоновое изображение• Рамка• Дочерние объекты• Внешние границы

Page 74: Олег Мохов: Модель Отображения. Браузеры

JavaScript

Page 75: Олег Мохов: Модель Отображения. Браузеры

JavaScript

:46

abstract syntax tree

Page 76: Олег Мохов: Модель Отображения. Браузеры

Оптимизации в JIT

:47

Page 77: Олег Мохов: Модель Отображения. Браузеры

Оптимизации в JIT

Hidden Classes

:47

Page 78: Олег Мохов: Модель Отображения. Браузеры

Оптимизации в JIT

Hidden ClassesInline Cache

:47

Page 79: Олег Мохов: Модель Отображения. Браузеры

Оптимизации в JIT

Hidden ClassesInline CacheInlining

:47

Page 80: Олег Мохов: Модель Отображения. Браузеры

Оптимизации в JIT

Hidden ClassesInline CacheInliningDead Code Elimination, DCE

:47

Page 81: Олег Мохов: Модель Отображения. Браузеры

Оптимизации в JIT

Hidden ClassesInline CacheInliningDead Code Elimination, DCEGlobal Code Motion / Global Value Numbering

:47

Page 82: Олег Мохов: Модель Отображения. Браузеры

Заключение

Page 83: Олег Мохов: Модель Отображения. Браузеры

Домашка

Page 84: Олег Мохов: Модель Отображения. Браузеры

Домашка

:50

Page 85: Олег Мохов: Модель Отображения. Браузеры

Домашка

1. Три колонки

:50

Page 86: Олег Мохов: Модель Отображения. Браузеры

Домашка

1. Три колонки2. Блок по середине

:50

Page 87: Олег Мохов: Модель Отображения. Браузеры

Домашка

1. Три колонки2. Блок по середине3. Прибытый подвал

:50

Page 88: Олег Мохов: Модель Отображения. Браузеры

Домашка

1. Три колонки2. Блок по середине3. Прибытый подвал4*. Сдвигающаяся менюшка

:50

Page 89: Олег Мохов: Модель Отображения. Браузеры

Домашка

1. Три колонки2. Блок по середине3. Прибытый подвал4*. Сдвигающаяся менюшка5*. Три кнопки всегда одинаковой длины

:50

Page 90: Олег Мохов: Модель Отображения. Браузеры

Разработчик интерфейсов

[email protected]

Спасибо

Олег Мохов