SlideShare a Scribd company logo
Механизм
работы
браузера
Роман Комаров
Разработчик Интерфейсов
Основная задача браузера:
    запросить и отобразить
    данные


3
“How browsers work”

    Tali Garsiel




4
Движок отображения

 •   Парсинг HTML — построение DOM-дерева.
 •   Построение render tree (дерева отображения).
 •   Reflow / Layout (Компоновка).
 •   Repaint (Отрисовка).
Парсинг HTML и CSS
Основа популярности
    HTML&CSS — прощающая
    обработка ошибок


7
Парсинг HTML и CSS




    • браузеры всеядны;
    • последствия ошибок часто не очевидны;
    • валидатор — инструмент, не более.




8
Можно писать невалидный HTML —
    браузеры это поймут:
     <p>Параграф не закрылся, но это нормально

     <blah>
       Не описанный в спецификациях тег — тоже ок.
     </blah>

     <ul>
       <li>Элементы списка не обязаны закрываться
       <li>и иногда это может быть даже удобно:
         <ul>
           <li>Простой вложенный список
               </ul>
           <li>А это исходный список
         </ul>
     </ul>

9
Валидатор — не «закон».
     Но с валидным кодом
     легче искать свои ошибки.


10
Парсинг HTML и CSS




     • неверный HTML может заметно изменить структуру
       конечного DOM;
     • неверный CSS может или не отобразиться или «съесть»
       половину стилей.




11
Ошибочный HTML может заметно
     изменить структуру конечного DOM
     Было:

        <table>
          <td>Ячейка таблицы</td>
          <div>Внезапно, див</div>
        </table>


     Стало:

        <div>Внезапно, див</div>
        <table>
          <tbody>
            <tr>
              <td>Ячейка таблицы</td>
            </tr>
          </tbody>
        </table>
