CSS глубокое вложенное переполнение - PullRequest
0 голосов
/ 25 мая 2018

У меня есть 3 колонки с навигацией по верху.3 столбца построены как боковое меню с контейнером, а внутри этого контейнера находится еще одно боковое меню с контейнером рядом с ним.

Я пытаюсь сделать так, чтобы все элементы div прокручивались внутриобласть просмотра, использующая overflow-y: scroll, но с моим текущим положением вещей это, кажется, игнорируется, и вместо этого вся страница прокручивается как целое.

Не уверен, что я неправильно понимаю.Я создал Codepen с моим текущим состоянием вещей.

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

Вам нужен этот эффект?

Я удалил свойство height из outer-container, inner-side-menu и inner-container

html body {
  height: 100vh;
  margin: 0;
}
#app {
  background: black;
}
.navigation {
  background: cyan;
  height: 60px;
}

.route-container {
  display: grid;
  grid-template-columns: 0.25fr 0.75fr;
  grid-template-rows: auto;
  grid-template-areas:
    "outer-side-menu outer-container";
  
  height: calc(100vh - 60px);
  background: magenta;
}
.outer-side-menu {
  background: orange;
  grid-area: outer-side-menu;
}
.outer-container {
  background: yellow;
  grid-area: outer-container;
  display: grid;
  grid-template-columns: 0.25fr 0.75fr;
  grid-template-rows: auto;
  grid-template-areas:
    "inner-side-menu inner-container";
    
  /* added */
  overflow: scroll;
  
  /* removed height: 100% */
}
.inner-side-menu {
  background: lime;
  grid-area: inner-side-menu;
  font-size: 144px;
    
  /* prevent horizontal scrolling */
  overflow-x: hidden;
}
.inner-container {
  background: red;
  grid-area: inner-container;
  font-size: 144px;
    
    
  /* prevent horizontal scrolling */
  overflow-x: hidden;

}
<div id="app">
  <div class="navigation">Navigation</div>
  <div class="route-container">
    <div class="outer-side-menu">Side Menu</div>
    <div class="outer-container">
      <div class="inner-side-menu">Inner Side Menu Inner Side Menu Inner Side Menu</div>
      <div class="inner-container">Inner Container Inner Container Inner Container Inner Container</div>
    </div>
  </div>
</div>
0 голосов
/ 25 мая 2018

Вы должны использовать max-height:100% вместо height:100%.Попробуйте изменить это.

.outer-side-menu {
  background: orange;
  grid-area: outer-side-menu;
  overflow-y: scroll;
  max-height: 100%;
}
.inner-side-menu {
    background: lime;
    grid-area: inner-side-menu;
    overflow-y: scroll;
    height: 100%;
    font-size: 144px;
}
.inner-container {
    background: red;
    grid-area: inner-container;
    overflow-y: scroll;
    height: 100%;
    font-size: 144px;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...