Grid Scroll
Grid Scroll
Let's begin with a simple example.
<div class="h-screen w-screen bg-green-100">
<div class="grid grid-cols-[280px_1fr_280px]">
<div>
Left Lorem ipsum dolor sit, amet consectetur adipisicing elit. Dolor nobis
esse obcaecati deserunt harum vel explicabo enim quidem, magnam, maiores
velit, cupiditate possimus blanditiis aperiam dicta at eaque tempore
officiis! Lorem ipsum dolor sit, amet consectetur adipisicing elit. Dolor
nobis esse obcaecati deserunt harum vel explicabo enim quidem, magnam,
maiores velit, cupiditate possimus blanditiis aperiam dicta at eaque
tempore officiis! Lorem ipsum dolor sit, amet consectetur adipisicing
elit. Dolor nobis esse obcaecati deserunt harum vel explicabo enim quidem,
magnam, maiores velit, cupiditate possimus blanditiis aperiam dicta at
eaque tempore officiis! Lorem ipsum dolor sit, amet consectetur
adipisicing elit. Dolor nobis esse obcaecati deserunt harum vel explicabo
enim quidem, magnam, maiores velit, cupiditate possimus blanditiis aperiam
dicta at eaque tempore officiis! Lorem ipsum dolor sit, amet consectetur
adipisicing elit. Dolor nobis esse obcaecati deserunt harum vel explicabo
enim quidem, magnam, maiores velit, cupiditate possimus blanditiis aperiam
dicta at eaque tempore officiis! Lorem ipsum dolor sit, amet consectetur
adipisicing elit. Dolor nobis esse obcaecati deserunt harum vel explicabo
enim quidem, magnam, maiores velit, cupiditate possimus blanditiis aperiam
dicta at eaque tempore officiis! Lorem ipsum dolor sit, amet consectetur
adipisicing elit. Dolor nobis esse obcaecati deserunt harum vel explicabo
enim quidem, magnam, maiores velit, cupiditate possimus blanditiis aperiam
dicta at eaque tempore officiis!
</div>
<div>Center</div>
<div>Right</div>
</div>
</div>
<div class="h-screen w-screen bg-green-100 overflow-y-auto">
<div class="grid grid-cols-[280px_1fr_280px]">
<div>
Left Lorem ipsum dolor sit, amet consectetur adipisicing elit. Dolor nobis
esse obcaecati deserunt harum vel explicabo enim quidem, magnam, maiores
velit, cupiditate possimus blanditiis aperiam dicta at eaque tempore
officiis! Lorem ipsum dolor sit, amet consectetur adipisicing elit. Dolor
nobis esse obcaecati deserunt harum vel explicabo enim quidem, magnam,
maiores velit, cupiditate possimus blanditiis aperiam dicta at eaque
tempore officiis! Lorem ipsum dolor sit, amet consectetur adipisicing
elit. Dolor nobis esse obcaecati deserunt harum vel explicabo enim quidem,
magnam, maiores velit, cupiditate possimus blanditiis aperiam dicta at
eaque tempore officiis! Lorem ipsum dolor sit, amet consectetur
adipisicing elit. Dolor nobis esse obcaecati deserunt harum vel explicabo
enim quidem, magnam, maiores velit, cupiditate possimus blanditiis aperiam
dicta at eaque tempore officiis! Lorem ipsum dolor sit, amet consectetur
adipisicing elit. Dolor nobis esse obcaecati deserunt harum vel explicabo
enim quidem, magnam, maiores velit, cupiditate possimus blanditiis aperiam
dicta at eaque tempore officiis! Lorem ipsum dolor sit, amet consectetur
adipisicing elit. Dolor nobis esse obcaecati deserunt harum vel explicabo
enim quidem, magnam, maiores velit, cupiditate possimus blanditiis aperiam
dicta at eaque tempore officiis! Lorem ipsum dolor sit, amet consectetur
adipisicing elit. Dolor nobis esse obcaecati deserunt harum vel explicabo
enim quidem, magnam, maiores velit, cupiditate possimus blanditiis aperiam
dicta at eaque tempore officiis!
</div>
<div>Center</div>
<div>Right</div>
</div>
</div>
<div class="h-screen w-screen bg-green-100">
<div class="grid grid-cols-[280px_1fr_280px]">
<div class="overflow-y-auto">
Left Lorem ipsum dolor sit, amet consectetur adipisicing elit. Dolor nobis
esse obcaecati deserunt harum vel explicabo enim quidem, magnam, maiores
velit, cupiditate possimus blanditiis aperiam dicta at eaque tempore
officiis! Lorem ipsum dolor sit, amet consectetur adipisicing elit. Dolor
nobis esse obcaecati deserunt harum vel explicabo enim quidem, magnam,
maiores velit, cupiditate possimus blanditiis aperiam dicta at eaque
tempore officiis! Lorem ipsum dolor sit, amet consectetur adipisicing
elit. Dolor nobis esse obcaecati deserunt harum vel explicabo enim quidem,
magnam, maiores velit, cupiditate possimus blanditiis aperiam dicta at
eaque tempore officiis! Lorem ipsum dolor sit, amet consectetur
adipisicing elit. Dolor nobis esse obcaecati deserunt harum vel explicabo
enim quidem, magnam, maiores velit, cupiditate possimus blanditiis aperiam
dicta at eaque tempore officiis! Lorem ipsum dolor sit, amet consectetur
adipisicing elit. Dolor nobis esse obcaecati deserunt harum vel explicabo
enim quidem, magnam, maiores velit, cupiditate possimus blanditiis aperiam
dicta at eaque tempore officiis! Lorem ipsum dolor sit, amet consectetur
adipisicing elit. Dolor nobis esse obcaecati deserunt harum vel explicabo
enim quidem, magnam, maiores velit, cupiditate possimus blanditiis aperiam
dicta at eaque tempore officiis! Lorem ipsum dolor sit, amet consectetur
adipisicing elit. Dolor nobis esse obcaecati deserunt harum vel explicabo
enim quidem, magnam, maiores velit, cupiditate possimus blanditiis aperiam
dicta at eaque tempore officiis!
</div>
<div>Center</div>
<div>Right</div>
</div>
</div>
<div class="h-screen w-screen bg-green-100">
<div class="grid grid-cols-[280px_1fr_280px] h-full">
<div class="overflow-y-auto">
Left Lorem ipsum dolor sit, amet consectetur adipisicing elit. Dolor nobis
esse obcaecati deserunt harum vel explicabo enim quidem, magnam, maiores
velit, cupiditate possimus blanditiis aperiam dicta at eaque tempore
officiis! Lorem ipsum dolor sit, amet consectetur adipisicing elit. Dolor
nobis esse obcaecati deserunt harum vel explicabo enim quidem, magnam,
maiores velit, cupiditate possimus blanditiis aperiam dicta at eaque
tempore officiis! Lorem ipsum dolor sit, amet consectetur adipisicing
elit. Dolor nobis esse obcaecati deserunt harum vel explicabo enim quidem,
magnam, maiores velit, cupiditate possimus blanditiis aperiam dicta at
eaque tempore officiis! Lorem ipsum dolor sit, amet consectetur
adipisicing elit. Dolor nobis esse obcaecati deserunt harum vel explicabo
enim quidem, magnam, maiores velit, cupiditate possimus blanditiis aperiam
dicta at eaque tempore officiis! Lorem ipsum dolor sit, amet consectetur
adipisicing elit. Dolor nobis esse obcaecati deserunt harum vel explicabo
enim quidem, magnam, maiores velit, cupiditate possimus blanditiis aperiam
dicta at eaque tempore officiis! Lorem ipsum dolor sit, amet consectetur
adipisicing elit. Dolor nobis esse obcaecati deserunt harum vel explicabo
enim quidem, magnam, maiores velit, cupiditate possimus blanditiis aperiam
dicta at eaque tempore officiis! Lorem ipsum dolor sit, amet consectetur
adipisicing elit. Dolor nobis esse obcaecati deserunt harum vel explicabo
enim quidem, magnam, maiores velit, cupiditate possimus blanditiis aperiam
dicta at eaque tempore officiis!
</div>
<div>Center</div>
<div>Right</div>
</div>
</div>
What will be the scroll container in this case?
<div class="h-screen w-screen bg-green-100">
<div class="grid grid-cols-[280px_1fr_280px] h-full">
<div class="overflow-y-auto">
<div class="overflow-y-auto">
Left Lorem ipsum dolor sit, amet consectetur adipisicing elit. Dolor
nobis esse obcaecati deserunt harum vel explicabo enim quidem, magnam,
maiores velit, cupiditate possimus blanditiis aperiam dicta at eaque
tempore officiis! Lorem ipsum dolor sit, amet consectetur adipisicing
elit. Dolor nobis esse obcaecati deserunt harum vel explicabo enim
quidem, magnam, maiores velit, cupiditate possimus blanditiis aperiam
dicta at eaque tempore officiis! Lorem ipsum dolor sit, amet consectetur
adipisicing elit. Dolor nobis esse obcaecati deserunt harum vel
explicabo enim quidem, magnam, maiores velit, cupiditate possimus
blanditiis aperiam dicta at eaque tempore officiis! Lorem ipsum dolor
sit, amet consectetur adipisicing elit. Dolor nobis esse obcaecati
deserunt harum vel explicabo enim quidem, magnam, maiores velit,
cupiditate possimus blanditiis aperiam dicta at eaque tempore officiis!
Lorem ipsum dolor sit, amet consectetur adipisicing elit. Dolor nobis
esse obcaecati deserunt harum vel explicabo enim quidem, magnam, maiores
velit, cupiditate possimus blanditiis aperiam dicta at eaque tempore
officiis! Lorem ipsum dolor sit, amet consectetur adipisicing elit.
Dolor nobis esse obcaecati deserunt harum vel explicabo enim quidem,
magnam, maiores velit, cupiditate possimus blanditiis aperiam dicta at
eaque tempore officiis! Lorem ipsum dolor sit, amet consectetur
adipisicing elit. Dolor nobis esse obcaecati deserunt harum vel
explicabo enim quidem, magnam, maiores velit, cupiditate possimus
blanditiis aperiam dicta at eaque tempore officiis!
</div>
</div>
<div>Center</div>
<div>Right</div>
</div>
</div>
How can I make the inner div the scroll container?
For a div to be the scroll container, it needs to have overflow-y-auto
and deterministic height.
For example, if we add h-56
to the inner div, it will be the scroll container.
<div class="h-screen w-screen bg-green-100">
<div class="grid grid-cols-[280px_1fr_280px] h-full">
<div class="overflow-y-auto">
<div class="overflow-y-auto h-56">
Left Lorem ipsum dolor sit, amet consectetur adipisicing elit. Dolor
nobis esse obcaecati deserunt harum vel explicabo enim quidem, magnam,
maiores velit, cupiditate possimus blanditiis aperiam dicta at eaque
tempore officiis! Lorem ipsum dolor sit, amet consectetur adipisicing
elit. Dolor nobis esse obcaecati deserunt harum vel explicabo enim
quidem, magnam, maiores velit, cupiditate possimus blanditiis aperiam
dicta at eaque tempore officiis! Lorem ipsum dolor sit, amet consectetur
adipisicing elit. Dolor nobis esse obcaecati deserunt harum vel
explicabo enim quidem, magnam, maiores velit, cupiditate possimus
blanditiis aperiam dicta at eaque tempore officiis! Lorem ipsum dolor
sit, amet consectetur adipisicing elit. Dolor nobis esse obcaecati
deserunt harum vel explicabo enim quidem, magnam, maiores velit,
cupiditate possimus blanditiis aperiam dicta at eaque tempore officiis!
Lorem ipsum dolor sit, amet consectetur adipisicing elit. Dolor nobis
esse obcaecati deserunt harum vel explicabo enim quidem, magnam, maiores
velit, cupiditate possimus blanditiis aperiam dicta at eaque tempore
officiis! Lorem ipsum dolor sit, amet consectetur adipisicing elit.
Dolor nobis esse obcaecati deserunt harum vel explicabo enim quidem,
magnam, maiores velit, cupiditate possimus blanditiis aperiam dicta at
eaque tempore officiis! Lorem ipsum dolor sit, amet consectetur
adipisicing elit. Dolor nobis esse obcaecati deserunt harum vel
explicabo enim quidem, magnam, maiores velit, cupiditate possimus
blanditiis aperiam dicta at eaque tempore officiis!
</div>
</div>
<div>Center</div>
<div>Right</div>
</div>
</div>
Of course, we can use h-full
to make the inner div the scroll container.
<div class="h-screen w-screen bg-green-100">
<div class="grid grid-cols-[280px_1fr_280px] h-full">
<div class="overflow-y-auto">
<div class="overflow-y-auto h-full">
Left Lorem ipsum dolor sit, amet consectetur adipisicing elit. Dolor
nobis esse obcaecati deserunt harum vel explicabo enim quidem, magnam,
maiores velit, cupiditate possimus blanditiis aperiam dicta at eaque
tempore officiis! Lorem ipsum dolor sit, amet consectetur adipisicing
elit. Dolor nobis esse obcaecati deserunt harum vel explicabo enim
quidem, magnam, maiores velit, cupiditate possimus blanditiis aperiam
dicta at eaque tempore officiis! Lorem ipsum dolor sit, amet consectetur
adipisicing elit. Dolor nobis esse obcaecati deserunt harum vel
explicabo enim quidem, magnam, maiores velit, cupiditate possimus
blanditiis aperiam dicta at eaque tempore officiis! Lorem ipsum dolor
sit, amet consectetur adipisicing elit. Dolor nobis esse obcaecati
deserunt harum vel explicabo enim quidem, magnam, maiores velit,
cupiditate possimus blanditiis aperiam dicta at eaque tempore officiis!
Lorem ipsum dolor sit, amet consectetur adipisicing elit. Dolor nobis
esse obcaecati deserunt harum vel explicabo enim quidem, magnam, maiores
velit, cupiditate possimus blanditiis aperiam dicta at eaque tempore
officiis! Lorem ipsum dolor sit, amet consectetur adipisicing elit.
Dolor nobis esse obcaecati deserunt harum vel explicabo enim quidem,
magnam, maiores velit, cupiditate possimus blanditiis aperiam dicta at
eaque tempore officiis! Lorem ipsum dolor sit, amet consectetur
adipisicing elit. Dolor nobis esse obcaecati deserunt harum vel
explicabo enim quidem, magnam, maiores velit, cupiditate possimus
blanditiis aperiam dicta at eaque tempore officiis!
</div>
</div>
<div>Center</div>
<div>Right</div>
</div>
</div>
Does the "overflow-y-auto" on the outer div matter? Let's see.
<div class="h-screen w-screen bg-green-100">
<div class="grid grid-cols-[280px_1fr_280px] h-full">
<div>
<div class="overflow-y-auto h-full">
Left Lorem ipsum dolor sit, amet consectetur adipisicing elit. Dolor
nobis esse obcaecati deserunt harum vel explicabo enim quidem, magnam,
maiores velit, cupiditate possimus blanditiis aperiam dicta at eaque
tempore officiis! Lorem ipsum dolor sit, amet consectetur adipisicing
elit. Dolor nobis esse obcaecati deserunt harum vel explicabo enim
quidem, magnam, maiores velit, cupiditate possimus blanditiis aperiam
dicta at eaque tempore officiis! Lorem ipsum dolor sit, amet consectetur
adipisicing elit. Dolor nobis esse obcaecati deserunt harum vel
explicabo enim quidem, magnam, maiores velit, cupiditate possimus
blanditiis aperiam dicta at eaque tempore officiis! Lorem ipsum dolor
sit, amet consectetur adipisicing elit. Dolor nobis esse obcaecati
deserunt harum vel explicabo enim quidem, magnam, maiores velit,
cupiditate possimus blanditiis aperiam dicta at eaque tempore officiis!
Lorem ipsum dolor sit, amet consectetur adipisicing elit. Dolor nobis
esse obcaecati deserunt harum vel explicabo enim quidem, magnam, maiores
velit, cupiditate possimus blanditiis aperiam dicta at eaque tempore
officiis! Lorem ipsum dolor sit, amet consectetur adipisicing elit.
Dolor nobis esse obcaecati deserunt harum vel explicabo enim quidem,
magnam, maiores velit, cupiditate possimus blanditiis aperiam dicta at
eaque tempore officiis! Lorem ipsum dolor sit, amet consectetur
adipisicing elit. Dolor nobis esse obcaecati deserunt harum vel
explicabo enim quidem, magnam, maiores velit, cupiditate possimus
blanditiis aperiam dicta at eaque tempore officiis!
</div>
</div>
<div>Center</div>
<div>Right</div>
</div>
</div>
Opps. The content go beyond the outer div. Why is that?
If we add overflow-y-auto
to the grid container, the whole grid container will be the scroll container.
<div class="h-screen w-screen bg-green-100">
<div class="grid grid-cols-[280px_1fr_280px] h-full">
<div class="overflow-y-auto">
<div class="overflow-y-auto h-full">
Left Lorem ipsum dolor sit, amet consectetur adipisicing elit. Dolor
nobis esse obcaecati deserunt harum vel explicabo enim quidem, magnam,
maiores velit, cupiditate possimus blanditiis aperiam dicta at eaque
tempore officiis! Lorem ipsum dolor sit, amet consectetur adipisicing
elit. Dolor nobis esse obcaecati deserunt harum vel explicabo enim
quidem, magnam, maiores velit, cupiditate possimus blanditiis aperiam
dicta at eaque tempore officiis! Lorem ipsum dolor sit, amet consectetur
adipisicing elit. Dolor nobis esse obcaecati deserunt harum vel
explicabo enim quidem, magnam, maiores velit, cupiditate possimus
blanditiis aperiam dicta at eaque tempore officiis! Lorem ipsum dolor
sit, amet consectetur adipisicing elit. Dolor nobis esse obcaecati
deserunt harum vel explicabo enim quidem, magnam, maiores velit,
cupiditate possimus blanditiis aperiam dicta at eaque tempore officiis!
Lorem ipsum dolor sit, amet consectetur adipisicing elit. Dolor nobis
esse obcaecati deserunt harum vel explicabo enim quidem, magnam, maiores
velit, cupiditate possimus blanditiis aperiam dicta at eaque tempore
officiis! Lorem ipsum dolor sit, amet consectetur adipisicing elit.
Dolor nobis esse obcaecati deserunt harum vel explicabo enim quidem,
magnam, maiores velit, cupiditate possimus blanditiis aperiam dicta at
eaque tempore officiis! Lorem ipsum dolor sit, amet consectetur
adipisicing elit. Dolor nobis esse obcaecati deserunt harum vel
explicabo enim quidem, magnam, maiores velit, cupiditate possimus
blanditiis aperiam dicta at eaque tempore officiis!
</div>
</div>
<div>Center</div>
<div>Right</div>
</div>
</div>
What if I want to break the scroll container into multiple parts?
<div class="h-screen w-screen bg-green-100">
<div class="grid grid-cols-[280px_1fr_280px] h-full">
<div class="overflow-y-auto">
<div class="overflow-y-auto h-full flex flex-col">
<div class="flex-1">Left Lorem ipsum dolor sit</div>
<div class="h-10 px-2 bg-amber-200">Some content</div>
</div>
</div>
<div>Center</div>
<div>Right</div>
</div>
</div>
What will happen if the content is too long?
<div class="h-screen w-screen bg-green-100">
<div class="grid grid-cols-[280px_1fr_280px] h-full">
<div class="overflow-y-auto">
<div class="overflow-y-auto h-full flex flex-col">
<div class="flex-1">
Left Lorem ipsum dolor sit, amet consectetur adipisicing elit. Dolor
nobis esse obcaecati deserunt harum vel explicabo enim quidem, magnam,
maiores velit, cupiditate possimus blanditiis aperiam dicta at eaque
tempore officiis! Lorem ipsum dolor sit, amet consectetur adipisicing
elit. Dolor nobis esse obcaecati deserunt harum vel explicabo enim
quidem, magnam, maiores velit, cupiditate possimus blanditiis aperiam
dicta at eaque tempore officiis! Lorem ipsum dolor sit, amet
consectetur adipisicing elit. Dolor nobis esse obcaecati deserunt
harum vel explicabo enim quidem, magnam, maiores velit, cupiditate
possimus blanditiis aperiam dicta at eaque tempore officiis! Lorem
ipsum dolor sit, amet consectetur adipisicing elit. Dolor nobis esse
obcaecati
</div>
<div class="h-10 px-2 bg-amber-200">Some content</div>
</div>
</div>
<div>Center</div>
<div>Right</div>
</div>
</div>
I want the scroll container will be the inner div of left sidebar, how?
Just add overflow-y-auto
to the inner div of left sidebar.
<div class="h-screen w-screen bg-green-100">
<div class="grid grid-cols-[280px_1fr_280px] h-full">
<div class="overflow-y-auto">
<div class="overflow-y-auto h-full flex flex-col">
<div class="flex-1 overflow-y-auto">
Left Lorem ipsum dolor sit, amet consectetur adipisicing elit. Dolor
nobis esse obcaecati deserunt harum vel explicabo enim quidem, magnam,
maiores velit, cupiditate possimus blanditiis aperiam dicta at eaque
tempore officiis! Lorem ipsum dolor sit, amet consectetur adipisicing
elit. Dolor nobis esse obcaecati deserunt harum vel explicabo enim
quidem, magnam, maiores velit, cupiditate possimus blanditiis aperiam
dicta at eaque tempore officiis! Lorem ipsum dolor sit, amet
consectetur adipisicing elit. Dolor nobis esse obcaecati deserunt
harum vel explicabo enim quidem, magnam, maiores velit, cupiditate
possimus blanditiis aperiam dicta at eaque tempore officiis! Lorem
ipsum dolor sit, amet consectetur adipisicing elit. Dolor nobis esse
obcaecati
</div>
<div class="h-10 px-2 bg-amber-200">Some content</div>
</div>
</div>
<div>Center</div>
<div>Right</div>
</div>
</div>