12
Неверный CSS не отобразится
     или «съест» половину стилей
       .foo {
           width: 10em
           height: 10em;
           background: red;
       }
       .bar {
           width: 10bem;
           height: 10em;
           background: red;

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

13
Неверный CSS не отобразится
     или «съест» половину стилей
       .foo {
           width: 10em
           height: 10em;
           background: red;
       }
       .bar {
           width: 10bem;
           height: 10em;
           background: red;

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

14
Неверный CSS не отобразится
     или «съест» половину стилей
       .foo {
           background: red;
       }
       .bar {
           height: 10em;
           background: red;
       }




15
Порядок обработки

• Синхронность скриптов
• Параллельная загрузка остальных данных
• Таблицы стилей
Render tree
Render tree


     Render tree может отличаться от DOM-дерева:

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

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

     • CSS уже начинает оказывать влияние.



18
Не все блоки из DOM попадают в
     дерево отображения
       <head>
         <title>Шапка не отобразится</title>
       </head>

       <body>
         <noscript>
           Если JS работает — noscript не отобразится
         </noscript>
       </body>

       <div style="display: none;">
           Некоторые стили «выключают» блоки из дерева
           отображения
       </div>


19
В некоторых случаях в render tree
     будет создаваться больше блоков,
     чем есть в DOM
       <div>
         Какой-то текстовый контент
         <div>Блочный элемент</div>
         Продолжение текстового контента
       </div>



       <div>
         <блок>Какой-то текстовый контент</блок>
         <div>Блочный элемент</div>
         <блок>Продолжение текстового контента</блок>
       </div>


20
Применение стилей
Порядок применения стилей




     •   стили браузера
     •   стили пользователя
     •   стили автора
     •   важные стили автора
     •   важные стили пользователя




22
Специфичность


     • *                         0,0,0,0,0
     • div, :first-line          0,0,0,0,1
     • .some-class, [rel]        0,0,0,1,0
     • #SomeID                   0,0,1,0,0
     • style=""                  0,1,0,0,0
     • div        + !important   1,0,0,0,1
     • style="" + !important     1,1,0,0,0



23
Reflow
Reflow




     • глобальный reflow

     • инкрементный reflow




25
Глобальный Reflow




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




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



     • вставка новых элементов в DOM
     • изменение атрибутов (например, смена класса)
     • смена состояния
       – наведение курсора на элемент
       – выбор чекбокса
       – фокус в поле текстового ввода
     • и т.д.



27
Рассчёт ширины




     • Для auto и процентных величин нужно знать доступную
       ширину родителя.

     • Есть несколько блочных моделей: в стандартной в ширину
       не входят маджины, паддинги и бордеры.




28
Потоки




     • Абсолютное позиционирование
     • Стандартный поток
     • «Плавающий» поток
     • …и нельзя забывать про inline-block




29
Стандартный поток




30
Абсолютное позиционирование




31
Плавающие блоки




32
Инлайновые блоки




33
Repaint
Порядок repaint



     •   цвет фона
     •   фоновое изображение
     •   граница
     •   тень
     •   вложенные элементы
     •   outline




35
Стековый контекст



     z-index и всё такое.


     Подробнее:

     http://dev.opera.com/articles/view/37-css-absolute-and-fixed-
     positioning/




36
Чем меньше область reflow
     или repaint и чем реже
     происходит их пересчёт —
     тем лучше.

37
Ссылки




     • How browsers work и перевод: как работают браузеры
     • Статья про позиционирование и стековый контекст
     • How Browsers Lay Out Web Pages




38
Роман Комаров

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




     kizu@yandex-team.ru
     @ki_zu




Спасибо

More Related Content

What's hot

Svyatoslav Login "360 View of XSS"
Svyatoslav Login "360 View of XSS"Svyatoslav Login "360 View of XSS"
Svyatoslav Login "360 View of XSS"
Fwdays
 
Cпецкурс 2014, занятие 9 (1 часть). Языки разметки
Cпецкурс 2014, занятие 9 (1 часть). Языки разметкиCпецкурс 2014, занятие 9 (1 часть). Языки разметки
Cпецкурс 2014, занятие 9 (1 часть). Языки разметки
7bits
 
Osvaivaem 250px max_shirshin
Osvaivaem 250px max_shirshinOsvaivaem 250px max_shirshin
Osvaivaem 250px max_shirshinyaevents
 
Стили на пользу пользователю - MinskCSS #1 15 декабря
Стили на пользу пользователю - MinskCSS #1 15 декабряСтили на пользу пользователю - MinskCSS #1 15 декабря
Стили на пользу пользователю - MinskCSS #1 15 декабря
Vasiliy Vanchuck
 
Создание темы «с нуля»
Создание темы «с нуля»Создание темы «с нуля»
Создание темы «с нуля»
Artem Shymko
 
Робота з CSS. Методології, інструменти, оптимізація
Робота з CSS. Методології, інструменти, оптимізаціяРобота з CSS. Методології, інструменти, оптимізація
Робота з CSS. Методології, інструменти, оптимізація
Stfalcon Meetups
 
Стажировка-2014, занятие 7. Языки разметки, HTML5, CSS3
Стажировка-2014, занятие 7. Языки разметки, HTML5, CSS3Стажировка-2014, занятие 7. Языки разметки, HTML5, CSS3
Стажировка-2014, занятие 7. Языки разметки, HTML5, CSS37bits
 
Максим Ширшин "Яндекс.Панель: осваиваем 250px"
Максим Ширшин "Яндекс.Панель: осваиваем 250px"Максим Ширшин "Яндекс.Панель: осваиваем 250px"
Максим Ширшин "Яндекс.Панель: осваиваем 250px"
Yandex
 
СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2
СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2
СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2
QADay
 
Css part1
Css part1Css part1
Css part1ISsoft
 
State of the Standardized Web. YaC 2014
State of theStandardized Web. YaC 2014State of theStandardized Web. YaC 2014
State of the Standardized Web. YaC 2014
Yandex
 
Стажировка-2013, разработчики, занятие 8. Html, CSS
Стажировка-2013, разработчики, занятие 8. Html, CSSСтажировка-2013, разработчики, занятие 8. Html, CSS
Стажировка-2013, разработчики, занятие 8. Html, CSS7bits
 
18. синтаксис css
18. синтаксис css18. синтаксис css
18. синтаксис css
Sergei Dubrov
 
Css part2
Css part2Css part2
Css part2ISsoft
 
Basics of modern markup
Basics of modern markupBasics of modern markup
Basics of modern markup
Alex Nesterenko
 
Приёмы верстки страниц с использованием HTML + CSS
Приёмы верстки страниц с использованием HTML + CSSПриёмы верстки страниц с использованием HTML + CSS
Приёмы верстки страниц с использованием HTML + CSS
Denis Latushkin
 
Разработка Rich Text Editor: проблемы и решения / Егор Яковишен (Setka)
Разработка Rich Text Editor: проблемы и решения / Егор Яковишен (Setka)Разработка Rich Text Editor: проблемы и решения / Егор Яковишен (Setka)
Разработка Rich Text Editor: проблемы и решения / Егор Яковишен (Setka)
Ontico
 
Создание сайта. Начало (TemplateMonster Russia)
Создание сайта. Начало (TemplateMonster Russia)Создание сайта. Начало (TemplateMonster Russia)
Создание сайта. Начало (TemplateMonster Russia)my1site
 
Иван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизацияИван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизация
Yandex
 
Web весна 2013 лекция 8
Web весна 2013 лекция 8Web весна 2013 лекция 8
Web весна 2013 лекция 8Technopark
 

What's hot (20)

Svyatoslav Login "360 View of XSS"
Svyatoslav Login "360 View of XSS"Svyatoslav Login "360 View of XSS"
Svyatoslav Login "360 View of XSS"
 
Cпецкурс 2014, занятие 9 (1 часть). Языки разметки
Cпецкурс 2014, занятие 9 (1 часть). Языки разметкиCпецкурс 2014, занятие 9 (1 часть). Языки разметки
Cпецкурс 2014, занятие 9 (1 часть). Языки разметки
 
Osvaivaem 250px max_shirshin
Osvaivaem 250px max_shirshinOsvaivaem 250px max_shirshin
Osvaivaem 250px max_shirshin
 
Стили на пользу пользователю - MinskCSS #1 15 декабря
Стили на пользу пользователю - MinskCSS #1 15 декабряСтили на пользу пользователю - MinskCSS #1 15 декабря
Стили на пользу пользователю - MinskCSS #1 15 декабря
 
Создание темы «с нуля»
Создание темы «с нуля»Создание темы «с нуля»
Создание темы «с нуля»
 
Робота з CSS. Методології, інструменти, оптимізація
Робота з CSS. Методології, інструменти, оптимізаціяРобота з CSS. Методології, інструменти, оптимізація
Робота з CSS. Методології, інструменти, оптимізація
 
Стажировка-2014, занятие 7. Языки разметки, HTML5, CSS3
Стажировка-2014, занятие 7. Языки разметки, HTML5, CSS3Стажировка-2014, занятие 7. Языки разметки, HTML5, CSS3
Стажировка-2014, занятие 7. Языки разметки, HTML5, CSS3
 
Максим Ширшин "Яндекс.Панель: осваиваем 250px"
Максим Ширшин "Яндекс.Панель: осваиваем 250px"Максим Ширшин "Яндекс.Панель: осваиваем 250px"
Максим Ширшин "Яндекс.Панель: осваиваем 250px"
 
СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2
СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2
СВЯТ ЛОГИН «Як провести пошук на xss атаку» Online QADay 2020 #2
 
Css part1
Css part1Css part1
Css part1
 
State of the Standardized Web. YaC 2014
State of theStandardized Web. YaC 2014State of theStandardized Web. YaC 2014
State of the Standardized Web. YaC 2014
 
Стажировка-2013, разработчики, занятие 8. Html, CSS
Стажировка-2013, разработчики, занятие 8. Html, CSSСтажировка-2013, разработчики, занятие 8. Html, CSS
Стажировка-2013, разработчики, занятие 8. Html, CSS
 
18. синтаксис css
18. синтаксис css18. синтаксис css
18. синтаксис css
 
Css part2
Css part2Css part2
Css part2
 
Basics of modern markup
Basics of modern markupBasics of modern markup
Basics of modern markup
 
Приёмы верстки страниц с использованием HTML + CSS
Приёмы верстки страниц с использованием HTML + CSSПриёмы верстки страниц с использованием HTML + CSS
Приёмы верстки страниц с использованием HTML + CSS
 
Разработка Rich Text Editor: проблемы и решения / Егор Яковишен (Setka)
Разработка Rich Text Editor: проблемы и решения / Егор Яковишен (Setka)Разработка Rich Text Editor: проблемы и решения / Егор Яковишен (Setka)
Разработка Rich Text Editor: проблемы и решения / Егор Яковишен (Setka)
 
Создание сайта. Начало (TemplateMonster Russia)
Создание сайта. Начало (TemplateMonster Russia)Создание сайта. Начало (TemplateMonster Russia)
Создание сайта. Начало (TemplateMonster Russia)
 
Иван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизацияИван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизация
 
Web весна 2013 лекция 8
Web весна 2013 лекция 8Web весна 2013 лекция 8
Web весна 2013 лекция 8
 

Similar to Роман Комаров — «Механизм работы браузера»

DOM-шаблонизаторы – не только "быстро"
DOM-шаблонизаторы – не только "быстро"DOM-шаблонизаторы – не только "быстро"
DOM-шаблонизаторы – не только "быстро"
Roman Dvornov
 
Олег Мохов: Модель Отображения. Браузеры
Олег Мохов: Модель Отображения. БраузерыОлег Мохов: Модель Отображения. Браузеры
Олег Мохов: Модель Отображения. БраузерыYandex
 
Производительность Client-Side
Производительность Client-SideПроизводительность Client-Side
Производительность Client-SideAleksandr Boichenko
 
Современная верстка с адекватными трудозатратами Максим Тимохин, технолог, И...
 Современная верстка с адекватными трудозатратами Максим Тимохин, технолог, И... Современная верстка с адекватными трудозатратами Максим Тимохин, технолог, И...
Современная верстка с адекватными трудозатратами Максим Тимохин, технолог, И...
Тарасов Константин
 
CSSO — минимизируем CSS
 CSSO — минимизируем CSS CSSO — минимизируем CSS
CSSO — минимизируем CSS
Roman Dvornov
 
Лекция 4 Client-side
Лекция 4 Client-sideЛекция 4 Client-side
Лекция 4 Client-side
Technosphere1
 
Денис Бугарчев "Внедрение идей БЭМ на не-Яндекс проект"
Денис Бугарчев "Внедрение идей БЭМ на не-Яндекс проект"Денис Бугарчев "Внедрение идей БЭМ на не-Яндекс проект"
Денис Бугарчев "Внедрение идей БЭМ на не-Яндекс проект"
Yandex
 
Denis Bugarchev
Denis BugarchevDenis Bugarchev
Denis Bugarchev
yaevents
 
J query tutorial-for-beginners-1.0.0
J query tutorial-for-beginners-1.0.0J query tutorial-for-beginners-1.0.0
J query tutorial-for-beginners-1.0.0
Сергей Ядров
 
Мастер-класс: Разрабатываем сайт с нуля на полном стеке БЭМ-технологий — Жека...
Мастер-класс: Разрабатываем сайт с нуля на полном стеке БЭМ-технологий — Жека...Мастер-класс: Разрабатываем сайт с нуля на полном стеке БЭМ-технологий — Жека...
Мастер-класс: Разрабатываем сайт с нуля на полном стеке БЭМ-технологий — Жека...
Yandex
 
Mihail Korepanov
Mihail KorepanovMihail Korepanov
Mihail Korepanov
yaevents
 
Михаил Корепанов "Скорость рендеринга страниц: исследования, замеры, автомати...
Михаил Корепанов "Скорость рендеринга страниц: исследования, замеры, автомати...Михаил Корепанов "Скорость рендеринга страниц: исследования, замеры, автомати...
Михаил Корепанов "Скорость рендеринга страниц: исследования, замеры, автомати...
Yandex
 
Иван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизацияИван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизацияYandex
 
Оптимизация CSS
Оптимизация CSSОптимизация CSS
Оптимизация CSS
Vasya Petrov
 
Создание веб-сайта. Курс молодого бойца
Создание веб-сайта. Курс молодого бойцаСоздание веб-сайта. Курс молодого бойца
Создание веб-сайта. Курс молодого бойца
Anton Cherepov
 
Блоки как элементы макета сайта
Блоки как элементы макета сайтаБлоки как элементы макета сайта
Блоки как элементы макета сайта
Sergei Dubrov
 
basis.js - почему я не бросил разрабатывать свой фреймворк
basis.js - почему я не бросил разрабатывать свой фреймворкbasis.js - почему я не бросил разрабатывать свой фреймворк
basis.js - почему я не бросил разрабатывать свой фреймворк
Roman Dvornov
 
Олег Мохов "Куда идём мы с Пятачком, или О том, куда движется вёрстка и верст...
Олег Мохов "Куда идём мы с Пятачком, или О том, куда движется вёрстка и верст...Олег Мохов "Куда идём мы с Пятачком, или О том, куда движется вёрстка и верст...
Олег Мохов "Куда идём мы с Пятачком, или О том, куда движется вёрстка и верст...
Yandex
 

Similar to Роман Комаров — «Механизм работы браузера» (20)

DOM-шаблонизаторы – не только "быстро"
DOM-шаблонизаторы – не только "быстро"DOM-шаблонизаторы – не только "быстро"
DOM-шаблонизаторы – не только "быстро"
 
Олег Мохов: Модель Отображения. Браузеры
Олег Мохов: Модель Отображения. БраузерыОлег Мохов: Модель Отображения. Браузеры
Олег Мохов: Модель Отображения. Браузеры
 
Производительность Client-Side
Производительность Client-SideПроизводительность Client-Side
Производительность Client-Side
 
Современная верстка с адекватными трудозатратами Максим Тимохин, технолог, И...
 Современная верстка с адекватными трудозатратами Максим Тимохин, технолог, И... Современная верстка с адекватными трудозатратами Максим Тимохин, технолог, И...
Современная верстка с адекватными трудозатратами Максим Тимохин, технолог, И...
 
633942
633942633942
633942
 
CSSO — минимизируем CSS
 CSSO — минимизируем CSS CSSO — минимизируем CSS
CSSO — минимизируем CSS
 
Лекция 4 Client-side
Лекция 4 Client-sideЛекция 4 Client-side
Лекция 4 Client-side
 
Little Service in 2h
Little Service in 2hLittle Service in 2h
Little Service in 2h
 
Денис Бугарчев "Внедрение идей БЭМ на не-Яндекс проект"
Денис Бугарчев "Внедрение идей БЭМ на не-Яндекс проект"Денис Бугарчев "Внедрение идей БЭМ на не-Яндекс проект"
Денис Бугарчев "Внедрение идей БЭМ на не-Яндекс проект"
 
Denis Bugarchev
Denis BugarchevDenis Bugarchev
Denis Bugarchev
 
J query tutorial-for-beginners-1.0.0
J query tutorial-for-beginners-1.0.0J query tutorial-for-beginners-1.0.0
J query tutorial-for-beginners-1.0.0
 
Мастер-класс: Разрабатываем сайт с нуля на полном стеке БЭМ-технологий — Жека...
Мастер-класс: Разрабатываем сайт с нуля на полном стеке БЭМ-технологий — Жека...Мастер-класс: Разрабатываем сайт с нуля на полном стеке БЭМ-технологий — Жека...
Мастер-класс: Разрабатываем сайт с нуля на полном стеке БЭМ-технологий — Жека...
 
Mihail Korepanov
Mihail KorepanovMihail Korepanov
Mihail Korepanov
 
Михаил Корепанов "Скорость рендеринга страниц: исследования, замеры, автомати...
Михаил Корепанов "Скорость рендеринга страниц: исследования, замеры, автомати...Михаил Корепанов "Скорость рендеринга страниц: исследования, замеры, автомати...
Михаил Корепанов "Скорость рендеринга страниц: исследования, замеры, автомати...
 
Иван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизацияИван Карев — Клиентская оптимизация
Иван Карев — Клиентская оптимизация
 
Оптимизация CSS
Оптимизация CSSОптимизация CSS
Оптимизация CSS
 
Создание веб-сайта. Курс молодого бойца
Создание веб-сайта. Курс молодого бойцаСоздание веб-сайта. Курс молодого бойца
Создание веб-сайта. Курс молодого бойца
 
Блоки как элементы макета сайта
Блоки как элементы макета сайтаБлоки как элементы макета сайта
Блоки как элементы макета сайта
 
basis.js - почему я не бросил разрабатывать свой фреймворк
basis.js - почему я не бросил разрабатывать свой фреймворкbasis.js - почему я не бросил разрабатывать свой фреймворк
basis.js - почему я не бросил разрабатывать свой фреймворк
 
Олег Мохов "Куда идём мы с Пятачком, или О том, куда движется вёрстка и верст...
Олег Мохов "Куда идём мы с Пятачком, или О том, куда движется вёрстка и верст...Олег Мохов "Куда идём мы с Пятачком, или О том, куда движется вёрстка и верст...
Олег Мохов "Куда идём мы с Пятачком, или О том, куда движется вёрстка и верст...
 

More from Yandex

Предсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of TanksПредсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of Tanks
Yandex
 
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Yandex
 
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаСтруктурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Yandex
 
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаПредставление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Yandex
 
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Yandex
 
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Yandex
 
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Yandex
 
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Yandex
 
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Yandex
 
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Yandex
 
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Yandex
 
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Yandex
 
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Yandex
 
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Yandex
 
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Yandex
 
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Yandex
 
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Yandex
 
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Yandex
 
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Yandex
 
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Yandex
 

More from Yandex (20)

Предсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of TanksПредсказание оттока игроков из World of Tanks
Предсказание оттока игроков из World of Tanks
 
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
Как принять/организовать работу по поисковой оптимизации сайта, Сергей Царик,...
 
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров ЯндексаСтруктурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
Структурированные данные, Юлия Тихоход, лекция в Школе вебмастеров Яндекса
 
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров ЯндексаПредставление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
Представление сайта в поиске, Сергей Лысенко, лекция в Школе вебмастеров Яндекса
 
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
Плохие методы продвижения сайта, Екатерины Гладких, лекция в Школе вебмастеро...
 
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
Основные принципы ранжирования, Сергей Царик и Антон Роменский, лекция в Школ...
 
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
Основные принципы индексирования сайта, Александр Смирнов, лекция в Школе веб...
 
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
Мобильное приложение: как и зачем, Александр Лукин, лекция в Школе вебмастеро...
 
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
Сайты на мобильных устройствах, Олег Ножичкин, лекция в Школе вебмастеров Янд...
 
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
Качественная аналитика сайта, Юрий Батиевский, лекция в Школе вебмастеров Янд...
 
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
Что можно и что нужно измерять на сайте, Петр Аброськин, лекция в Школе вебма...
 
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
Как правильно поставить ТЗ на создание сайта, Алексей Бородкин, лекция в Школ...
 
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеровКак защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
Как защитить свой сайт, Пётр Волков, лекция в Школе вебмастеров
 
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
Как правильно составить структуру сайта, Дмитрий Сатин, лекция в Школе вебмас...
 
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
Технические особенности создания сайта, Дмитрий Васильева, лекция в Школе веб...
 
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
Конструкторы для отдельных элементов сайта, Елена Першина, лекция в Школе веб...
 
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
Контент для интернет-магазинов, Катерина Ерошина, лекция в Школе вебмастеров ...
 
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
Как написать хороший текст для сайта, Катерина Ерошина, лекция в Школе вебмас...
 
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
Usability и дизайн - как не помешать пользователю, Алексей Иванов, лекция в Ш...
 
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
Cайт. Зачем он и каким должен быть, Алексей Иванов, лекция в Школе вебмастеро...
 

Роман Комаров — «Механизм работы браузера»

  • 1.
  • 3. Основная задача браузера: запросить и отобразить данные 3
  • 4. “How browsers work” Tali Garsiel 4
  • 5. Движок отображения • Парсинг HTML — построение DOM-дерева. • Построение render tree (дерева отображения). • Reflow / Layout (Компоновка). • Repaint (Отрисовка).
  • 7. Основа популярности HTML&CSS — прощающая обработка ошибок 7
  • 8. Парсинг HTML и CSS • браузеры всеядны; • последствия ошибок часто не очевидны; • валидатор — инструмент, не более. 8
  • 9. Можно писать невалидный HTML — браузеры это поймут: <p>Параграф не закрылся, но это нормально <blah> Не описанный в спецификациях тег — тоже ок. </blah> <ul> <li>Элементы списка не обязаны закрываться <li>и иногда это может быть даже удобно: <ul> <li>Простой вложенный список </ul> <li>А это исходный список </ul> </ul> 9
  • 10. Валидатор — не «закон». Но с валидным кодом легче искать свои ошибки. 10
  • 11. Парсинг HTML и CSS • неверный HTML может заметно изменить структуру конечного DOM; • неверный CSS может или не отобразиться или «съесть» половину стилей. 11
  • 12. Ошибочный HTML может заметно изменить структуру конечного DOM Было: <table> <td>Ячейка таблицы</td> <div>Внезапно, див</div> </table> Стало: <div>Внезапно, див</div> <table> <tbody> <tr> <td>Ячейка таблицы</td> </tr> </tbody> </table> 12
  • 13. Неверный CSS не отобразится или «съест» половину стилей .foo { width: 10em height: 10em; background: red; } .bar { width: 10bem; height: 10em; background: red; .baz { width: 10em; height: 10em; background: red; } 13
  • 14. Неверный CSS не отобразится или «съест» половину стилей .foo { width: 10em height: 10em; background: red; } .bar { width: 10bem; height: 10em; background: red; .baz { width: 10em; height: 10em; background: red; } 14
  • 15. Неверный CSS не отобразится или «съест» половину стилей .foo { background: red; } .bar { height: 10em; background: red; } 15
  • 16. Порядок обработки • Синхронность скриптов • Параллельная загрузка остальных данных • Таблицы стилей
  • 18. Render tree Render tree может отличаться от DOM-дерева: • не все блоки из DOM попадают в дерево отображения; • в некоторых случаях в render tree будет создаваться больше блоков, чем есть в DOM; • CSS уже начинает оказывать влияние. 18
  • 19. Не все блоки из DOM попадают в дерево отображения <head> <title>Шапка не отобразится</title> </head> <body> <noscript> Если JS работает — noscript не отобразится </noscript> </body> <div style="display: none;"> Некоторые стили «выключают» блоки из дерева отображения </div> 19
  • 20. В некоторых случаях в render tree будет создаваться больше блоков, чем есть в DOM <div> Какой-то текстовый контент <div>Блочный элемент</div> Продолжение текстового контента </div> <div> <блок>Какой-то текстовый контент</блок> <div>Блочный элемент</div> <блок>Продолжение текстового контента</блок> </div> 20
  • 22. Порядок применения стилей • стили браузера • стили пользователя • стили автора • важные стили автора • важные стили пользователя 22
  • 23. Специфичность • * 0,0,0,0,0 • div, :first-line 0,0,0,0,1 • .some-class, [rel] 0,0,0,1,0 • #SomeID 0,0,1,0,0 • style="" 0,1,0,0,0 • div + !important 1,0,0,0,1 • style="" + !important 1,1,0,0,0 23
  • 25. Reflow • глобальный reflow • инкрементный reflow 25
  • 26. Глобальный Reflow • первоначальное отображение страницы • изменение размеров окна браузера • изменение размеров шрифта в браузере • и т.п. 26
  • 27. Инкрементный Reflow • вставка новых элементов в DOM • изменение атрибутов (например, смена класса) • смена состояния – наведение курсора на элемент – выбор чекбокса – фокус в поле текстового ввода • и т.д. 27
  • 28. Рассчёт ширины • Для auto и процентных величин нужно знать доступную ширину родителя. • Есть несколько блочных моделей: в стандартной в ширину не входят маджины, паддинги и бордеры. 28
  • 29. Потоки • Абсолютное позиционирование • Стандартный поток • «Плавающий» поток • …и нельзя забывать про inline-block 29
  • 35. Порядок repaint • цвет фона • фоновое изображение • граница • тень • вложенные элементы • outline 35
  • 36. Стековый контекст z-index и всё такое. Подробнее: http://dev.opera.com/articles/view/37-css-absolute-and-fixed- positioning/ 36
  • 37. Чем меньше область reflow или repaint и чем реже происходит их пересчёт — тем лучше. 37
  • 38. Ссылки • How browsers work и перевод: как работают браузеры • Статья про позиционирование и стековый контекст • How Browsers Lay Out Web Pages 38
  • 39. Роман Комаров Разработчик интерфейсов kizu@yandex-team.ru @ki_zu Спасибо