Grid это – Как правильно делается верстка Grid CSS: важные нюансы использования спецификации

CSS Grid Layout. Быстрый старт / Habr

Вступление


Всем привет. Февраль-Март 2017 года запомнились для многих, кто работает с HTML и CSS тем, что большинство браузеров выпустили обновления, среди которых были и обновления для CSS. Теперь можно использовать спецификацию CSS Grid Layout без флагов в следующих браузерах: Firefox 52, Chrome 57, Opera 44, Safari 10.1. Какой из браузеров остался позади, думаю, вы догадываетесь. Точнее он поддерживает старую версию спецификации. Но разработчики этого браузера делают все возможное, чтобы внедрить новую спецификацию. Внедрение поддержки новой CSS Grid Layout спецификации — это самое значимое событие за прошедшие пять лет. Эта спецификация поменяет полностью подход к разработке пользовательских интерфейсов. И это круто.

Я использую Flexible Box Layout


Многие задаются вопросом: «Стоп, я использую flexbox, зачем мне еще какие-то grid’ы?». Вопрос более чем уместен. CSS Grid не заменит Flexbox и наоборот. Первое отличие — это то, что Flexbox работает только в одном измерении. Из этого следует, что мы можем размещать flex элементы только вдоль главной оси или вдоль поперечной оси. Мы не можем разместить flex элементы сразу на нескольких осях. CSS Grid в свою очередь нам позволяет работать с разметкой в двухмерном пространстве и выравнивать содержимое в обоих измерениях. Мне нравится как объясняет эту разницу Tab Atkins.

Одна из самых больших проблем при разработке пользовательских интерфейсов — это то, что при изменении дизайна, функционала или поведения любого блока приходится менять его разметку (в большинстве случаев). CSS Grid позволяет менять расположение grid элементов не меняя сам HTML. Ниже пример простой разметки на Flexbox и CSS Grid.


Основные термины


Прежде чем приступать к работе с CSS Grid, нужно разобраться с основными терминами. На основе этих терминов построена вся спецификация.

Grid container — это набор пересекающихся горизонтальных и вертикальных grid линий, которые делят пространство grid контейнера на grid области, в которые могут быть помещены grid элементы. Внутри grid контейнера есть два набора grid линий: один определяет ось столбцов, другой определяет ось строк.

Grid lines — это горизонтальные и вертикальные разделители grid контейнера. Эти линии находятся по обе стороны от столбца или строки. Автор может задать для данного элемента имя или числовой индекс, которые может использовать дальше в стилях. Нумерация начинается с единицы. Важный нюанс, данный элемент восприимчив к режиму написания, который используется на вашем ресурсе. Например, вы используете Арабский язык или любой другой язык у которого режим написания справа налево, то нумерация линий будет начинаться с правой стороны.

Grid track — это пространство между двумя смежными grid линиями, вертикальными или горизонтальными.

Grid cell — это наименьшая неделимая единица grid контейнера на которую можно ссылаться при позиционировании grid элементов. Образуется на пересечении grid строки и grid колонки.

Grid area — это пространство внутри grid контейнера, в которое может быть помещен один или больше grid элементов. Этот элемент может состоять из одной или более grid ячеек.

Каждый элемент тесно связан друг с другом и отвечает за определенную часть grid контейнера.

Первый CSS Grid макет


Мы разобрались с основными терминами. Пришло время сделать наш первый grid макет. Ничего сложного, простенький макет три строки на три колонки, чтобы разобраться с основами. Ниже вы можете увидеть пример.
В первом варианте из примера мы создаем три колонки размером 150px 1fr 150px и три строки размером 50px auto 50px соответственно. Обратите внимание на такие значения: 1fr, auto. Давайте разберемся, что это за значения.

1fr — это специальная единица измерения введенная в данной спецификации. Она не измеряется в каких-то конкретных единицах измерения (px, em, rem, др.) Из этого следует, что мы не можем использовать ее вместе с функцией calc(). Эта единица измерения не может быть меньше единицы, а также не может принимать отрицательные значения. Она рассчитывается после того, как все остальные значения, отличные от fr, были рассчитаны.

auto — ведет себя довольно интересно и использует для расчета размеров хитрый алгоритм. В некоторых ситуациях может показаться, что эта единица измерения работает точно также как и fr. Но это не так. Главное отличие, auto будет рассчитан до того, как будет рассчитан fr. Об этом нужно помнить. Вы можете увидеть данное поведение из второго и третьего вариантов примера, который приведен выше.

Для разметки колонок и строк используются следующие правила:

grid-template-columns: 150px 1fr auto;
grid-template-rows: 50px auto 50px;

Сокращенная форма записи выглядит так:
grid-template: 50px auto 50px / 150px 1fr auto;

Типичный шаблон на grid’ах


Давайте сделаем простенький шаблон с которым мы все знакомы. Ничего сложного, шаблон будет состоять из следующих тэгов: header, nav, aside, article, footer. Подавляющее большинство интернет ресурсов использует данный шаблон. Только знаете, даже в таком простом шаблоне наблюдается следующая проблема: «Я дизайнер, я так хочу. Я разработчик, я так не могу». С появлением CSS Grid Layout подобная проблема должна стремиться к нулю.
В данном примере мы знакомимся еще с несколькими свойствами CSS Grid Layout. Первое grid-template-areas. Оно используется для создания именованных областей grid контейнера, которые не связаны с каким-либо конкретным grid элементом. Синтаксис очень удобен, мы сразу видим какой шаблон получится на выходе. Второе свойство
grid-area
. Оно используется для дочернего элемента grid контейнера. Указывает в какую именованную область поместить grid элемент.

Давайте рассмотрим первый вариант grid-template-areas:

grid-template-areas: "header header"
                     "nav  main"
                     "footer ."

Один или больше идущих подряд символов . (точка) имеют особое значение. Если этот символ используется, то браузер его отрендерит как нулевой токен, что в свою очередь означает следующее: на его месте не будет создана именованная область grid контейнера и в нее нельзя поместить grid элемент.

Если мы не указали для какого-то дочернего grid элемента свойство grid-area, браузер автоматически распределит такие элементы. Такое поведение можно увидеть из последнего варианта, приведенного примера выше.

Полезные ссылки


  1. CSS Grid Layout Module Level 1
  2. How to create a simple layout with CSS Grid Layouts
  3. Grid by Example от Rachel Andrew
  4. Подборка ресурсов для изучения CSS Grid Layout от Jen Simmons
  5. Ресурс для изучения СSS Grid Layout от Mozilla
  6. Jen Simmons про CSS Grid CSS Grid Layout
  7. Моя подборка ресурсов по CSS Grid Layout
  8. Множество годных статей (как своих авторских, так и переводов) по CSS Grid Layout на css-live.ru

Вместо заключения


В данной статье мы рассмотрели всего лишь верхушку CSS Grid Layout айсберга. Я начал обращать внимание на CSS Grid Layout еще когда все браузеры его поддерживали за флагами. Данный текст не способен передать мои впечатления от работы с этой спецификацией. Иногда сложно поверить своим глазам какие штуки удается сделать при помощи CSS Grid. Это разрыв всех шаблонов. И мне это нравится.

Я вам советую обратить внимание на данную спецификацию и потратить немного своего времени на ее изучение. Поверьте, в будущем вам это точно пригодится и не важно, пишете вы на React, Angular, Vue (вставьте свое). Grid’ы пришли надолго.

Напоследок добавлю пример с произвольным появлением grid элемента в разных именованных областях.


