Размеры сетки CSS

#css #css-grid

#css #css-grid

Вопрос:

Я хотел бы знать, есть ли способ ограничить размеры сетки (не элемента, к которому она применяется, а самой сетки). Я объясняю :

Допустим, у нас есть нижний колонтитул с темным фоном, занимающий всю ширину вашей страницы. Этот нижний колонтитул содержит 2 подблока с именами классов .нижний колонтитул__1 и .нижний колонтитул__2, и мы хотим, чтобы они занимали 2/3 и 1/3 доступной ширины с желобом 2rem.

Есть ли способ придать сетке, содержащей два подблока, максимальную ширину сетки (да, я это придумал) 60rem, без изменения ширины блока (помните, у него есть фон, который должен быть полной ширины), без использования оболочки? Таким образом, занимаемая ширина (нижний колонтитул__1 пробел нижний колонтитул__2) должна быть не более 60 мм, центрирована по горизонтали.

 <footer>
  <div class="footer__1">foo</div>
  <div class="footer__2">whatever</div>
</footer>
  
 .footer {
  display: grid;
  grid-template_columns: 2fr 1fr;
  grid-column-gap: 2rem;
  /* grid-max-width: 60rem */
}
  

Спасибо

Ответ №1:

Вы должны обернуть ее дополнительным элементом и ограничить ширину дополнительным элементом.

 footer {
  background-image: linear-gradient(20deg, red, pink);
}

.container {
  display: grid;
  grid-template-columns: 2fr 1fr;
  grid-column-gap: 2rem;
  
  /* just for demo purpose */
  max-width: 300px;
  margin: 0 auto;
  min-height: 150px;
  background: white;
  
}  
 <footer>
  <div class="container">
    <div class="footer__1">foo</div>
    <div class="footer__2">whatever</div>
  </div>
</footer>  

Ответ №2:

Я думаю, что без другого контейнера это невозможно.

Однако вы можете имитировать это, создав нижний колонтитул width: 60rem и установив фон в качестве псевдоэлемента и развернув его.

 footer {
  position: relative;
  z-index: 1;
  width: 60rem;
  margin: 0 auto;
}

footer:before {
  content: '';
  position: absolute;
  top: 0;
  left: 50%;
  z-index: -1;
  transform: translateX(-50%);
  width: 9999px;
  height: 100%;
  background: green;
}  
 <footer>
  <div class="footer__1">foo</div>
  <div class="footer__2">whatever</div>
</footer>  

Лучший подход, как я думаю, — добавить div.footer__inner то, что будет содержать два divs- .footer__1 и .footer__2 .