@X110111

Почему не работает sticky в этом случае?

HTML
<div class="container">
  <div class="static">Static</div>

  <div class="scrollable">
    <div class="wrapper">
      <h1 class="sticky">I am sticky</h1>

      <ul>
        <li>Item of list</li>
        <!-- And many more items... -->-->
      </ul>
    </div>
  </div>
</div>


CSS
.container {
  display: flex;
  flex-direction: column;
  height: 100%;
  overflow: hidden;
}

.static {
  height: 60px;
  padding: 1rem;
  color: #fff;
  background-color: #000;
  flex-shrink: 0;
}

.scrollable {
  position: relative;
  display: flex;
  flex: 1;
  overflow: auto;
}

.sticky {
  position: sticky;
  top: 0;
  z-index: 1020;
}


Если я правильно понимаю, элемент с position sticky должен прилипать к ближайшему предку, у которого overflow отличается от visible. в данном случае, это элемент с классом scrollable. То есть, заголовок должен выходить за пределы враппера и прилипать к элементу с классом scrollable.
Но этого не происходит. При прокрутке, заголовок выходит за пределы видимой области и не прилипает.
Если убрать дополнительный враппер и сделать так, чтобы заголовок и список стали прямыми потомками элемента с классом scrollable, то всё работает ожидаемым образом.
Очевидно, что я что-то неправильно понимаю. Объясните, пожалуйста, почему так происходит.
  • Вопрос задан
  • 117 просмотров
Пригласить эксперта
Ответы на вопрос 1
copyhold
@copyhold
я думаю, у контейнера должна быть определена высота не в процентах
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы