Управление позициями div

У меня есть несколько div (1, 2 и 3 завернуты в контейнер):

И мне нужно изменить эти div в соответствии с адаптивным дизайном следующим образом:

Как я могу этого добиться? Может быть, с помощью сетки?

@ Коди Грей не хочет объяснить, почему открыл этот вопрос, который вообще не показывает никаких усилий?

dippas 23.12.2020 13:59

@dippas Потому что «усилия» никогда не требуются в вопросе о переполнении стека. Недостаток усилий не является и никогда не был близкой причиной.

Cody Gray 23.12.2020 14:01

Я видел десятки, если не больше, закрытых вопросов такого типа.

dippas 23.12.2020 14:05

Я видел десятки откровенно не по теме вопросов, которые не были закрыты, @dippas. Не все в Stack Overflow идеально. Если вы хотите отметить другие вопросы, которые, по вашему мнению, закрыты некорректно, пожалуйста, продолжайте.

Cody Gray 23.12.2020 14:06
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
1
4
82
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

CSS-Grid помогает нам добиться этого без использования каких-либо дополнительных оберток и без сокрытия не скрываемых вещей с помощью медиа-запросов. В этом случае я использую grid-areas понятие CSS-Grid. Хотя того же можно добиться и с помощью grid-lines концепции CSS-Grid.

.main {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  grid-auto-rows: minmax(100px, auto);
  max-width: 960px;
  margin: 0 auto;
  gap: 1rem;

  /* Placing grid-items inside our grid */
  grid-template-areas:
    "one one one one four four four"
    "one one one one four four four"
    "two two two two four four four"
    "two two two two four four four"
    "three three three three four four four";
}

.one,
.two,
.three,
.four {
  border: 1px solid #777;
  text-align: center;
  line-height: 5.5;
  font-size: 2rem;
  font-weight: 700;
}
.one {
  grid-area: one;
}

.two {
  grid-area: two;
}

.three {
  grid-area: three;
}

.four {
  grid-area: four;
}

@media (max-width: 768px) {
  .main {
    width: 70%;
    grid-template-columns: repeat(3, 1fr);
    grid-template-areas:
      "one one one"
      "one one one"
      "two two two"
      "two two two"
      "four four four"
      "four four four"
      "four four four"
      "four four four"
      "three three three";
  }
}
<!DOCTYPE html>
<html lang = "en">
  <head>
    <meta charset = "UTF-8" />
    <meta name = "viewport" content = "width=device-width, initial-scale=1.0" />
    <title>Todo | Asynchronous Dynamaic Data</title>
    <link rel = "stylesheet" href = "./style.css" />
  </head>
  <body>
   <main class = "main">
          <div class = "one"> 1</div>
          <div class = "two"> 2</div>
          <div class = "three">3</div>
          <div class = "four">4</div>
    <main>
    <script src = "./script.js"></script>
  </body>
</html>

ПРИМЕЧАНИЕ. То же самое можно сделать и с помощью flexbox, однако нам потребуется дополнительный код. Некоторый контент просто нужно скрыть на маленьких экранах, а другой показать вместе со свойством orderflexbox..

Да, я использую flexbox, но не думайте о grid-row! Спасибо

Denis 23.12.2020 13:43

Это также возможно с flexbox:

Imran Rafiq Rather 23.12.2020 13:46

Я сделаю это для вас :)

Imran Rafiq Rather 23.12.2020 13:46

Использование flexbox с заказом?

Denis 23.12.2020 13:47

Ага: Только с этим :)

Imran Rafiq Rather 23.12.2020 13:53

И используя flex-direction:column :)

Imran Rafiq Rather 23.12.2020 13:53

Другие вопросы по теме