Как заставить CSS-сетку иметь определенную высоту

Я нашел этот вопрос: Как установить максимальную высоту для CSS-сетки, в котором говорится об установке определенной высоты для элементов сетки. Тем не менее, я хочу установить высоту самой сетки и сделать так, чтобы любые элементы были переполнены, чтобы появилась полоса прокрутки (см. Рисунок ниже).

Как заставить CSS-сетку иметь определенную высоту

Несмотря на то, что я установил max-height для элемента контейнера, большой текст (.top) все равно выходит за пределы и делает высоту элемента контейнера больше, чем его max-height. И поскольку я не знаю размера элемента .bottom (его высота - auto), я не могу установить max-height для элемента .top.

.container {
  padding: 5px;
  width: 200px;
  max-height: 200px;
  grid-template: 1fr auto / 1fr;
  grid-template-areas: "top" "bottom";
  background: red;
}

.top {
  background: blue;
  grid-area: top;
}

.bottom {
  background: green;
  grid-area: bottom;
}
<div class = "container">
  <div class = "top">
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin scelerisque blandit ipsum vitae vehicula. Vestibulum id urna ac odio scelerisque venenatis. Mauris blandit vitae tortor ac auctor. Donec pharetra accumsan eleifend. Fusce porta ante at turpis venenatis, sed luctus mi efficitur. Nunc eget metus pellentesque ante lacinia facilisis. Aenean magna nisi, feugiat at ullamcorper a, tincidunt id augue. Curabitur ut nisl eu risus convallis luctus et vitae enim. Ut vitae purus sed enim tempus convallis. Vestibulum consequat scelerisque ornare.</p>
    <p>Sed at urna turpis. Aenean vehicula, nunc elementum vehicula rutrum, sem orci ornare mauris, auctor ultricies quam enim quis sem. Praesent accumsan volutpat mollis. Proin tempus rhoncus lacus. Cras gravida, mauris sed suscipit vulputate, odio elit sagittis urna, non suscipit odio sapien eget ex. Ut vulputate ante sit amet diam tempus, eget tempus dolor sodales. Etiam quis orci posuere, interdum diam quis, tincidunt urna. Vivamus lectus lectus, hendrerit in sapien quis, tempor sollicitudin sem. Proin quis sem lectus. Fusce quis molestie enim, quis dapibus lacus. Nulla fringilla metus a odio lacinia feugiat. Vivamus rutrum diam placerat tristique scelerisque. Integer a iaculis justo, a tempus lorem.</p>
  </div>
  <div class = "bottom">
    <p>Little Text</p>
  </div>
</div>

Так как же добиться сетки с определенной высотой и иметь слишком большие элементы с полосой прокрутки?

Решено с помощью Javascript

Post Self 18.03.2018 11:52

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

DataCure 18.03.2018 14:29

Да, точно. Изображение показывает то, что я хочу, код показывает, что у меня есть

Post Self 18.03.2018 15:33

Тем не менее, я хочу установить высоту самой сетки и сделать так, чтобы любые элементы были переполнены, чтобы появилась полоса прокрутки (см. Рисунок ниже). Это то, что вы заявили? Представленное вами изображение или фигура воспроизведены в отличие от ответа, который вы отметили как правильный

DataCure 18.03.2018 15:35

Это был быстрый макет, но если вы проигнорируете какие-либо поля / отступы, это будет точно так, как показывает принятый ответ.

Post Self 18.03.2018 15:49

Хорошо, не волнуйтесь.

DataCure 18.03.2018 15:50
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в 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. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
3
6
111
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Вы забыли установить display: grid на контейнере и overflow: auto вверху:

.container {
  padding: 5px;
  width: 200px;
  max-height: 200px;
  grid-template: 1fr auto / 1fr;
  grid-template-areas: "top" "bottom";
  background: red;
  display: grid; /* added */
}

.top {
  background: blue;
  grid-area: top;
  overflow: auto; /* added */
}

.bottom {
  background: green;
  grid-area: bottom;
}
<div class = "container">
  <div class = "top">
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin scelerisque blandit ipsum vitae vehicula. Vestibulum id urna ac odio scelerisque venenatis. Mauris blandit vitae tortor ac auctor. Donec pharetra accumsan eleifend. Fusce porta ante at turpis venenatis, sed luctus mi efficitur. Nunc eget metus pellentesque ante lacinia facilisis. Aenean magna nisi, feugiat at ullamcorper a, tincidunt id augue. Curabitur ut nisl eu risus convallis luctus et vitae enim. Ut vitae purus sed enim tempus convallis. Vestibulum consequat scelerisque ornare.</p>
    <p>Sed at urna turpis. Aenean vehicula, nunc elementum vehicula rutrum, sem orci ornare mauris, auctor ultricies quam enim quis sem. Praesent accumsan volutpat mollis. Proin tempus rhoncus lacus. Cras gravida, mauris sed suscipit vulputate, odio elit sagittis urna, non suscipit odio sapien eget ex. Ut vulputate ante sit amet diam tempus, eget tempus dolor sodales. Etiam quis orci posuere, interdum diam quis, tincidunt urna. Vivamus lectus lectus, hendrerit in sapien quis, tempor sollicitudin sem. Proin quis sem lectus. Fusce quis molestie enim, quis dapibus lacus. Nulla fringilla metus a odio lacinia feugiat. Vivamus rutrum diam placerat tristique scelerisque. Integer a iaculis justo, a tempus lorem.</p>
  </div>
  <div class = "bottom">
    <p>Little Text</p>
  </div>
</div>

Хм, очень интересно. Я действительно забыл об этом в моем примере, но в моем реальном коде это тоже не сработало.

Post Self 18.03.2018 12:18

Трудно сказать, в чем проблема с вашим настоящим кодом .... Может, какая-то опечатка?

vals 18.03.2018 12:31

Да, сейчас я выбрал совершенно другой подход, так что это не имеет значения :)

Post Self 18.03.2018 12:34

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