На этом все. Спасибо за внимание. Кто дочитал до конца, отдельное спасибо.

World Wide GRID- — будущее уже рядом / Habr

ХXI век, возможно, станет эпохой массового внедрения грид-технологий. Счастливое человечество стоит на пороге очередной компьютерной революции, в результате которой произойдет трансформация привычного для нас сегодня WWW (World Wide Web — интернета) в WWG (World Wide GRID — всемирную грид-сеть).

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

Информатизация сегодня выходит на четвертый этап своего развития. Первый был связан с появлением больших компьютеров (мейнфреймов), второй — с персональными компьютерами, третий — с появлением интернета, объединившего пользователей в единое информационное пространство. Первое же десятилетие XXI века, по мнению многих специалистов, знаменуется началом перехода на новые грид-технологии.

Впрочем, конкретные формы и механизмы этого «великого перехода к WWG» пока еще четко не определены. Среди апологетов грид-технологий до сих пор нет единства взглядов относительно того, будет ли WWG создан на базе уже существующих интернет-мощностей или же вообще «в чистом поле» — как универсальная система эмуляции персональных компьютеров, пользователям которой не потребуется ни полнофункционального компьютера, ни собственного программного обеспечения. Масса нерешенных вопросов остается и в области стандартизации протоколов, интеграции разнородных вычислительных ресурсов, обеспечения безопасности хранения и передачи данных.

Суперкомпьютер из розетки
Грид-компьютинг начал формироваться прежде всего как интегратор вычислительных ресурсов для решения различных «ресурсоемких» научных задач. Идея более эффективного использования вычислительных мощностей путем соединения множества компьютеров в единую структуру возникла в научном сообществе сравнительно давно — в эпоху мейнфреймов (больших ЭВМ). Уже в 80е годы ученые (прежде всего физики-ядерщики) для решения сложных математических задач пытались комбинировать друг с другом различные рабочие станции и использовать свободные центральные процессоры для сокращения времени обработки.

В 1994 году стартовал проект создания всемирной компьютерной сети GLORIAD (аббревиатура от Global Ring Network for Advanced Application Development, Глобальная кольцевая сеть для развития прикладных исследований) — волоконно-оптического кольца в Северном полушарии, объединяющего вычислительные ресурсы различных научно-исследовательских организаций США, Канады, Европы, России, Китая и Южной Кореи (опять-таки главным образом физических центров). Россия присоединилась к этому проекту в 1996 году, и сегодня нашу страну в нем представляют Российский научный центр «Курчатовский институт» и Российский НИИ развития общественных сетей.

Тем не менее формально авторами концепции грид считаются Ян Фостер из Арагонской национальной лаборатории Чикагского университета и Карл Кессельман из Института информатики Университета Южной Калифорнии. Именно Фостер и Кессельман в 1998 году впервые предложили термин grid computing для обозначения универсальной программно-аппаратной инфраструктуры, объединяющей компьютеры и суперкомпьютеры в территориально-распределенную информационно-вычислительную систему. Согласно их ставшему уже классическим определению, «Грид (grid) — согласованная, открытая и стандартизованная среда, которая обеспечивает гибкое, безопасное, скоординированное разделение ресурсов в рамках виртуальной организации».

Термин grid computing был введен по аналогии с термином power grid (электросеть).

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

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

Суперкомпьютеры, не объединенные в территориально-распределенную систему, обладают как минимум тремя существенными недостатками. Во-первых, это очень дорогостоящая техника, которая быстро морально устаревает (суперкомпьютеры из первой сотни рейтинга Top-500 уже через два-три года, как правило, оказываются в самом хвосте этого списка или вообще выпадают из него). Во-вторых, это «статичность» вычислительных мощностей суперкомпьютеров, которые практически не поддаются серьезной модернизации, зачастую она не позволяет использовать их для решения задач нового уровня сложности. И, наконец, третий «большой минус» — низкий КПД суперкомпьютеров вследствие неравномерности загрузки CPU.

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

Распределение вычислительных сред
Авторы идеи грид-компьютинга Фостер и Кессельман стояли и у истоков разработки первого стандарта конструирования грид-систем, свободно распространяемого программного инструмента с открытым кодом Globus Toolkit.

Для дальнейшего развития Globus Toolkit в 1999 году была создана специальная организация Global Grid Forum (GGF), в которую наряду с академическими организациями вошли многие производители компьютерных систем и программного обеспечения.

В 2002 году GGF и корпорацией IBM в рамках версии Globus Toolkit 3.0 была представлена новая системная разработка Open Grid Services Architecture (OGSA), инкорпорировавшая в грид понятия и стандарты веб-сервисов. В этой архитектуре грид-сервис определяется как специальный тип веб-сервиса, благодаря чему становится возможной работа с ресурсами грид на базе стандартных интернет-протоколов.

В настоящее время адаптацией Globus Toolkit к своим основным продуктам, использующим технологию бизнес-вычислений, активно занимаются ведущие игроки компьютерного рынка, в частности та же IBM и два кита ERP-технологий, Oracle и SAP.

В то же время помимо наиболее популярного сегодня проекта Globus параллельно разрабатываются и другие грид-стандарты — например, Legion, Condor и Unicore. Так, в 2004 году у GGF появился новый серьезный конкурент — консорциум Enterprise Grid Alliance (EGA), в который в числе прочих вошли такие «монстры», как Fujitsu Siemens Computers, Hewlett-Packard, Intel, NEC, Oracle, Sun Microsystems, EMC.

Причем если основной задачей GGF была выработка требований к грид для производителей ИТ-решений, то EGA изначально была «заточена» под удовлетворение запросов корпоративных пользователей.

В конце июня 2006 года GGF и EGA, которые успели порядком попортить друг другу нервы, официально объявили о своем слиянии и создании открытого Форума по распределенным вычислениям (Open Grid Forum, OGF). Как отметил новоиспеченный президент и исполнительный директор OGF Марк Линеш, ранее занимавший пост председателя совета директоров GGF, «этот шаг позволит консолидировать сообщество сторонников идей грид и более эффективно сотрудничать с основными участниками этого рынка в разных странах. Мы сможем выступать единым фронтом во всех вопросах, связанных с разработкой и внедрением грид и распределенных вычислительных сред».

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

До сих пор ни один поставщик ПО открыто не объявил о намерении изменить свою модель расчета цены с учетом новой специфики grid computing.

Еще один «провисающий» элемент глобальной грид-конструкции — практически полное отсутствие стандартизации коммерческого программного обеспечения грид. Дело в том, что одна из характеристик ранних приложений для grid computing (используемых в научных вычислениях) — независимость одной выполняемой задачи от результата решения другой. Например, в больших грид-приложениях для сложных математических расчетов вычисления разбиваются на независимые части, которые в любое время могут быть «сложены». Однако многие корпоративные приложения жестко зависимы: одно вычисление или процесс не может продвигаться до тех пор, пока не закончится другое.

По мнению Яна Фостера, «подходы на основе открытых стандартов (подобные Globus Toolkit) в конечном счете превратят грид в господствующее направление развития корпоративных информационных инфраструктур», но давать точные прогнозы относительно времени наступления этого «корпоративного ИТ-перелома» эксперты пока не рискуют.

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

