HTML-компоненты Flex не объединяются в Flex: 1 0 автоматический макет

Я создал целевую страницу с приведенным ниже HTML.

У меня также есть тщательно сконструированный ботинок, показывающий, как именно розовый div расширяется слишком далеко и не закрывает экран, как задумано.

https://www.bootply.com/bYlAS71OWw

У меня есть розовая область, размер которой следует изменить, чтобы занять доступное пространство, заполняя браузер, но не создавая полосу прокрутки.

Похоже, что хлебная крошка и заголовок не вычитаются из общей используемой области.

  • heading находится в col и является гибким,
  • .breadcrumb гибкий.

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

<app-dashboard>
  <div class = "app-body">

    <main class = "main">
      <ol class = "breadcrumb">
        <li class = "breadcrumb-item">
          <a href = "#/">Home</a>

        </li>
        <li class = "breadcrumb-item active">
          <span tabindex = "0">Property Locations</span>
        </li>    
      </ol>

      <div class = "container-fluid d-flex h-100">
        <router-outlet></router-outlet>
        <ng-component class = "d-flex flex-grow w-100">
          <div class = "row w-100">
            <div class = "col">
               HEADING    
            </div>
            <div class = "d-flex flex-grow bg-pink-300 h-100 w-100">
              THIS SHOULD GROW, BUT NOT CREATE A SCROLLBAR
            </div>
          </div>
        </ng-component>
      </div>
    </main>

  </div>
  <footer class = "app-footer">
    <span>
      <a href = "..."></a>Pander.</span>
    <span>
      <i class = "fa fa-fw fa-code-fork"></i>
    </span>
  </footer>
</app-dashboard>

CSS для flex-grow:

.flex-grow {
  flex: 1 0 auto;
}
Улучшение производительности загрузки с помощью 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 страниц, которые помогут...
0
0
88
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Упростите пример (например, удалите пользовательские теги). Я понимаю лишь приблизительно то, чего вы пытаетесь достичь, но сначала кое-что:

  1. Растет и сжимается гибкий элемент, а не гибкий контейнер. И элемент становится гибким элементом только в том случае, если его непосредственный родительский элемент является гибким контейнером. Ваш div с bg-розовый-300 не является гибким элементом, потому что его непосредственный родительский элемент - это просто строка
  2. Похоже, вы хотите использовать flexbox, чтобы ваш div автоматически заполнял доступное вертикальное пространство. Но все ваши гибкие контейнеры - это горизонтальные контейнеры, поэтому по вертикали вы действительно просто полагаетесь на процентную высоту.

Как правило, ваш основной контейнер должен быть вертикальным гибким боксом, определяющим общее вертикальное пространство, которое не должно переполняться. Ваша хлебная крошка, заголовок и розовый div попадают в этот контейнер как гибкие элементы. Панировочная крошка и заголовок не должны увеличиваться или уменьшаться, они должны иметь значение flex: none. Розовый div можно определить как flex: 1 1 0, чтобы он увеличивался и сжимался, занимая все пространство в основном контейнере после того, как хлебные крошки и заголовок заняли свое место.

Это заняло некоторое время, но вы выбрали правильное направление. Я думаю, что сейчас у меня есть сгиб, слегка заклеенный ... хотя есть много идиосинкразии

Jim 01.05.2018 17:11

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