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, то всё работает ожидаемым образом.
Очевидно, что я что-то неправильно понимаю. Объясните, пожалуйста, почему так происходит.