Грид-сети сегодня используются в самых разных фундаментальных научных исследованиях и проектных работах. Эволюция протопланетного вещества, планет и Земли, геномика и протеомика, общее метеорологическое прогнозирование и прогноз различных стихийных бедствий (цунами, землетрясений, извержений вулканов), моделирование и анализ экспериментов в ядерной физике, ядерное оружие, нанотехнологии, проектирование аэрокосмических аппаратов и автомобилей т. д. — наверное, скоро проще будет назвать научную дисциплину, где суперкомпьютеры и распределенные вычисления еще не применяются.

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

В 2001 году в США стартовал проект TeraGrid, финансируемый Национальным научным фондом науки (NSF), основной задачей которого стало создание распределенной инфраструктуры для проведения высокопроизводительных (терафлопных) вычислений.

В мае 2004 года Европейским союзом был создан аналог американской TeraGrid — консорциум DEISA (Distributed European Infrastructure for Supercomputing Applications),

частично финансируемый в рамках программы 6th Framework, который объединил в грид-сеть ведущие национальные суперкомпьютерные центры ЕС.

В конце марта 2004 года завершился трехлетний проект European DataGrid (EDG), в рамках которого была построена тестовая инфраструктура вычислений и обмена данными для нужд европейского научного сообщества.

На основе этих наработок был начат новый международный проект организации высокопроизводительной грид-сети Enabling Grids for E-sciencE (EGEE), который выполняется под руководством швейцарского ЦЕРНа (Европейского центра ядерных исследований, Женева) и финансируется Европейским союзом и правительствами стран-участниц. В настоящее время в проект входят 70 научных учреждений из 27 стран мира, объединенных в 12 федераций. В рамках этого проекта должен быть построен самый крупный в мире грид с суммарной вычислительной мощностью 20 000 CPU.

Ведущая роль ЦЕРНа определяется тем, что в 2007 году там планируется запуск крупнейшего в мире ускорителя элементарных частиц (LHC, большого адронного коллайдера), который будет источником огромного объема информации. Создающаяся в первую очередь под LHC новая компьютерная инфраструктура должна будет обеспечить эффективную обработку информации, ожидаемый среднегодовой объем которой оценивается в 10 петабайт (1 петабайт = ~10 15 байт). Задача EGEE, однако, далеко не ограничена ядерной физикой и состоит в том, чтобы реализовать потенциал грид и для многих других научно-технологических областей. Так, в ближайших планах руководства проекта создание отдельного биоинформационного «грид-блока».

В тесном взаимодействии с проектом EGEE развивается и магистральная европейская сеть для образования и науки — GEANT. В середине прошлого года межправительственная организация DANTE объявила о запуске научно-образовательной сети нового поколения GEANT 2, которая охватывает 3 млн пользователей из 3,5 тыс. академических учреждений, расположенных в 34 европейских государствах (в том числе и в России). Новая сеть качественно изменит обработку информации радиоастрономических комплексов, регистрирующие системы которых расположены на значительном удалении друг от друга, а также будет обслуживать часть процессов по передаче данных после запуска LHC.

Под руководством Пенсильванского университета США на базе грид-технологий создан Национальный цифровой центр маммографии с общим объемом данных (маммограмм) 5,6 петабайта, который предоставляет медикам возможность мгновенного доступа к записям миллионов пациентов.

Стоит упомянуть и о проекте [email protected], инициированном астрономами Университета Калифорнии — Беркли. В рамках этого проекта была создана виртуальная грид-сеть, которая регулярно анализирует данные, поступающие с радиотелескопа Arecibo в Пуэрто-Рико с целью поиска внеземного разума. Посредством интернета SETI объединил вычислительную мощность более 5 млн персональных компьютеров и уже проделал вычислительную работу, эквивалентную более чем 600 тыс. лет работы ПК (правда, до сих пор никакой информации о найденных инопланетянах от координаторов проекта еще не поступило).

Китай начинает и может выиграть
Соединенные Штаты сегодня — безусловный мировой лидер по части практического строительства грид-сетей. В 2004 году Джордж Буш официально объявил о начале работы президентской стратегической GRID-программы (Strategic Grid Computing Initiative), основной целью которой является «создание единого национального пространства высокопроизводительных вычислений» (National High Performance Computing Environment).

К настоящему времени в США уже успешно функционируют четыре национальные грид-сети, находящиеся под заботливой опекой ключевых государственных ведомств: компьютерная сеть национального фонда научных исследований (NSF Comp. Grid), информационная сеть поддержки НАСА (NASA Information Power Grid), глобальная информационная сеть министерства обороны (DOD GI Grid) и сеть суперкомпьютерной инициативы министерства энергетики (DOE ASCI Grid).

Свою немалую лепту в процесс «всеобщей гридизации» вносят и частные американские компании. Весьма оригинален проект Sun Grid компании Sun Microsystems, стартовавший в прошлом году: машинное время сети центров обработки данных, содержащей суммарно около 10 тыс. процессоров, сдается компанией в аренду с оплатой из расчета 1 доллар за пользование одним процессором в час. Продажа времени Sun Grid осуществляется компанией по договору через чикагскую электронную фондовую биржу Archipelago Holdings. Через нее же покупатель может продать неиспользованные часы. Дополнительно в Sun предлагают услуги хранения данных по цене 1 доллар за гигабайт в месяц. Услуга предлагается организациям, имеющим эпизодические потребности в значительных вычислительных мощностях.

Концепция грид-компьютинга компании Oracle предполагает использование грид-сети как универсальной системы управления данными на основе базы данных Oracle 10G. Специальная функция ASM (Automatic Storage Manager) позволяет виртуализировать наборы дисков в единый виртуальный диск с возложением на Oracle функций менеджера файлов и томов. Oracle сама работает с этой группой дисков (виртуальными дисками), размещая на них свои файлы и управляя ими. Oracle разбивает все пространство этого виртуального диска на равные кусочки размером в 1 Мб и создает из кусочков виртуальные файлы БД, табличные пространства, тома и т. д.

Особняком в длинном списке грид-проектов стоит проект построения глобальной грид-системы, продвигаемый корпорацией Google. Модель Google — это превращение компьютинга в потребительскую услугу по типу электроснабжения (что во многом перекликается с идеей, реализуемой Sun Microsystems). В определенном смысле Google возвращается к архитектуре большой ЭВМ. В рамках этого проекта все компьютерные устройства (ПК, мобильный телефон, телевизор и т. п.) становятся просто терминалами, которые будут включены в серверный грид Google с услугами приложений.

Иными словами, Google сегодня пытается позиционировать себя в качестве универсальной системы доставки приложений на любое устройство в любой точке мира и тем самым стать реальной альтернативой привычного персонального компьютера. Стратегически важное конкурентное преимущество проекта Google — понижение себестоимости обработки бита информации. Для решения этой задачи Google активно продвигается в формировании корневой транспортной системы и подготовке площадей для размещения огромных серверных ферм с прямым выходом к ведущим мировым телекоммуникационным операторам. (По неподтвержденной информации, в 2005 году в условиях повышенной секретности Google провел крупномасштабную работу по установке в различных точках мирового океана 4 тыс. морских контейнеров с серверными стойками CPU.) Это позволит компании существенно сократить телекоммуникационные расходы и обеспечить контроль над доставкой большей части контента и мировым интернет-трафиком.

Комментируя операции Google, один из ведущих российских экспертов в области грид-технологий Владимир Рубанов в беседе с корреспондентом «Эксперта» отметил: «Финансовый результат от этих усилий “гугловцев” уже налицо: если еще в декабре 2004 года рыночная капитализация Google составляла 28 миллиардов долларов, то уже в декабре 2005го она возросла до 138 миллиардов! Этот рост наглядно демонстрирует, насколько укрепилась на Западе вера в перспективы грид-технологий. Иными словами, крупный бизнес сегодня делает большую ставку на развитие этих технологий и готов вкладывать в них колоссальные финансовые ресурсы».

