Вам необходимо создать новый содержащий блок для элемента position: fixed
.По умолчанию использование position: fixed
вытягивает этот элемент из потока документов и позиционирует его относительно исходного содержащего блока, установленного в области просмотра (т. Е. <body>
). MDN имеет большой обзор этого свойства :
Элемент удален из обычного потока документов, и для элемента в макете страницы не создано места.Он позиционируется относительно исходного содержащего блока, установленного в области просмотра, за исключением случаев, когда один из его предков имеет свойство transform, перспектива или фильтр, для которого установлено значение, отличное от none (см. Спецификацию CSS-преобразований), в этом случае этот предок ведет себя каксодержащий блок.(Обратите внимание, что существуют несоответствия браузера с перспективой и фильтром, способствующие формированию блока.) Его конечная позиция определяется значениями top, right, bottom и left.
Это значение всегда создает новый контекст стека,В печатных документах элемент размещается в одной и той же позиции на каждой странице.
Я пошел дальше и обновил фрагмент кода, чтобы проиллюстрировать:
.block1 {
height: 102.5%;
margin: 0px;
padding: 0px;
flex-basis: 35%;
flex-grow: 1;
flex-shrink: 1;
position: relative;
overflow: scroll;
background-color: white;
outline: solid red 1px;
/* Necessary to become containing block for position: fixed child */
transform: translate3d(0, 0, 0);
}
.block2 {
outline: solid red 1px;
height: 102.5%;
margin: 0px;
padding: 0px;
flex-basis: 65%;
flex-grow: 1;
flex-shrink: 1;
position: relative;
overflow: scroll;
background-color: white;
}
.header {
position: fixed;
background-color: red;
width: 100%;
z-index: 2;
}
.container {
width: 100%;
height: 70%;
display: flex;
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
margin: 0px;
outline: solid blue 1px;
}
<div class="container">
<div class="block1">
<div style="height:200px;">
<div class="header">ff</div>
<div style="height:500px;">
ff
</div>
</div>
</div>
<div class="block2">
<div style="height:200px;">
ff
</div>
</div>
</div>