Расширение для заполнения оставшегося места в макете CSS Grid

Я хочу использовать сетку CSS, и вот макет цели: Расширение для заполнения оставшегося места в макете CSS Grid

Я создаю интерфейс, который должен расширяться вправо, чтобы заполнить экран браузера; мой текущий код заставляет столбец 2 внешней сетки иметь такую ​​же ширину, как браузер Кроме того для столбца 1; или, может быть, это вызывает один из его детей, и он просто расширяется, чтобы приспособиться. В любом случае, он выливается за пределы страницы по горизонтали.

Итак, код:

#main {
  width: 100%;
  display: grid;
  grid-template-columns: 250px 100%;
  grid-template-rows: 100px 100%;
}

#col-2-outer {
  display: grid;
  grid-template-columns: 250px auto;
  grid-template-rows: 100%;
}

#row-1-inner {
  grid-column: span 2;
}

#col-2-inner table {
  width: 100%;
}
<div id = "main">
  <div id = "col-1-outer"></div>
  <div id = "col-2-outer">
    <div id = "row-1-inner"></div>
    <div id = "row-2-inner">
      <div id = "col-1-inner"></div>
      <div id = "col-2-inner">
        <table></table>
      </div>
    </div>
  </div>
</div>

К вашему сведению, на данный момент я отказался от областей шаблонов, пока не разберусь с основами (если это как-то не решит мою проблему, но я понимаю, что это строго функция организации кода?).

Улучшение производительности загрузки с помощью 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 страниц, которые помогут...
12
0
18 383
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

100% для 2-го столбца в вашем grid-template-columns основан на ширине контейнера — вместо того, чтобы занимать свободное пространство внутри контейнера, он будет выталкиваться вправо, потому что 2-й столбец пытается соответствовать ширине контейнера.

Попробуйте изменить это на auto, и это должно решить проблему, так как оно будет занимать место только до конца контейнера и не дальше.

Источник: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-template-columns

Я бы предложил изменить разметка на сетку 3x2, как показано ниже:

  1. Удалите структуру иерархический, как в вашем коде, и добавьте элемент один для каждого раздела в сетка.

  2. Обратите внимание, что в правиле grid-template-columns: 250px 150px auto 250 пикселей — это ширина вашего col-1-outer, а 150 пикселей — ширина col-1-inner.

  3. Охватывать первый столбец в двух строках с помощью grid-row: span 2

  4. Охватывать первый ряд во втором столбец с помощью grid-column: span 2.

  5. Расширьте table над последним элемент сетки, используя 100% ширину и высоту.

См. демо ниже:

* {
  border: 1px solid; /* For illustration */
}

#main {
  width: 100%;
  display: grid;
  grid-template-columns: 250px 150px auto;
  grid-template-rows: 100px auto;
}

#col-1-outer {
  grid-row: span 2;
}

#row-1-inner {
  grid-column: span 2;
}

#col-2-inner table {
  width: 100%;
  height: 100%;
}
<div id = "main">
  <div id = "col-1-outer">col-1-outer</div>
  <div id = "row-1-inner">col2-row-1-inner</div>
  <div id = "col-1-inner">col2-row2-inner</div>
  <div id = "col-2-inner">
    <table><tr><td>table</td></tr></table>
  </div>
</div>

Я дал правильный ответ парню, который решил мою проблему с шириной, но, как бы то ни было, это действительно лучшая сетка, и я принял ее,

Jonline 21.02.2019 18:56

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