Большое внимание грид-технологиям в последние годы уделяет и руководство Евросоюза, серьезно озабоченного наметившимся отставанием в этой области от США. В 2005 году Еврокомиссия подготовила специальную программу стоимостью 13 млрд евро, в рамках которой грид-компьютингу отводится роль стимулятора и важнейшего ресурса для превращения Евросоюза в «самую конкурентоспособную в мире экономику знаний».

C 2000 года ведутся работы по освоению грид-технологий и в Китае. Долгое время информация о том, на какой стадии находится реализация проекта ChinaGrid, была фактически засекречена. Информационная бомба взорвалась в середине июля 2006 года, когда китайские СМИ во всеуслышание объявили о завершении работы над Китайским образовательным грид-проектом (China Educational Grid Project, CEGP).

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

Как полагает Владимир Рубанов, «китайцы уже создали материальную и инфраструктурную базу для рывка в образовательной сфере. Им теперь уже не нужно регулярно тратить тысячи долларов на покупку новых компьютеров взамен устаревших — достаточно приобрести всего за 150–200 долларов интернет-коммуникаторы (PIC) и получать далее все необходимые ресурсы из грид-сети. Например, подключиться к реализации Программы 50–15, активно продвигаемой сегодня американской компанией AMD (обеспечить к 2015 году доступ в интернет при помощи дешевых интернет-приставок для 50% населения Земли. — “Эксперт”)».

В январе 2006 года в Афинах было официально объявлено о начале выполнения финансируемого Европейской комиссией проекта EUChinaGRID. Главная его цель — объединение европейских и китайских грид-инфраструктур для повышения эффективности совместного использования различных научных приложений, работающих в грид-среде. Наметившийся стратегический альянс ЕС и Китая вполне можно рассматривать как одну из первых попыток создания сильного «грид-противовеса» претензиям США на мировое лидерство в этой крупномасштабной технологической гонке.

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

Зеленый свет для русского грид
К настоящему времени национальные программы по развитию грид-технологий в той или иной форме реализуются практически всеми технологически развитыми странами. В России такой программы по грид до сих пор нет.

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

В июне 2006 года правительство России наконец одобрило предложение Министерства образования и науки о разработке проекта новой суперкомпьютерной программы «СКИФ-ГРИД» Союзного государства России и Белоруссии. Распоряжением Михаила Фрадкова от 7 июня Минобрнауки было поручено внести предложение о разработке проекта программы «Разработка и использование программно-аппаратных средств ГРИД-технологий и перспективных суперкомпьютерных вычислительных систем семейства СКИФ» в совет министров Союзного государства.

Благодаря этому решению головные разработчики суперкомпьютеров семейства СКИФ — Институт программных систем Российской академии наук (ИПС РАН) в Переславле-Залесском и Объединенный институт проблем информатики Национальной академии наук Белоруссии (ОИПИ НАН Белоруссии) — наконец получили добро на проведение дальнейших исследований.

Однако даже этот проект, предусматривающий в течение ближайших нескольких лет создание старших моделей персональных кластеров-серверов, имеет лишь косвенное отношение к грид-технологиям. Персональные кластеры-серверы — объединения вычислительных мощностей компьютеров и суперкомпьютеров внутри высокоскоростной локальной сети, — несмотря на целый ряд безусловных преимуществ по сравнению с «обычными» суперкомпьютерами, гомогенны (состоят из систем, имеющих одинаковую базовую структуру). В этом заключается их принципиальное отличие от компьютерных грид-сетей, которые позволяют объединять в единую вычислительную цепь гетерогенные вычислительные ресурсы, формально не связанные общим ПО и не требующие централизованного администрирования.

Мощности глобальной новой грид-системы будут такими, что — по крайней мере в теории — у ее координаторов появится возможность отслеживать и анализировать любой «клик мышкой» на каждом отдельно взятом компьютере, подключенном к грид-сети. А это — прямая дорога к перехвату интеллектуальной собственности, к быстрой утечке идей и т. п.

По мнению г-на Рубанова, единственным разумным ответом на вызов такой глобальной грид-инфраструктуры должно стать «построение национальной грид-сети, которую мы сделаем целостной и управляемой, взаимодействующей по определенным правилам с глобальной, — иными словами, между национальной и глобальной грид-инфраструктурой должна быть создана контролируемая зона обмена информацией».

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

Все реализуемые сегодня концепции и подходы к построению глобальной грид-системы (грид как вычислительная услуга — Sun Microsystems; грид как система эмуляции персонального компьютера и его замены интернет-коммуникатором — AMD; грид как единая операционная система, объединяющая вычислительные мощности в глобальный суперкомпьютер, — Google; грид как виртуальная организация, формирующая однородное пространство ИКТ-взаимодействия, — Oracle) требуют высокоскоростных сетей.

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

