CSS и вёрстка

Как создать квадрат в CSS

📅 ⏱ 21:12 ⏳ 1 мин 💬 0

Как создать квадрат в css: простыми словами, по шагам и с примерами. Разбираем, как это работает на практике, типичные ошибки и лучшие решения. Раскрываем тему:

Коротко: квадрат в CSS делают тремя способами: задать равные width и height, использовать aspect-ratio: 1 / 1 (современный и адаптивный вариант) или «старый» приём с padding-top: 100%. Для адаптивной сетки квадратов лучше всего подходит aspect-ratio.

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

Способы

Способ Особенность
width + height фиксированный размер
aspect-ratio: 1 адаптивный, зависит от ширины
padding-top: 100% старый трюк до aspect-ratio
grid с квадратными ячейками для сетки плиток

Вкладки: примеры




CSS
.square {
  width: 120px;
  height: 120px;
}

Просто и предсказуемо. Минус — на разных экранах размер не меняется, поэтому для адаптивных плиток подходит хуже.

CSS
.square {
  width: 100%;
  aspect-ratio: 1 / 1;
  background: #f3f3f3;
  border-radius: 12px;
}

Современный способ: высота вычисляется из ширины автоматически. Работает во всех актуальных браузерах и не требует хаков.

CSS
.square {
  position: relative;
  width: 100%;
  padding-top: 100%;   /* высота = ширине */
  background: #f3f3f3;
}
.square > * {
  position: absolute;
  inset: 0;
}

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

CSS
.tiles {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
  gap: 16px;
}
.tile {
  aspect-ratio: 1;
  overflow: hidden;
  border-radius: 12px;
}
.tile img { width: 100%; height: 100%; object-fit: cover; }

Сетка ровных квадратов, которая сама переносит плитки. object-fit: cover не даёт изображению искажаться.

Содержимое внутри квадратаЧтобы содержимое стояло по центру, задайте квадрату display: grid; place-items: center;. А если это картинка — object-fit: cover, чтобы она заполнила квадрат без искажений.

Практика: галерея квадратов

  1. Сетка с auto-fill и minmax.
  2. Плиткам — aspect-ratio: 1.
  3. Обрезка содержимого: overflow: hidden.
  4. Картинкам — object-fit: cover.
  5. Радиусы и тени — как в дизайн-системе.
  6. Проверьте: при изменении окна плитки остаются квадратными.

Частые ошибки: причина → решение

Симптом Причина Решение
Квадрат «вытянулся» участвует padding/бордер box-sizing: border-box
Картинка искажена нет object-fit object-fit: cover
aspect-ratio не работает старый браузер фолбэк через padding-top
Содержимое обрезается мало места центрировать и уменьшить отступы

Проверьте себя

Чек-лист




Какой способ сделать адаптивный квадрат современный?




Что нужно картинке внутри квадрата?




Вопросы и ответы

Добавьте border-radius: 50%. Форма останется «квадратной» в раскладке, но визуально станет кругом.

aspect-ratio: 16 / 9; — пропорции задаются так же просто, как и квадрат.

Скорее всего внутри есть padding или рамка, а box-sizing не задан. Включите border-box или перенесите отступы внутрь.

Практически нет: aspect-ratio поддерживается во всех актуальных браузерах. Трюк оставьте для очень старых проектов.

Итоги

  • Фиксированный квадрат — равные width и height.
  • Адаптивный — aspect-ratio: 1 / 1.
  • Картинке — object-fit: cover и overflow: hidden.
  • Старый padding-трюк нужен только для поддержки древних браузеров.
Поделиться: ВКонтакте Telegram WhatsApp Одноклассники Viber Мой Мир

Комментарии

Пока комментариев нет — будьте первым, кто поделится мнением.

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

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

Получите консультацию нашего маркетолога

Изучит ваш проект, подберет подходящие услуги и тарифы

Получите бесплатный аудит

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

Закажите услугу Каталог морепродуктов

Наш специалист свяжется с вами в ближайшее время и уточнит детали

Закажите адаптивный сайт

Наш специалист поможет составить Вам техническое задание на разработку сайта

Закажите сайт

Наш специалист поможет составить Вам техническое задание на разработку сайта

Закажите сайт лендинг

Наш специалист поможет составить Вам техническое задание на разработку сайта

Закажите сайт каталог

Наш специалист поможет составить Вам техническое задание на разработку сайта

Закажите интернет-магазин

Наш специалист поможет составить Вам техническое задание на разработку сайта

Закажите веб-приложение

Наш специалист поможет составить Вам техническое задание на разработку сайта

Закажите тариф Аутсорс

Стоимость от 150 000 ₽

Закажите тариф Магазин

Стоимость 90 000 ₽

Закажите тариф Классический

Стоимость 60 000 ₽

Закажите тариф Эконом

Стоимость 40 000 ₽

Закажите SEO продвижение

Наш специалист свяжется с вами, проведет анализ, предложит стоимость