Responsive Design

Responsive Design — это подход к веб-дизайну, при котором страницы автоматически адаптируются к различным размерам экранов и устройствам.

Основные принципы

  • Fluid Grid — гибкая сеточная система
  • Flexible Images — адаптивные изображения
  • Media Queries — CSS правила для разных устройств
  • Viewport Meta Tag — контроль масштабирования

Breakpoints (контрольные точки)

 1/* Мобильные устройства */
 2@media (max-width: 767px) {
 3  .container { width: 100%; }
 4}
 5
 6/* Планшеты */
 7@media (min-width: 768px) and (max-width: 1023px) {
 8  .container { width: 750px; }
 9}
10
11/* Десктопы */
12@media (min-width: 1024px) {
13  .container { width: 1200px; }
14}

Mobile-First подход

 1/* Базовые стили для мобильных */
 2.container {
 3  width: 100%;
 4  padding: 15px;
 5}
 6
 7/* Стили для больших экранов */
 8@media (min-width: 768px) {
 9  .container {
10    max-width: 750px;
11    margin: 0 auto;
12  }
13}
14
15@media (min-width: 1200px) {
16  .container {
17    max-width: 1170px;
18  }
19}

Flexbox для responsive

 1.flex-container {
 2  display: flex;
 3  flex-wrap: wrap;
 4}
 5
 6.flex-item {
 7  flex: 1 1 300px; /* grow shrink basis */
 8  margin: 10px;
 9}
10
11@media (max-width: 768px) {
12  .flex-item {
13    flex: 1 1 100%;
14  }
15}

CSS Grid для responsive

 1.grid-container {
 2  display: grid;
 3  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
 4  gap: 20px;
 5}
 6
 7@media (max-width: 768px) {
 8  .grid-container {
 9    grid-template-columns: 1fr;
10  }
11}

Адаптивные изображения

1/* CSS */
2img {
3  max-width: 100%;
4  height: auto;
5}
1<!-- HTML с srcset -->
2<img src="small.jpg" 
3     srcset="small.jpg 480w, 
4             medium.jpg 800w, 
5             large.jpg 1200w"
6     sizes="(max-width: 480px) 100vw,
7            (max-width: 800px) 50vw,
8            25vw"
9     alt="Описание">

FAQ

Что лучше: mobile-first или desktop-first?

Mobile-first предпочтительнее, так как проще добавлять функции для больших экранов, чем упрощать для маленьких.