— по материалам Эксперт`а ---

Концепция GRID - gridnach

В 1960 году пионер программирования, получивший премию Тьюринга за работы в области искусственного интеллекта - Джон Маккарти пророчески говорил, что "вычислительная деятельность может быть со временем организована как общественная услуга" – и рассматривал, как это могло бы быть сделано. Более 30-ти лет потребовалось, чтобы технологии достигли такого уровня, что можно было бы задумываться о практической реализации этой идеи. В середине 1990-х годов Ян Фостер и Карл Кессельман вели активную работу в области объединения гетерогенных, географически распределенных ресурсов в единую инфраструктуру и предложили термин, который стал символом новой эпохи компьютерных технологий - GRID. Однако и они могли лишь в своих самых смелых фантазиях предположить, что уже через 10 лет GRID-технологии будут использоваться в научных проектах планетарного масштаба и заставят обратить на себя внимание таких гигантов как компании Amazon, Google, Oracle и Microsoft.

Сам термин произошёл от английского слова «grid» (буквальный перевод «решетка»), точнее от «power grid», что означает «электросеть» или «энергосистема». Смысл названия заключается в проведении аналогии между использованием электрической сети и вычислительными ресурсами GRID. Подобно тому, как при использовании энергосистем пользователь не знает какой конкретно электрогенератор выработал ток, а просто его потребляет и платит за его потребление энергетической компании, так и при использовании GRID не важно какой конкретно компьютер (или устройство хранения/передачи данных) выполнил его задачу, важен сам факт ее выполнения.

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

Grid Layout как основа современной раскладки

В темные века верстальщики строили сайты на таблицах. Потом они освоили float и flexbox, и тьма отступила. В 2017-м наступила эпоха Просвещения с приходом CSS Grid Layout.

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

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

Об этом расшифровка доклада Сергея Попова на Frontend Conf: про спецификацию, про то, почему верстальщики боятся Grid и как решиться применять сетку в своих проектах, чтобы «Make your website great again!».


О спикере: Сергей Попов (popovsergey) — Генеральный директор аутсорса по фронтенд-разработке Лига А. от HTML Академии, фронтенд-разработчик, организатор сообщества moscowcss, соорганизатор WSD и pitercss_conf. Пока не стал руководителем в компании, много лет занимался версткой.

За последний год появилось много курсов и докладов про Grid, про то, как их использовать и писать. Если технические доклады вам надоели, то добавлю еще один в ваш список. Шутка — поговорим про комиксы. Или нет?

Примечание: вместо длинного «CSS Grid Layout» дальше будет просто «Grid».

Что сейчас с CSS Grid Layout?


Технически, Grid — это простая двухмерная сетка.

Нарисовать и использовать Grid достаточно просто, но разработчики все еще его сторонятся. Я вижу две причины для этого.

  • Многие просто не понимают, что происходит с Grid. Большое количество мифов про этот инструмент мешают разобраться в нем.
  • Мы, как верстальщики и фронтендеры, не понимаем, как и где применять Grid в повседневных задачах.

Начнем разбор с первого пункта.

Спецификация


Первая версия спецификации вышла в 2012 году, много менялась, переписывалась, и, спустя пять лет, начала активно внедряться. В 2017 случился тот самый бум, когда за полгода Grid из состояния первого опубликованного черновика пришел к тому, что сначала Chrome внедрил его без флага, а потом и все остальные браузеры. Из-за того, что внедрение происходило в спешке, спецификация не утряслась и некоторые спорные моменты пришлось оставить, чтобы браузерам не пришлось переписывать половину движка.

Спецификация стабильна, хотя до сих пор в статусе Candidate Recommendation. Если бы я мог, то давно бы уже зарелизил, но разработчики спецификации пока не спешат, а дополняют и меняют формулировки.

Давайте применять нерекомендованную спецификацию Grid Layout — в этом нет противоречия, потому что Grid сначала была реализован, а потом описан.

Второе неверное утверждение — это то, что Grid не имеет смысла без второго уровня.

Второй уровень спецификации


Когда писали спецификацию, она оказалась слишком большой, поэтому какую-то часть выделили во второй уровень. На 2018 год спецификация второго уровня в состоянии First Public Working Draft — первая публикация рабочего черновика.

Над спецификацией активно работают и в ближайшее время она перейдет в состояние Working Draft — рабочий черновик. Разработчики ждут, пока зарелизят Grid, но это долгий процесс, который может затянуться лет на 5.

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

display: subgrid;


Не успели мы понять, что такое grid, как появился subgrid. Давайте разбираться, что это такое.

Представим такую разметку.

Все довольно просто: у нас есть сетка, в нее вложено три несемантических и один семантический элемент. Grid работает как flexbox: когда вы применяете display: grid; к обертке, он применяется только к элементам на первом уровне вложенности.

В примере 1, 2 и 3 <div> займут место в сетке, а все, что находится внутри списка, — схлопнется. Вы потеряете все эти элементы, потому что так работает Grid.

Если хотите, чтобы эти элементы остались частью вашей сетки, то есть два варианта:

  • Первый вариант — избавиться от обертки. Удалим <ul>, а <li> заменим на <div>. Мы убьем семантику, но оставим сетку.

  • Второй вариант — использовать display: subgrid;.

Если применить display: subgrid; к списку, то элементы <li> станут частью этой сетки, <ul>, как обертка, будет игнорироваться. Вы получите полноценную сетку и останется полноценная семантика — и HTML хорошо, и CSS хорошо.

Одна проблема — subgrid не поддерживается, он где-то там за флагами, а релиза можно ждать еще долго.

display: contents;


Вообще ждать не обязательно, потому что есть display: contents;  — замечательное свойство, которое работает так же, как display: subgrid;. Если для элементов списка применить display: contents;, то элементы <li> станут частью сетки.

Есть нюанс — display: contents; поддерживается не во всех браузерах.

CSS Subgrid Emulation


Пока у display: contents; решают проблему поддержки, верстальщики придумали выход — сделали эмуляцию subgrid.

На слайде пример Паши Ловцевича.

В примере выше есть поведение subgrid, но его поведение эмулируется не посредством display: subgrid; или display: contents;, а за счёт кастомных выражений, которые пересчитываются в переменные.

Свойства с дефисом — это кастомные свойства в CSS.

Второй уровень не нужен


Если кто-нибудь скажет не использовать Grid, пока не выйдет второй уровень — не слушайте его. Второй уровень решает определенные проблемы, которые уже решены другими способами.
Не везде нужны subgrid. Grid в связке с Flexbox иногда получается куда круче, чем с subgrid.

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

Поддержка Grid в браузерах


Эту картинку можно показывать, если кто-то скажет вам, что Grid не поддерживается.

Глобально поддерживается 87% браузеров, кроме Opera Mini — она ничего не поддерживает. Я писал в CanIuse, просил убрать ее из колонки, чтобы не портить картину, но пока безрезультатно 😉

Если добавить @supports, то работает вообще все, даже Opera Mini. Я не знаю, поддерживает ли Opera Mini flexbox, но там можно сделать fallback.

Остается проблема с IE. Как всегда, он здесь, с нами, и никуда не делся.

IE и Grid


Если ваше приложение поддерживает IE, вы возможно скажете, что не можете использовать Grid. Это не так — Grid работает в IE, так как спецификация была рождена в Microsoft, и впервые появилась именно в IE. Просто ее никто не использовал, пока не пришли нормальные люди и не переписали спецификацию.

IE справляется с Grid, но ему нужно объяснить, как это делать. IE поддерживает Grid в старой версии спецификации, в которой не все свойства поддерживаются, а часть называется по-другому.

Версию спецификаций для IE учить не нужно, потому что большую часть работы за вас сделает Autoprefixer — плагин, который переводит новую версию спецификации в старую. Поэтому, чтобы обеспечить поддержку Grid в IE, достаточно использовать Autoprefixer.

Остальное надо просто знать и помнить. Достаточно открыть статью «Supporting CSS Grid in Internet Explorer», прочитать какие свойства поддерживаются в IE, а какие нет, и решить, что из них вы будете использовать.

Помните про «graceful degradation», когда в старых версиях браузера пропадают элементы из новых. Например, в браузерах, в которых не поддерживается border-radius, у форм будут квадратные уголки. Верстальщиков заставляли вырезать картинки форм, вместо CSS, и в некоторых ситуациях это считалось нормальным.

Почему бы в старых версиях браузеров не переводить Grid в обычные колонки? Если вы разрабатываете под старый браузер, либо не используйте современные технологии, либо смиритесь с тем, что контент в них будет выглядеть по-другому.

Internet Explorer вместе с Grid работает неплохо, просто надо немного практики. Если вы не используете Grid, потому что боитесь IE, то я вынужден вас удивить — это не прокатит.

Баги и Grid


Вы можете сказать, что в Grid много багов, но это не так. Rachel Andrew нашла все ошибки в CSS Grid — всего их 14, и это все что есть. Никто не занимается Grid Layout CSS больше, чем Рейчел, поэтому ей можно доверять.

Баги довольно специфические. Мы помним, когда пришли flexbox, в них тоже были баги, но нас это не остановило. Баги в Grid нас тоже не останавливают, тем более, такие.

«Некоторые HTML элементы не могут быть Grid-контейнером». Сразу идет уточнение, что кнопка не может быть Grid-контейнером, но мы и не хотели этого.

«Textarea, когда она является элементом Grid, схлопывается». Проблема легко решается, если поставить ширину и высоту в процентах.

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

Технических причин не использовать Grid не так уж много. Браузеры поддерживают, а в старых браузерах применяйте «graceful degradation». Теоретических причин тоже мало, потому что материалов больше, чем по flexbox.

Теория, или маленький ликбез


  • Выжимка спецификации — «A complete guide to Grid» от СSS-Tricks настолько же хороша, как и  по flexbox.
  • Курс Learn CSS Grid или видеокурсы, например, от Wes Bos, записанные и спонсированные Mozilla.
  • Полное погружение на сайте Gridbvexample.com: сам сайт написан на Grid, там есть информация по всем спецификациям, примеры, сниппеты кода.
  • Игра с морковками — полная геймификация, даже дети разберутся.
  • Интерактивный курс HTML Academy. Академия внедрила Grid в учебный процесс.

Grid уже здесь! Мы можем долго говорить почему не используем Grid, но пока вы читаете статью, Grid уже задеплоили в продакшен.

Сайты уже используют Grid. Например, я зашел на сайт Russian Internet Week, и это последнее место, где я ожидал увидеть Grid. Обычно сайты бизнес-конференций собираются на Тильде.

Причем они более-менее правильно используют сетку. RIW попробовали, и у них получилось, причем без fallbacks. Они явно ориентируются на пользователей современных браузеров.

Конференции, которые рассказывают про CSS, в любом случае, пытаются применять новые инструменты. Мы на сайте pitercss_conf сделали бейджики, а у ребят из Минска половина сайта на Grid.

Russian Internet Week — это довольно узкая аудитория посетителей. New York Times читает больше людей.

Я уверен, что среди читателей есть владельцы устройств даже с IE 9, 10, 11, но половина сайта на Grid.

Я был удивлен, когда увидел, что такие крупные проекты используют Grid.

Почему Grid не используют повсеместно?


Мы поняли, что спецификация есть, ее можно использовать и никакие отговорки не сработают. Так в чем же дело?

Есть определенные причины не применять сетки:

  • Дизайнеры не ставят перед верстальщиками неразрешимых задач.
  • Верстальщики не понимают, как приложить Grid к реальным проектам. Скорее всего ваш дизайнер не нарисовал сложную сетку, и вы не понимаете, как приложить Grid к макету.

С точки зрения дизайна


Сейчас я буду защищать дизайнеров.

Дизайн развивается медленно, по своим трендам, никак не связанным с развитием веб-технологий. Скорее наоборот — веб-технологам приходится подстраиваться под тренды дизайна. Маловероятно, чтобы верстальщики сказали: «Дизайнеры, а у нас есть Grid, можно с ним работать», а они бы ответили: «О, да!» и начали рисовать под них макеты.

Поэтому большинство сайтов выглядит так.

Абстрактный пример с простой сеткой и колонками, ничего необычного. Сайт легко собирается без flexbox, на float, даже можно обойтись табличной версткой.

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

Приходит к нам дизайнер и говорит:

— Я хочу сложную сетку!
— Я не могу. Она сложная.
— Нет, делай.
— Я не могу!

Потом мы идем к менеджеру, жалуемся, и дизайнер получает по голове.

Все, дизайнер больше не рисует сложные сетки. Раньше мы действительно не могли строить сложные интерфейсы, а сейчас можем — у нас полно инструментов. Теперь дизайнер не хочет, он перестал просить сложные макеты. Дизайнер рисует интерфейс, чтобы верстальщик смог его реализовать, и часто максимально примитивно.

Блог

Приведу распространенный пример из нашего аутсорса. Дизайнер получил задачу нарисовать блог и дает волю всем своим сеточным порывам. Рисует большой блок, широкий, 3 маленьких, средний, фантазирует. Выглядит круто и современно.

Верстальщик видит макет, пишет на flexbox одну обертку, вторую, третью и получает вот такую картинку.

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

На этом счастливая история заканчивается и мы возвращаемся к дизайнеру.

Когда дизайнер рисовал макет, то представлял и другие варианты. В вариантах был полет фантазии, а бэкендер сломал порывы в один момент. План сделать красивый блог, провалился.

Здесь есть разные варианты выхода:

  • Дизайнера отправляют в дальний угол и говорят: «У нас будет все просто друг за другом, обойдемся без твоих выпендрежей, сделай — то, что можно реализовать на flexbox». Дизайнер будет страдать, но выложит на Behance портфолио с красивой сеткой. В макете будет ссылка на продакшен, а там просто квадратики.
  • Верстальщик навешивает jQuery-плагин, который автоматом расставляет элементы по сетке с абсолютным позиционированием — все прекрасно! Кроме того, что плагин будет дополнительно нагружать страницу и безбожно лагать в IE. Однако, дизайнер и бэкендер будут довольны.
  • Дизайнер и верстальщик договорятся и реализуют невероятную историю и приведут к компромиссу дизайн, бэкенд и верстку.

Реальный кейс

На главной странице журнала «The Village» сложная сетка. Она выполнена намеренно для разных типов материалов. Я знаю про это, так как работал в издании.

«The Village» написали огромный алгоритм, который на бэкенде генерирует сетку. Это смесь float, абсолютного позиционирования и других страшных вещей, но она работает!

Иногда ломается, но, когда это происходит, блоки просто переставляются местами и снова все работает.

Не представляю, сколько часов ушло на то, чтобы спроектировать эту систему, отладить и добиться, чтобы она работала практически без ошибок. Сколько времени бы ушло на реализацию этой же сетки, если использовать display: grid; или grid-auto-flow: dense;? Внутри Grid есть отдельная спецификация, которая автоматом расставляет элементы по странице, сама забивает свободные места и реализует подобную сетку. Не надо десяти тысяч строк кода бэкенда — все работает только одним свойством.

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

В «The Village» заморочились, чтобы сделать как хотят, но большинство этого не делает. Поэтому мы видим заурядный веб, стандартизацию, все сводится к одному Layout. Раньше у нас был Bootstrap, который описывает большую часть кода. Сейчас уже у дизайнеров есть свои инструменты, наподобие Bootstrap, которыми они собирают сайты. Что за ерунда — где креатив?!

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

Я мечтаю выступить на конференции дизайна и сказать: «Привет! Мы стали лучше! Мы теперь снова умные», но верстальщика не пускают на дизайнерские конференции. Рассказать дизайнерам, что мы стали лучше — это не так уж сложно. Вам пришла простая сетка, вы спрашиваете: «Почему она простая, а не сложная? Я могу сделать любую!»

С точки зрения реализации


Кажется, что Grid сложно найти. Когда мне говорят: «У меня 3 колонки и я могу сделать это на flexbox. Зачем мне Grid?», то я отвечаю: «Действительно, не надо». Поэтому возникают сложности с тем, где вообще прикладывать Grid.
Grid — это не только сложная сетка

Это и простая раскладка, которую можно сделать на Grid, причем проще, чем на flexbox, потому что не нужна дополнительная обертка. Ниже есть один пример на Grid, его тоже можно сделать на flexbox, но надо много дополнительных оберток или flow, и получится настоящая мешанина.

Grid — не для мелких элементов: либо для очень сложных мелких, либо для крупных.

Grid для раскладки

Я не знаю ни одного сайта, у которого нельзя переписать раскладку на Grid и сэкономить на этом кучу бесполезных дополнительных оберток.
  • Grid можно применить к глобальной раскладке.
  • Grid можно применить к элементам интерфейса

Это бейджик pitercss_conf-2, он сделан на сетке.

Самое сложное в Grid Layout — это начертить сетку, которая вам подходит. В данном случае это не просто 6*6, а 5*8, но у каждого блока разная высота и ширина.

Мы видим задачу и компонуем контент, очень похоже на направляющие в Photoshop. Дизайнер отрисовал, а мы перевели макет на сетку. Здесь нет ни одной дополнительной обертки — только семантические элементы, которые выстраиваются в сетку с помощью Grid.

Посадочный талон можно сделать на flexbox.

А можно на Grid, и в мобильной версии талон выглядит по-другому.

Grid для структуры

Вторая важная вещь, которую нужно запомнить: с помощью Grid просто менять структуру.

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

С Grid все просто. В этом примере, если бы не было сетки, нам бы пришлось правую часть с QR-кодом вынести в абсолютное позиционирование. А на Grid это 13 строк кода в мобильной версии.

Чтобы начать использовать Grid, надо начать использовать Grid. Попробуйте сверстать на сетке некоторые элементы вашего интерфейса. Можно начать с маленьких, можно — с глобальных, чтобы понять, насколько это упрощает жизнь.

Никто не скажет вам: «Вот здесь используй Grid, а здесь — нет!» Вы должны сами понять и научиться, но для этого нужно набивать шишки. Если реализация задачи на Grid заняла в два раза больше времени, чем на flexbox, значит, такие задачи не надо решать на Grid.

Вот для комиксов Grid идеален.

Рассмотрим нетривиальную задачу.

Если покопаться в коде, становится понятно, как все устроено. Ребята программируют на CSS и выстраивают Grid Areas. В зависимости того амплуа игрока, он автоматически встает в нужную Area. Вертикальное и горизонтальное выравнивание создает построение. Это целое программирование на CSS. Задача решается 50 строчками CSS-кода, что гораздо проще, чем через бэкенд или JS.

Я хочу, чтобы дизайны и раскладки были прикольными, такие как эта.

Это слишком сложная верстка на Grid, потому что задача была сложная. Верстальщик не мог отрисовать раскладку на простых flexbox, только Grid. Можно было сделать меньше ячеек, но учитывая, что ячейки строит repeat, на это много времени не ушло. Главное, что они сделали это.

Сверстано замудренно, но интерфейс очень круто перестраивается в дальнейшем.

Что дальше?


Давайте перестанем говорить себе: «Я не могу» в плане Grid. Вы можете — просто не хотите. Нет ни одной объективной причины не использовать сетку, кроме лени и нежелания попробовать.

Grid — это настолько универсальная система, что для нее даже невозможно сделать фреймворк. Если вы видите, что какой-то фреймворк использует Grid Layout — это бред, потому что Grid сам по себе фреймворк для построения сеток. Bootstrap вряд ли перейдет на Grid. Представьте, что там будет 20 миллионов классов — извращение!

Поэтому у вас никогда не будет готового решения. Возможно, будут шаблоны, но правил, где применять Grid, а где нет — не будет.

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

Несите знания в команду. Говорите, что знаете Grid, предлагайте его использовать.

Подойдите к дизайнеру и скажите: «Давай ты будешь рисовать интереснее, а я буду твои задумки реализовывать!»

Скажите менеджеру: «Мы теперь можем больше с Grid!»

Делитесь знаниями внутри команды и двигайте веб вперед. В конечном счете у нас простая цель — делать веб лучше и круче!

Если в какой-то момент у нас все уходило в упрощение, то сейчас есть новые технологии. Не только Grid — это SVG-маски, анимации, трансформации. Проблема не в технологиях, а в том, что большинство до сих пор не использует на полную и половины из них. Мы не знаем всего или не хотим использовать, а дизайнеры не догадываются, что мы можем.

Контакты Сергея Попова: e-mail, Fb, twitter

Это доклад — один из лучших на Frontend Conf. Понравилось, и хотите больше — подпишитесь на рассылку, в которой мы собираем новые материалы и даем доступ к видео, и приходите на Frontend Conf РИТ++ в мае.

Знаете больше и готовы делиться опытом — отлично! Присылайте тезисы, прием докладов уже открыт и будет продолжаться до 27 февраля.

Выучить CSS Grid за 5 минут – миссия выполнима

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

Grid Layout – основа основ веб-дизайна, это вам любой верстальщик скажет. А вот модуль CSS Grid представляет собой простой и в то же время мощный инструмент для создания сайта. Я считаю, что это намного лучше, чем, например, Bootstrap. В этом году у модуля также появилась встроенная поддержка популярных браузеров (Safari, Chrome, Firefox, Edge), поэтому любой веб-разработчик в любом случае столкнется с этой технологий, будь то сейчас или позже.

В этой статье мы затронем основные элементы. Поехали!

Двумя основными компонентами CSS Grid являются обертка (parent) и элементы (children). Обертка – это сетка, внутри которой как раз и содержатся все элементы.

Вот пример разметки для parent с шестью children:

<div>
  <div>1</div>
  <div>2</div>
  <div>3</div>
  <div>4</div>
  <div>5</div>
  <div>6</div>
</div>

Теперь предоставляем обертке div отображение сетки:

.wrapper {
    display: grid;
}

Да, сейчас это не работает, но только потому, что еще не определили вид нашей сетки. Пока 6 div просто располагаются друг над другом:

Здесь также добавлены стили, но пусть они вас не путают: стили и CSS эффекты никак не соприкасаются с нашей темой.

Давайте определим столбцы и строки, чтобы создать двухмерность. Пусть это будет 2 строки и 3 столбца. Для этого обратимся к grid-template-column и grid-template-row:

.wrapper {
    display: grid;
    grid-template-columns: 100px 100px 100px;
    grid-template-rows: 50px 50px;
}

Мы указали, что у grid-template-columns три значения, следовательно получим столько же столбцов. Аналогичная ситуация со строками: 2 значения в  grid-template-rows – это две строки. Наши строки будут задавать ячейкам ширину в 50px, а столбцы – длину в 100px. Имеем следующую разметку:

Давайте проверим, правильно ли вы поняли связь значений и вида нашей сетки. Обратимся к следующему примеру:

.wrapper {
    display: grid;
    grid-template-columns: 200px 50px 100px;
    grid-template-rows: 100px 30px;
}

Постарайтесь нарисовать это в уме. Выглядит вторая разметка так:

А вот размещение элементов в сетке – это уже задача посложнее. Нужно очень хорошо представлять, как это все будет выглядеть. Например, создадим сетку 3х3, пользуясь той же разметкой, что и раньше:

.wrapper {
    display: grid;
    grid-template-columns: 100px 100px 100px;
    grid-template-rows: 100px 100px 100px;
}

Это создаст следующий макет:

Беда в том, что мы видим вариант сетки 3х2, тогда как определяли ее как 3х3. Все потому, что у нас изначально только 6 элементов для заполнения, поэтому еще одну строку мы попросту не видим. Чтобы она стала видимой, нам нужно добавить еще 3 дополнительных элемента.

Чтобы изменить размер или позиционировать элементы, мы воспользуемся их свойствами grid-row и grid-column:

.item1 {
    grid-column-start: 1;
    grid-column-end: 4;
}

Мы выставляем условие, при котором item1 должен начинаться уже в первой линии и заканчиваться в 4-ом столбце. Таким образом, item1 займет всю первую строку, и мы получим следующую разметку:

Наверное, вас терзает вопрос, почему мы указали в коде 4 столбца, когда у нас их 3? Ну тут все просто: мы говорим не о середине этих столбцов, а о закрывающих их линиях. Посмотрите на следующее изображение, чтобы понять:

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

Но на этом интересные возможности CSS Grid не заканчиваются. Вот более лаконичный и удобоваримый синтаксис примера выше:

.item1 {
    grid-column: 1 / 4;
}

Давайте посмотрим, насколько правильно вы поняли суть наших манипуляций с разметкой. Перестраиваем содержимое:

.item1 {
    grid-column-start: 1;
    grid-column-end: 3;
}
.item3 {
    grid-row-start: 2;
    grid-row-end: 4;
}
.item4 {
    grid-column-start: 2;
    grid-column-end: 4;
}

И вот что получаем в итоге. Подумайте, каким образом мы сделали сетку такой:

Вот и все основные моменты работы с Grid Layout в CSS!

Теория и практика архитектуры Грид

Впервые термин «Grid» был введен в 1998 году Карлом Кессельманом и Яном Фостером, и он звучал так:

Компьютерная сеть (грид) – это аппаратно-программная инфраструктура, которая обеспечивает надежный, устойчивый, повсеместный и недорогой доступ к высокопроизводительным компьютерным ресурсам

Эта концепция заинтересовала ученых, исследовавших эту область науки, хотя Фостер и Кессельман были далеко не первыми, кто говорил об удаленном доступе к ресурсам, данным и сервисам по запросу, и продолжила развиваться. В соавторстве со Стивом Тьюке, спустя несколько лет, ученые уточнили определение термина «Грид» и сформулировали несколько ключевых положений:

  • «…мы уточнили это определение, учитывая социальные и политические аспекты, и заявили, что грид-компьютинг – это скоординированное разделение ресурсов и решение задач в динамически меняющихся виртуальных организациях со многими участниками…»
  • «Ключевая концепция - это достижение договоренности о разделении ресурсов между поставщиками и потребителями и использование полученного пула ресурсов для различных целей... Разделение, о котором мы говорим, - это не просто обмен файлами, а еще и прямой доступ к компьютерам, программному обеспечению, данным и другим ресурсам, как этого требует ряд стратегий, принятых в промышленности, науке и инженерии для совместного решения задач и выделения ресурсов…»
  • «Очевидно, что это разделение должно самым тщательным образом контролироваться поставщиками и потребителями ресурсов, должно быть ясно и четко определено, что именно находится в совместном использовании, кому разрешается пользоваться разделяемыми ресурсами и на каких условиях…»

Эти положения стали основой для разработки стандартов Грид-систем и формулирования требований к ним и их архитектуре.

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

Цель этой курсовой работы состоит в проведении анализа архитектуры Грид-систем, их типов, требований к ним в целом и применения архитектуры. Для достижения обозначенной цели служат следующие задачи:

  1. изучение требований к Грид-системам;
  2. обозначение типов Грид-систем;
  3. изучение архитектуры Грид, ее уровней, функций и применения.

Предмет исследования: требования к Грид-системам, типы Грид-систем и их архитектура.

Объект: Грид-системы.

Структура работы:

Глава 1 посвящена Грид в целом и требованиям к их архитектуре. Раздел 1.1 посвящен концепции Грид-систем и их типам. В разделе 1.2 рассматриваются требования к архитектуре Грид.

Глава 2 посвящена непосредственно сервисно-ориентированной архитектуре Грид и ее применению. Раздел 2.1 посвящен уровням архитектуры Грид и их функциям. В разделе 2.2 рассматриваются варианты применения сервисно-ориентированной архитектуры Грид.

Чем отличается grid-template от grid-auto

Я всегда задавался вопросом: в чем разница между свойствами grid-template-* и grid-auto-*? Особенно интересно выявить различия между grid-template-rows/columns и grid-auto-rows/columns.

Явный Grid (CSS Grid Layout) определяется свойством grid-template-*:

Три объединенных свойства grid-template-rows, grid-template-columns, и grid-template-areas определяют явный Grid.

С другой стороны, неявный Grid определяется, как «все остальное» ‒

Когда элементы расположены за пределами сетки, Grid-контейнер генерирует неявные полосы путем их добавления в общий Grid.

Эти определения сложно понять, поэтому попробуем перефразировать.

Внутри Grid-контейнера есть ячейки. Любая ячейка, для которой можно определить положение и размер с помощью свойства grid-template-* , является частью сетки. Любая Grid-ячейка, для которой нельзя определить положение и размер с помощью этого свойства, является частью неявного Grid.

Свойства grid-template-* и grid-auto-* немного похожи. Но их применение приносит разные результаты.

Свойства grid-template-* используется для установки позиции и размера ячеек сетки. Свойства grid-auto-* определяет только размер ячеек.

Поэтому grid-template-* применяется для создания явного Grid. Свойства grid-auto-* — чтобы определить размер неявного Grid (который создается автоматически).

grid-template – это сокращенное название трех свойств: grid-template-rows, grid-template-columns, grid-template-areas. Сосредоточимся на первых двух свойствах.

Начнем со свойства grid-template-rows. Если нужно создать сетку с одной строкой высотой в 100px, используем следующий код:

.grid {
	display: grid;
	grid-template-rows: 100px;
}

Чтобы добавить еще одну строку, добавляем еще одно значение через пробел.

.grid {
	display: grid;
	grid-template-rows: 100px 100px;
}

Таким же образом работает и свойство grid-template-columns.

Существует несколько способов определить высоту и ширину колонок с помощью свойства grid-template-* . В примере, приведенном выше, каждое значение длины, разделенное пробелом, представляет собой одну полосу. Получается, что свойства grid-template-* используются для определения размеров, расположения и разметки Grid-ячеек.

grid-auto – это сокращенное название трех свойств: grid-auto-rows, grid-auto-columns и grid-auto-flow. Рассмотрим первые два.

Свойства grid-auto-rows и grid-auto-columns принимают значение длины любых неявных Grid-ячеек. Например, можно создать ячейку высотой 100px:

.grid {
	display: grid;
	grid-auto-rows: 100px;
}

В отличие от grid-template-* свойства grid-auto-* принимают только одно значение длины.

Чтобы лучше понять разницу между свойствами grid-template-* и grid-auto-* , а также отличия между явным и неявным Grid, рассмотрим приведенный ниже HTML-код.

<div>
  <div>Cell 1</div>
  <div>Cell 2</div>
  <div>Cell 3</div>
  <div>Cell 4</div>
  <div>Cell 5</div>
  <div>Cell 6</div>
  <div>Cell 7</div>
  <div>Cell 8</div>
</div>

И CSS:

.grid {
	display: grid;
	grid-gap: 10px; /* добавим отступ между полосами для наглядности */
}

Сейчас наш Grid выглядит так.

Кажется, что ничего не произошло. Но на самом деле мы только что создали неявный Grid. Его можно увидеть с помощью Grid-инспектора в Firefox.

Чтобы указать высоту строк сетки, можно использовать свойство grid-auto-row.

.grid {
	display: grid;
	grid-gap: 10px; /* добавим промежутки для наглядности */
	grid-auto-rows: 30px;
}

Мы определили одно значение высоты, и этот стиль будет применен ко всем строкам в Grid.

Теперь определим явный Grid. Создадим сетку с двумя строками высотой 100px.

.grid {
  display: grid;
  grid-gap: 10px; /* добавим промежутки для наглядности */
  grid-auto-rows: 30px;
  grid-template-rows: 100px 100px;
}

 

У первых двух строк высота 100px, а у остальных высота определяется свойством grid-auto-rows. Разница между явным и неявным Grid более очевидна на изображении, приведенном ниже.

Свойства grid-template-* используются для создания, размещения и определения размера ячеек в явном Grid. Любая ячейка, которая создается этим свойством, является элементом неявного Grid, размер которого определяется свойством grid-auto-* .

Данная публикация представляет собой перевод статьи «Understanding the difference between grid-template and grid-auto» , подготовленной дружной командой проекта Интернет-технологии.ру

Добавить комментарий

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