Как отобразить два раздела рядом друг с другом на смартфоне?

#html #css #grid

#HTML #css #сетка

Вопрос:

У меня есть 4 разделы, и на обычном экране компьютера они находятся рядом друг с другом со следующим кодом.

 .parent {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  grid-template-rows: 1fr;
  grid-column-gap: 0px;
  grid-row-gap: 0px;
}

.div1 { 
  grid-area: 1 / 1 / 2 / 2; 
}

.div2 {
  grid-area: 1 / 2 / 2 / 3;
}

.div3 {
  grid-area: 1 / 3 / 2 / 4; 
}

.div4 {
  grid-area: 1 / 4 / 2 / 5;
}  
 <div class="parent">
  <div class="div1">1</div>
  <div class="div2">2</div>
  <div class="div3">3</div>
  <div class="div4">4</div>
</div>  

Когда я просматриваю это на своем смартфоне, все 4 divs будет отображаться в 1 строке.
Как я могу отобразить 2 divs в 1 row ? Таким образом, конечный результат будет 2 rows у 2 divs каждого на смартфоне.

Ответ №1:

измените эту строку: grid-template-columns: repeat(4, 1fr); на: grid-template-columns: repeat(2, 1fr); тогда у вас будет только 2 столбца в строке.

затем измените эту строку: grid-template-rows: 1fr; на: grid-auto-rows: auto; чтобы автоматически вставлять столько строк, сколько необходимо, и увеличивать их до максимального содержимого.

и последнее, но не менее важное: удалите css для всех div-блоков, поскольку они в любом случае бесполезны в этом случае. Также это не так, как есть, или должно использоваться.

используйте медиа-запросы для настройки дизайна для разных размеров экрана, как показано в примере ниже:

@media запустите медиа-запрос. при only screen этом вы определяете, что в качестве правила следует использовать только размер экрана. and (max-width: 480px) определяет правило, которое будет применяться для мобильных экранов (наибольшая ширина 480 пикселей для портретного режима).

 .parent {
  display: grid;
  grid-auto-rows: auto;
  grid-gap: 0px;
}

@media only screen
  and (max-width: 480px) {
    .parent {
      grid-template-columns: repeat(2, 1fr);
    }
}

@media only screen
  and (min-width: 481px) {
    .parent {
      grid-template-columns: repeat(4, 1fr);
    }
}  
 <div class="parent">
  <div class="div1">1</div>
  <div class="div2">2</div>
  <div class="div3">3</div>
  <div class="div4">4</div>
</div>  

Комментарии:

1. Спасибо! Это именно то, к чему я стремился. 1

Ответ №2:

Вы можете использовать @media screen для создания пользовательских CSS для разных размеров экрана.

@media screen используется для указания разного макета для разных размеров экрана.

Вы можете найти руководство здесь:

 https://www.w3schools.com/cssref/css3_pr_mediaquery.asp
  

В этом руководстве также приведены примеры, из которых вы получите представление о том, как @media screen объединить вещи.

Комментарии:

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

2. Спасибо за ссылку. я проверю это!