CSS-гриды пришли насовсем

Перевод статьи CSS Grid Layout is Here to Stay с сайта blogs.igalia.com, опубликовано на css-live.ru с разрешения автора — Мануэля Рего Касановаса.

О том, что стояло за разработкой CSS Grid Layout в Chromium/Blink и Safari/WebKit, которую вела Igalia при поддержке Bloomberg.

Мы долго шли к этому, но наконец CSS-гриды уже здесь! (эмодзи: летящая ракета) На прошлой неделе вышли Chrome 57 и Firefox 52, став первыми браузерами, поддерживающими грид-раскладку без префикса для всех пользователей (в IE/Edge гриды поддерживались с 2012 г., но лишь старая версия спецификации и за префиксом). Больше того, Safari тоже должен вот-вот включить ее поддержку.

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

Igalia играет ключевую роль в реализации CSS-гридов в Chromium/Blink и Safari/WebKit с 2013 г., а спонсирует это Bloomberg. Об этом успешном сотрудничестве и заметка.

Хорошо забытое старое

Гриды — вовсе не что-то новое, ведь их упоминания можно найти в самых первых обсуждениях между создателями CSS. Вот выдержка из письма Хокона Виума Ли в списке рассылки www-style за июнь 1995 г.:

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

h&kon

С той поры веб не стоял на месте, и проблему дизайна по сетке в HTML/CSS пытались решить (и решали) множеством разным подходов.

В начале этого десятилетия Microsoft начал работу над тем, что в итоге стало первой спецификацией CSS Grid Layout. Она была основана на реализации в Internet Explorer 10  и опыте, полученном Microsoft при ее разработке. IE10 вышел в 2012 г., и в нем эта первая спецификация была реализована за префиксом.

Затем, в конце 2011 г., Google стал добавлять поддержку в WebKit. В то время и Chrome, и Safari использовали один движок — WebKit; позже, в 2012-м, от него отделится Blink.

Тем временем Мозилла не торопилась с реализацией гридов в Firefox, потому что они конфликтовали с их собственным типом грид-раскладки в XUL.

Сотрудничество Igalia и Bloomberg

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

Bloomberg решил взяться за CSS Grid Layout в порядке сотрудничества с Igalia. Мои коллеги Серхио Вильяр и Сан Лопес приступили к грид-раскладке где-то летом 2013-го. В 2014-м Хави Фернандес и я сменили Сана и тоже включились в работу. И вот мы работаем над этим уже больше трех лет.

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

8

Igalia и Bloomberg вместе работают над тем, чтобы сделать веб лучше.

И это сотрудничество оказалось более чем просто успешным, ведь сейчас грид-раскладка уже работает в  Chromium и в WebKit тоже включена по умолчанию (что вроде бы значит, что в ближайшем релизе Safari 10.1 она тоже появится).

Спасибо Джен Симмонс (@jensimmons) за дополнение насчет Safari 10.1.

А дальше что?

Обновите свои браузеры, убедитесь, что вам досталась версия с поддержкой Grid Layout и начинайте пользоваться грид-раскладкой, играйте с ней, экспериментируйте и т.д. Будем рады любым найденным ошибкам и вообще обратной связи. Уже поздно менять текущую версию спецификации, но идеи для будущей версии рабочая группа CSS уже собирает в своем репозитории на Github.

Если хотите начать работать с грид-раскладкой, в Интернете есть немало ресурсов:

Кто-то может подумать, что раз браузеры с поддержкой CSS-гридов уже вышли, то дело закончено. Это не имеет ничего общего с правдой, поскольку еще масса работы впереди:

  • Важным шагом будет закончить набор тестов W3C. Igalia активно развивает его, и Blink с WebKit уже его проходят, но всю спецификацию он пока еще не покрывает.
  • В текущей реализации недостает некоторых функций. Например, никто пока не поддерживает подсеток, веб-разработчики пишут нам, что отчаянно нуждаются в них. Или еще пример, мы до сих пор доделываем поддержку выравнивания по базовой линии в Blink и WebKit.
  • Найденные баги и проблемы надо будет исправлять, из-за некоторых может даже понадобиться чуть-чуть подправить спецификацию.
  • Надо будет поработать над оптимизацией скорости. CSS Grid Layout — огромная спецификация, так что самое сложное в ее реализации уже позади. Теперь пора улучшать быстродействие для разных практических ситуаций.
  • И, как я уже объяснял ранее, люди уже задумываются об идеях для будущей версии спецификации. Прогресс не собирается останавливаться.

Благодарности

Прежде всего нужно еще раз подчеркнуть роль Bloomberg в разработке CSS Grid Layout. Без их видения и поддержки вряд ли удалось бы так быстро довести их до выпуска.

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

Итак, большое спасибо:

  • Ребятам из Microsoft, которые начали работу над спецификацией.
  • Теперешним редакторам спецификации: Элике Этемад (fantasai), Россену Атанассову и Табу Аткинсу-младшему. Особенно fantasai и Табу, которым пришлось возиться с большинством проблем, с которыми мы столкнулись.
  • Всей рабочей группе CSS за ее работу над спецификацией.
  • Тем, кто нас проверял, как в Blink, так и в Webkit: Кристиану Бисингеру, Дэрину Адлеру, Жюльену Шаффре и многим другим.
  • Другим разработчикам реализации: Дэниелу Хольберту, Мэтсу Палмгрену и др.
  • Популяризаторам грид-раскладки: Джен Симмонс, Рэйчел Эндрю и др.
  • Множеству других людей, кого я забыл включить в список, кто помог сделать CSS Grid Layout новейшим модулем для раскладки в вебе.

Спасибо вам всем! (эмодзи: улыбающийся котик) И особенно Bloomberg, за то, что поделились с Igalia этим замечательным опытом. Мы очень рады, что вместе прошли этот путь, и очень надеемся, что впереди у нас еще более замечательные достижения.

P.S. Это тоже может быть интересно:

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Получать новые комментарии по электронной почте. Вы можете подписаться без комментирования.