- Как создавать адаптивные сетки
- Создание адаптивной сетки по шагам
- Шаг 1. Получаем заказ, изучаем макет от дизайнера
- Шаг 2. Размечаем мобильную версию сайта
- Шаг 3. Прописываем стили и создаём сетки
- Шаг 4. Добавляем вьюпорт
- Шаг 5. Указываем стили для планшетной версии сайта
- Шаг 6. Приступаем к десктопной версии сайта
- Полезные и часто применяемые характеристики медиавыражений
- Материалы по теме
- Как использовать CSS Grid для создания адаптивного веб-макета
- CSS Grid: базовая терминология
- Начало работы с CSS Grid
- Отображение контейнера сетки и элементов
- Использование единицы измерения fr и нотации repeat()
- Демо-версия: создание веб-приложения с CSS-Grid
- HTML
- CSS
- CSS Grid: основные выводы
- Css grid адаптивная верстка без медиа запросов
- CSS
- HTML
Как создавать адаптивные сетки
Адаптивная вёрстка позволяет создать сайт, способный динамично меняться в зависимости от устройства, на котором его открывают, и размера его экрана. С помощью адаптивных сеток возможно сделать дизайн, который легко перестраивается при необходимости.
Один из самых удобных методов — создание адаптивных сеток с помощью медиавыражений в CSS.
👉🏼 Медиавыражения — это способ, который помогает определить в стилях характеристики браузера или предпочтения пользователя, а затем применить стили или запустить другой код на основе этих параметров.
То есть на экране смартфона сайт будет выглядеть иначе, чем на экране ноутбука, чтобы пользователю было комфортно взаимодействовать с интерфейсом. Медиавыражения меняют ширину экрана, ориентацию устройства, настройки операционной системы и многое другое.
Любое медиавыражение начинается директивы @media , её указание необходимо, чтобы выражение заработало.
В скобках указывают характеристики — условия, при которых медиавыражение меняет вид сайта соответственно указанным свойствам.
Создание адаптивной сетки по шагам
Шаг 1. Получаем заказ, изучаем макет от дизайнера
В макете предусмотрены нужные размеры и особенности дизайна на разных устройствах. Оптимально начинать вёрстку с дизайна для мобильных устройств. Затем с помощью медиавыражений несложно сделать другие версии сайта.
Шаг 2. Размечаем мобильную версию сайта
Создаём разметку сайта в файле HTML, учитывая смысловое предназначение каждого блока
Шаг 3. Прописываем стили и создаём сетки
Указываем стили всем элементам в CSS. Верстаем сетки, используя инструменты Grid или Flexbox. В зависимости от вида сетки выбирается одно или другое свойство.
Grid — это технология, позволяющая создавать сетки, где каждый элемент может занимать определенное количество ячеек и строк.
В свою очередь Flexbox — это способ размещения элементов в одну в строку или колонку, с возможностью адаптации их размера и порядка в зависимости от дизайна сайта.
- Когда использовать флексы, а когда гриды
- Флексы для начинающих
Например, для создания сетки навигации для мобильного устройства используем флексы, выстраиваем элементы сверху вниз:
Шаг 4. Добавляем вьюпорт
Указываем в разметке в вьюпорт, который будет включать медиазапросы, чтобы на каждом устройстве отображалась подходящая версия сайта:
Атрибут width=device-width означает, что размер сайта на устройстве равен размеру в пикселях, который указаны в CSS.
Атрибут initial-scale говорит о том, что сайт на устройстве будет выглядеть именно так, как описано в CSS, один к одному.
Шаг 5. Указываем стили для планшетной версии сайта
Сайт полностью свёрстан для мобильного устройства, приступаем к созданию размеров для планшета. Для этого указываем медиавыражения, которые будут перестраивать вёрстку под размер экрана.
Когда экран устройства становится шире, мобильная вертикальная сетка перестраивается в горизонтальную, элементы распределяются по пространству экрана.
Пример сетки на разных устройствах:
Чтобы сетка адаптировалась к ширине экрана, пишем в характеристике условия, при выполнении которых сетка будет меняться. Например, когда экран устройства будет шириной от 780px , сетка перестроится:
@media (min-width: 780px) < .navigation < display: flex; flex-direction: row; margin: 0 auto; >> @media (min-width: 780px) < .navigation_item < width: 390px; margin: 0 auto; >>
Шаг 6. Приступаем к десктопной версии сайта
Здесь сетки могут ещё больше видоизменяться, в каких-то ситуациях лучше ввести гриды вместо флексов:
Полезные и часто применяемые характеристики медиавыражений
min-width и max-width — CSS-правила начинают работать от указанного значения и выше, включая значение. Когда пользователь открывает сайт на устройстве, ширина которого начинается от min-width , вёрстка перестраивается, блоки размещаются соответственно подходящему дизайну.
@media (min-width: 1200px) < .navigation < display: flex; justify-content: space-between; width: 540px; margin: 0 auto; >> @media (max-width: 1200px) < .nav-list < width: 60px; >>
min-height и max-height — применяют, когда адаптируют плотность интерфейса для экранов разной высоты — например, для интерфейса электронной почты.
@media (min-height: 1024px) < .user-list < >> @media (max-height: 1024px) < .navigation < >>
resolution — характеристика, которая говорит о плотности экрана. Её применяют с приставкой min- , чтобы указать на экраны с плотностью выше указанной.
@media (min-resolution: 2dppx) < .navigation < background-image: url("images/background@2x.png"); >>
Материалы по теме
«Доктайп» — журнал о фронтенде. Читайте, слушайте и учитесь с нами.
Как использовать CSS Grid для создания адаптивного веб-макета
Макет CSS Grid — это двухмерная сетка, предназначенная для помощи веб-разработчикам в разделении элементов на столбцы и строки для создания согласованного и бесшовного макета для веб-приложений.
Логика CSS Grid заключается в том, что, если разработчик берет такой элемент, как div и отображает в нем сетку, он может затем разбить элемент на столбцы и строки — вместе известные как треки — где элементы можно взять и разместить в сетке. С CSS Grid, все это может произойти без дополнительной работы с использованием свойств позиционирования ( top , right , left , bottom ).
Есть случаи, когда можно использовать фреймворки CSS, а в других — CSS Grid, но, как и в большинстве случаев в веб-разработке, это зависит от вашего варианта использования.
В этой статье мы сосредоточимся на базовом дизайне с использованием строк, столбцов и областей для создания простого адаптивного веб-приложения с использованием CSS Grid.
CSS Grid: базовая терминология
Давайте начнем с того, что уделим несколько минут тому, чтобы понять некоторые из основных основ CSS Grid.
- Контейнер сетки — ящик, в котором находится сетка. Это основной строительный блок CSS Grid.
- Ячейка сетки — одна за другой элемент на сетке
- Область сетки — одна или несколько ячеек, которые имеют форму квадрата или прямоугольника (но не L-образной формы).
- Сетка треков – совокупность строк и столбцов, определяемых с помощью свойств grid-template-columns и grid-template-rows
- Grid gaps — помогают создать на сетке промежутки. Вы не можете размещать содержимое внутри промежутка сетки.
- Явная сетка — определяется вами с помощью grid-template-columns и grid-template-rows
- Неявная сетка — определяется для вас браузером
Начало работы с CSS Grid
Отображение контейнера сетки и элементов
Контейнер сетки является отправной точкой для отображения сетки на элементе. Чтобы начать работу с сеткой, мы должны сначала отобразить сетку в контейнере, используя свойство ниже:
В CSS Grid отношения между контейнером grid и его элементами (elements) являются отношениями родителя и потомков соответственно. Каждая сетка имеет контейнер, содержащий элементы, и каждый элемент, помещенный в сетку, является элементом сетки.
Когда вы делаете контейнер grid ( display: grid; ), все его прямые дочерние элементы автоматически становятся элементами сетки.
Но отображение элементов в виде сетки само по себе мало что делает. Именно здесь вступают в игру другие концепции, такие как grid-template-columns и grid-template-rows , как вы увидите в нашем демо-фрагменте кода приложения ниже.
Использование единицы измерения fr и нотации repeat()
Хотя мы всегда можем использовать фиксированные единицы измерения при определении сеток, такие как px , CSS Grid layout также вводит новую единицу измерения, называемую fr .
Блок fr представляет собой часть доступного пространства в сеточном контейнере и может быть использован для создания гибких дорожек сетки.
Приведенный выше фрагмент кода разделит доступное пространство на четыре части: две части будут назначены первой дорожке, в то время как оставшиеся две части будут назначены по одной дорожке каждая в соответствии с оставшимся доступным пространством. Это помогает обеспечить согласованность при построении вашей сетки.
Функция repeat() также помогает обеспечить согласованность и может быть использована для повторения всего или части трек листа например так:
Демо-версия: создание веб-приложения с CSS-Grid
Я включил полный набор кодов здесь, но ниже я разобью фрагменты кода с некоторыми внутренними комментариями, чтобы показать, как построить веб-приложение с помощью CSS Grid.
HTML
Сначала мы создадим простой HTML шаблон и заполним его фиктивным текстом, чтобы помочь установить некоторую структуру:
CSS
Здесь мы свяжем таблицу стилей (CSS) с нашим шаблоном HTML и реализуем макет с помощью CSS Grid. Мы добавили несколько комментариев к фрагментам кода для большей ясности.
body < background: #F1F0EE; margin: 0; >.container < /* first, create a grid container */ display: grid; /* define the amount and size of each column. Here we define 4 columns with equal fractions */ grid-template-columns: repeat(4, 1fr); /* create horizontal tracks as rows and here we create 4 rows with different sizes */ grid-template-rows: 0.2fr 1.5fr 1.2fr 0.8fr; /* define where each element will be in the grid. We achieve this with grid-template-areas */ grid-template-areas: "nav nav nav nav" "main main main main" "about about about sidebar" "contact contact contact sidebar" "footer footer footer footer"; /* we can set gaps - gutters between the rows and columns*/ gap: 0.5rem; height: 100vh; font-weight: 800; font-size: 12px; color: #004d40; text-align: center; >/* Styling the Nav starts here */ nav < background-color: #3770F6; grid-area: nav; >nav ul < list-style: none; font-size: 16px; font-weight: bolder; float: left; >li < display: inline-block; >li a < color: #ffffff; >/* Styling the Nav ends here */ a:hover < color: #FF7F50; >main < grid-area: main; >main h2 < font-weight: bolder; >main p < text-align: left; >.sidebar < background: #D3D4D7; grid-area: sidebar; >.about < background: #D7D6D3; grid-area: about; >.contact < background: #BDBCBB; grid-area: contact; >footer < background-color: #3770F6; grid-area: footer; color: #ffffff; >footer a < color: #ffffff; >a < text-align: center; display: block; font-family: inherit; text-decoration: none; font-weight: bold; margin: 1rem; >/* For */ @media only screen and (max-width: 550px) < .container < grid-template-columns: 1fr; grid-template-rows: 0.4fr 0.4fr 2.2fr 1.2fr 1.2fr 1.2fr 1fr; grid-template-areas: "nav" "sidebar" "main" "about" "contact" "footer"; >>
CSS Grid: основные выводы
Есть много способов достичь схожих целей в CSS. Использование CSS Grid — это всего лишь один из способов размещения элементов в строках и столбцах для разработки согласованных, бесшовных веб-приложений с удобными интерфейсами.
Для получения дополнительной информации о CSS Grid я рекомендую W3 CSS Grid Layout Module и MDN CSS Grid.
Css grid адаптивная верстка без медиа запросов
Итак задача: сделать плитки (карточки с фотографией и заголовками), все они были одного размера (в независимости от размера изображений) и переносились (адаптивность) при изменение размера экрана.
— все картинки разного размера.
CSS
.grid3 < display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); grid-gap: 20px; place-items: center; >.grid3 .item < background: #EE6E39; padding: 1em; border: 1px dashed black; display: grid; grid-template-columns: 1fr; grid-template-rows: 1fr; grid-gap: 10px; place-items: center; width: 150px; height: 150px; >.grid3 .item:nth-child(odd) < background: #D0D0D0; >.grid3 .item img < /*position: absolute;*/ /*top: 0;*/ /*left: 0;*/ width: 100%; height: 100%; object-fit: cover; >
HTML
01