Высота 100% не применяется к дочернему элементу, когда position: absolute
вызывает вертикальное переполнение с помощью HTML-макета ниже. Проблема, вероятно, вызвана тем, что увеличение высоты, вызванное вертикальным переполнением, не применяется к дочерним элементам элемента body .
:root {
--abs-container-height: 80px;
}
* {
box-sizing: border-box;
}
html {
height: 100%;
}
body {
padding: 0;
margin: 0;
height: 100%;
}
.top-bar {
height: var(--abs-container-height);
display: flex;
}
.abs-content-trigger {
position: relative;
}
.abs-content {
top: 100%;
display: none;
position: absolute;
}
.abs-content-trigger.show > .abs-content,
.abs-content-trigger:hover > .abs-content {
display: block;
}
.content-container {
max-height: calc(100% - var(--abs-container-height));
overflow: auto;
}
/* Only visual styling. The css below can be disregarded */
/* Only visual styling. The css below can be disregarded */
/* Only visual styling. The css below can be disregarded */
body {
background: #DFD;
}
.top-bar {
background: red;
}
.abs-content-trigger {
display: flex;
align-items: center;
justify-content: space-around;
background: rgba(0, 0, 0, 0.2);
height: 100%;
margin-right: 5px;
min-width: 100px;
}
.content-container {
background: #ddf;
}
<html>
<body>
<div class="top-bar">
<div class="abs-content-trigger">
Hover Me
<div class="abs-content">
<div style="height: 110vh; background: #ccc">
Some random content.
</div>
</div>
</div>
<div class="abs-content-trigger">
Hover Me 2
<div class="abs-content">
<div style="height: 110vh; background: #ccc">
Some random content 2.
</div>
</div>
</div>
</div>
<div class="content-container">
Height 100% does not apply correctly to this element when one of
the "Hover Me" buttons is hovered. If neither button is hovered, then
the height is applied correctly.
<div style="height: 1000px; ">
</div>
</div>
</body>
</html>
Если ни одна из кнопок не наведена, то макет отображает , как и ожидалось , а цвет фона тела не виден: Ожидаемое поведение
Однако при наведении любой кнопки макет меняется, и после прокрутки до дна рендеринг неожиданный , поскольку внутренний элемент прокрутки не заполняет своего родителя: Неожиданный рендеринг после зависания и прокрутки
Макет, который я ожидаю , получит: Рендеринг, который я хочу получить (отредактировано с помощью графической программы)
Обратите внимание, что решение не должно использовать JavaScript , но в противном случае любые взломы CSS или HTML являются жизнеспособными. HTML и CSS предпочтительно должны работать в IE11, но не обязательно.
Тот же код HTML и CSS в JsFiddle: https://jsfiddle.net/LexLocked/xyfrLpzs/44/