Насколько я понимаю, абсолютный элемент занимает границу ближайшего относительного элемента, то есть .content > в моем случае. Тем не менее мой элемент .child принимает верхнее значение из класса .data. Я не понимаю, почему.
Есть ли что-то, что я здесь делаю неправильно, если да, то как я могу добиться приведенного ниже случая, я хочу, чтобы независимо от того, сколько мы прокручивали , я хочу, чтобы панель всегда отображалась в видимой области экрана элемента .content.
Код: Выделить всё
.main {
display: grid;
grid-template-columns: 1fr;
grid-template-rows: auto auto minmax(0, 100%);
grid-template-areas: "header" "menu" "content";
height: 75vh;
}
.header {
grid-area: header;
}
.menu {
grid-area: menu;
}
.content {
grid-area: content;
overflow-y: auto;
background-color: #f5f5f5;
position: relative;
}
.child {
position: absolute;
top: 0;
right: 0;
width: 40%;
background-color: aqua;
display: grid;
grid-template-columns: 1fr;
grid-template-rows: auto 1fr auto;
grid-template-areas: "head" "body" "footer";
height: 100%;
}
.child .head {
grid-area: head;
background-color: red;
}
.child .body {
grid-area: body;
overflow-y: scroll;
}
.child .footer {
grid-area: footer;
background-color: red;
}
.data {
position: relative;
margin-bottom: 15px;
display: flex;
flex-wrap: wrap;
gap: 15px;
}
.btn {
display: block;
margin-block: 15px;
}Код: Выделить всё
& l t ; m e t a h t t p - e q u i v = " X - U A - C o m p a t i b l e " c o n t e n t = " i e = e d g e " / & g t ; < b r / > & l t ; t i t l e & g t ; H T M L + C S S & l t ; / t i t l e & g t ; < b r / > & l t ; l i n k r e l = " s t y l e s h e e t " h r e f = " s t y l e s . c s s " / & g t ; < b r / > & l t ; / h e a d & g t ; < b r / > < b r / > & l t ; b o d y & g t ; < b r / > & l t ; d i v c l a s s = " m a i n " & g t ; < b r / > & l t ; s e c t i o n c l a s s = " h e a d e r " & g t ; T h i s i s h e a d e r & l t ; / s e c t i o n & g t ; < b r / > & l t ; s e c t i o n c l a s s = " m e n u " & g t ; T h i s i s m e n u & l t ; / s e c t i o n & g t ; < b r / > & l t ; s e c t i o n c l a s s = " c o n t e n t " & g t ; < b r / > & l t ; d i v c l a s s = " d a t a " & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
child head
vel fermentum ligula pellentesque sed. Nam nibh ex, placerat sed finibus non, bibendum id mauris. Phasellus porta felis velit, vel fringilla tellus condimentum quis. Ut sollicitudin venenatis nulla vel maximus. Suspendisse rutrum nibh ut est tempus, a
pretium ex bibendum. Phasellus euismod sagittis massa at hendrerit. Nam eget maximus nisi. Quisque convallis, magna id lobortis consectetur, magna libero mollis lorem, sed cursus diam est nec felis. Sed ultricies leo nec lacinia mattis. Donec
tincidunt sodales mi, id fringilla lectus dignissim quis. Donec enim enim, tincidunt nec ante eu, mollis cursus justo. Cras dictum diam non nibh tristique, vel convallis mauris varius. Aenean blandit massa erat, vitae hendrerit purus finibus
a. Aenean tempor pellentesque ligula, ut lobortis quam eleifend et. Praesent convallis efficitur porta. Pellentesque rutrum maximus diam, et volutpat ligula ornare vitae.
child footer
const btns = document.querySelectorAll(".btn");
const child = document.querySelectorAll(".child")[0];
btns.forEach(function(button) {
button.addEventListener("click", () => {
child.style.display = child.style.display == "none" ? "grid" : "none";
});
});
- Мое текущее решение, которое является обходным, Я вручную устанавливаю верхнюю позицию прокрутки для div контента на 0.
Код: Выделить всё
const btns = document.querySelectorAll(".btn");
const child = document.querySelectorAll(".child")[0];
btns.forEach(function(button) {
button.addEventListener("click", () => {
const isVisibleLastTime = child.style.display == "grid"
child.style.display = !isVisibleLastTime ? "grid" : "none";
// Work around solution
if (!isVisibleLastTime) {
const content = document.querySelectorAll(".content")[0]
content.scrollTop = 0 // I am manually setting scroll position to top 0
}
btns.forEach(b => UpdateAllButtonText(b, isVisibleLastTime))
});
});
function UpdateAllButtonText(btn, isVisible) {
btn.textContent = !isVisible ? "Hide Panel" : "Show Panel"
}Код: Выделить всё
.main {
display: grid;
grid-template-columns: 1fr;
grid-template-rows: auto auto minmax(0, 100%);
grid-template-areas: "header" "menu" "content";
height: 75vh;
}
.header {
grid-area: header;
}
.menu {
grid-area: menu;
}
.content {
grid-area: content;
overflow-y: auto;
background-color: #f5f5f5;
position: relative;
}
.child {
position: absolute;
top: 0;
right: 0;
width: 40%;
background-color: aqua;
display: none;
grid-template-columns: 1fr;
grid-template-rows: auto 1fr auto;
grid-template-areas: "head" "body" "footer";
height: 100%;
}
.child .head {
grid-area: head;
background-color: red;
}
.child .body {
grid-area: body;
overflow-y: scroll;
}
.child .footer {
grid-area: footer;
background-color: red;
}
.data {
position: relative;
margin-bottom: 15px;
display: flex;
flex-wrap: wrap;
gap: 15px;
}
.btn {
display: block;
margin-block: 15px;
}Код: Выделить всё
& l t ; m e t a h t t p - e q u i v = " X - U A - C o m p a t i b l e " c o n t e n t = " i e = e d g e " / & g t ; < b r / > & l t ; t i t l e & g t ; H T M L + C S S & l t ; / t i t l e & g t ; < b r / > & l t ; l i n k r e l = " s t y l e s h e e t " h r e f = " s t y l e s . c s s " / & g t ; < b r / > & l t ; / h e a d & g t ; < b r / > < b r / > & l t ; b o d y & g t ; < b r / > & l t ; d i v c l a s s = " m a i n " & g t ; < b r / > & l t ; s e c t i o n c l a s s = " h e a d e r " & g t ; T h i s i s h e a d e r & l t ; / s e c t i o n & g t ; < b r / > & l t ; s e c t i o n c l a s s = " m e n u " & g t ; T h i s i s m e n u & l t ; / s e c t i o n & g t ; < b r / > & l t ; s e c t i o n c l a s s = " c o n t e n t " & g t ; < b r / > & l t ; d i v c l a s s = " d a t a " & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > & l t ; b u t t o n c l a s s = " b t n " & g t ; s h o w P a n e l & l t ; / b u t t o n & g t ; < b r / > showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
showPanel
child head
vel fermentum ligula pellentesque sed. Nam nibh ex, placerat sed finibus non, bibendum id mauris. Phasellus porta felis velit, vel fringilla tellus condimentum quis. Ut sollicitudin venenatis nulla vel maximus. Suspendisse rutrum nibh ut est tempus, a
pretium ex bibendum. Phasellus euismod sagittis massa at hendrerit. Nam eget maximus nisi. Quisque convallis, magna id lobortis consectetur, magna libero mollis lorem, sed cursus diam est nec felis. Sed ultricies leo nec lacinia mattis. Donec
tincidunt sodales mi, id fringilla lectus dignissim quis. Donec enim enim, tincidunt nec ante eu, mollis cursus justo. Cras dictum diam non nibh tristique, vel convallis mauris varius. Aenean blandit massa erat, vitae hendrerit purus finibus
a. Aenean tempor pellentesque ligula, ut lobortis quam eleifend et. Praesent convallis efficitur porta. Pellentesque rutrum maximus diam, et volutpat ligula ornare vitae.
child footer
Подробнее здесь: https://stackoverflow.com/questions/789 ... -correctly
Мобильная версия