window.onscroll = function() {
scrollFunction()
};
var parent = document.getElementById('parent');
var child = document.getElementById('child');
function scrollFunction() {
if (document.body.scrollTop > 200 || document.documentElement.scrollTop > 200) {
parent.classList.add('overflow-scroll');
child.classList.add('top-child');
} else {
parent.classList.remove('overflow-scroll');
child.classList.remove('top-child');
}
}
body {
margin: 0px;
padding: 0px;
scroll-snap-type: y mandatory;
}
.background {
background: skyblue;
height: 90vh;
width: 100%;
position: sticky;
top: 0;
z-index: -1;
margin-bottom: -16px;
}
.parent {
position: relative;
margin-top: -35px;
background: white;
border-top-left-radius: 24px;
border-top-right-radius: 24px;
-webkit-box-shadow: 0 0 32px 4px rgba(0, 0, 0, 0.25);
-moz-box-shadow: 0 0 32px 4px rgba(0, 0, 0, 0.25);
box-shadow: 0 0 32px 4px rgba(0, 0, 0, 0.25);
padding: 32px 8px;
height: calc(100vh - 100px);
overflow: hidden;
width: 98%;
}
.child {
background: rgb(131, 58, 180);
background: linear-gradient(0deg, rgba(131, 58, 180, 1) 0%, rgba(253, 29, 29, 1) 50%, rgba(252, 176, 69, 1) 100%);
height: 200vh;
margin: 16px;
position: relative;
top: -30vh;
}
.parent,
.child {
-ms-overflow-style: none;
scrollbar-width: none;
}
.parent::-webkit-scrollbar,
.child::-webkit-scrollbar {
display: none;
}
.overflow-scroll {
overflow: scroll;
position: fixed;
top: 30vh;
}
.top-child {
top: 30vh;
}
<div class="background">
Background
</div>
<div id="parent" class="parent">
Parent
<p>
the parent looks like a card that slides over the background
</p>
</div>
<div class="child" id="child">
the child element does not have a defined height and can be very long
<br/> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec eget nibh rutrum, porta quam ac, rutrum erat. Donec ultricies, dolor vel iaculis rutrum, nunc tellus pulvinar ante, a malesuada erat sapien at lectus. In quis ligula augue. Aliquam
auctor nulla nec mattis viverra. Aliquam eget felis velit. Nulla euismod lectus eu sapien aliquam convallis dapibus ut sem. Nullam vestibulum ante non lacinia finibus. Donec lacinia ultricies arcu id sollicitudin. Aliquam a venenatis arcu, et congue
justo. Etiam vitae augue tortor. Etiam sed nulla dui. Vestibulum elementum euismod eleifend. In eu aliquam mauris. Sed sit amet tempor quam. Mauris in mi lacus. Pellentesque vestibulum vehicula blandit. Phasellus consectetur iaculis libero, maximus
euismod tortor ultrices nec. Duis eget lacinia quam. Vivamus sit amet tincidunt neque. Maecenas sed mauris dignissim, consequat justo ac, mollis arcu. Etiam aliquet enim at orci dapibus, ac aliquam diam aliquet. Nulla quis magna sit amet ante interdum
iaculis. Duis pharetra erat sit amet mi interdum pharetra. Maecenas interdum tortor leo, ac vehicula odio consectetur quis. Ut vitae tincidunt quam. Donec purus ipsum, commodo eget rutrum vitae, aliquam molestie diam. Sed rutrum, tortor vel iaculis
fermentum, urna quam lacinia libero, a pulvinar lacus arcu pharetra ligula. Sed lacus tortor, dictum quis luctus et, eleifend commodo erat. Sed non metus at leo blandit posuere et in nisi. Duis ornare scelerisque ultricies. Ut vestibulum maximus imperdiet.
Praesent egestas tristique sem. Curabitur est quam, auctor quis auctor a, placerat porttitor nisi. Pellentesque tristique, tellus vitae porttitor consequat, massa diam lacinia est, at rhoncus arcu nulla et lectus. Donec libero nibh, hendrerit at elementum
sit amet, gravida vel leo. Aenean vitae nibh at massa tempus scelerisque at eu quam. Nulla facilisi. Nulla vel ligula convallis, consectetur magna sit amet, euismod eros. Aenean et ullamcorper diam. Donec ultricies felis eget venenatis viverra. Ut ut
risus sit amet libero tincidunt volutpat. Cras dui libero, vehicula sollicitudin bibendum et, dictum eu ex. Sed et magna sem. Sed fermentum diam quis sapien posuere consectetur. Integer vulputate ex sed imperdiet faucibus. Etiam at accumsan nisl. Cras
semper aliquam tortor, vel semper nulla luctus eu. Duis porta urna eget ex luctus, a pellentesque enim pulvinar. Aliquam neque mauris, cursus vel consectetur nec, blandit id diam. Phasellus vel erat erat.
</div>