Flex 增长直到溢出滚动,侧边栏中的页脚组件具有父高度 100%
Flex grow till overflow scroll with footer component in sidebar with parent height 100%
我正在尝试为我的网络应用程序创建一个侧边栏,它的侧边栏中有一个可滚动列表。在侧边栏的底部有一个小页脚。我的问题源于这样一个事实,即如果我将最大尺寸设置为 100%,它会推开底部的页脚。我知道该列表需要一个已定义的父级高度,但在这种情况下尚不清楚。我怎样才能在我的侧边栏中实现一个可增长的弹性列表,一旦它填满侧边栏上剩余的 space 就会自动溢出到滚动条?
<link href="https://unpkg.com/tailwindcss@^1.0/dist/tailwind.min.css" rel="stylesheet"/>
<div class="w-screen h-screen flex p-16">
<main class="w-4/6 bg-blue-500 flex items-center justify-center">
Main
</main>
<aside class="w-2/6 h-full flex flex-col gap-8 justify-between">
<article class="w-full h-full flex flex-col bg-gray-300">
<header class="text-xl bg-green-500 flex justify-center py-3">
List
</header>
<section class="flex-grow overflow-y-scroll">
<ul class="p-4 bg-orange-500">
<li>Number 1</li>
<li>Number 2</li>
<li>Number 3</li>
<li>Number 4</li>
<li>Number 5</li>
<li>Number 6</li>
<li>Number 7</li>
<li>Number 8</li>
<li>Number 9</li>
<li>Number 1</li>
<li>Number 2</li>
<li>Number 3</li>
<li>Number 4</li>
<li>Number 5</li>
<li>Number 6</li>
<li>Number 7</li>
<li>Number 8</li>
<li>Number 9</li>
<li>Number 1</li>
<li>Number 2</li>
<li>Number 3</li>
<li>Number 4</li>
<li>Number 5</li>
<li>Number 6</li>
<li>Number 7</li>
<li>Number 8</li>
<li>Number 9</li>
<li>Number 1</li>
<li>Number 2</li>
<li>Number 3</li>
<li>Number 4</li>
<li>Number 5</li>
<li>Number 6</li>
<li>Number 7</li>
<li>Number 8</li>
<li>Number 9</li>
</ul>
</section>
<section class="flex-grow flex justify-center bg-red-600">
<button>
Add task +
</button>
</section>
</article>
<article class="bg-purple-500 flex justify-center">
Footer component sidebar
</article>
</aside>
</div>
编辑:
如下图所示。仅指定最大 vh 会导致网页无法完全响应。只要不进行计算,这将始终是一个问题。
我修改了 html 看起来像这样
<div class="w-screen h-screen flex p-16">
<main class="w-4/6 bg-blue-500 flex items-center justify-center">
Main
</main>
<aside class="w-2/6 h-full flex flex-col gap-8 justify-between">
<article class="w-full flex flex-col bg-gray-300">
<header class="text-xl bg-green-500 flex justify-center py-3">
List
</header>
<section class="min-h-0 flex-grow overflow-scroll">
<ul class="p-4 bg-orange-500">
<li>Number 1</li>
<li>Number 2</li>
<li>Number 3</li>
<li>Number 4</li>
<li>Number 5</li>
<li>Number 6</li>
<li>Number 7</li>
<li>Number 8</li>
<li>Number 9</li>
<li>Number 10</li>
<li>Number 11</li>
<li>Number 12</li>
<li>Number 13</li>
<li>Number 14</li>
<li>Number 15</li>
<li>Number 16</li>
<li>Number 17</li>
<li>Number 18</li>
<li>Number 19</li>
<li>Number 20</li>
</ul>
<div>
<button>
Add task +
</button>
</div>
</section>
</article>
<article class="bg-purple-500 flex justify-center">
Footer component sidebar
</article>
</aside>
</div>
然后这个在css.
ul{
overflow: scroll;
height:90vh;
}
我希望这至少能解决您的想法。
尽管有很多版本可以解决此类问题,但您可以通过在边栏中添加 padding-bottom
来解决此问题,如下所示:
.min-body {
min-height: 300px !important;
}
.footer-margin {
position: relative;
padding-bottom: 20px !important;
}
.footer {
position: absolute;
bottom: 0;
width:100%;
}
<link href="https://unpkg.com/tailwindcss@^1.0/dist/tailwind.min.css" rel="stylesheet"/>
<div class="w-screen h-screen flex p-16 min-body">
<main class="w-4/6 bg-blue-500 flex items-center justify-center">
Main
</main>
<aside class="w-2/6 h-full flex flex-col gap-8 justify-between footer-margin">
<article class="w-full h-full flex flex-col bg-gray-300">
<header class="text-xl bg-green-500 flex justify-center py-3">
List
</header>
<section class="flex-grow overflow-y-scroll">
<ul class="p-4 bg-orange-500">
<li>Number 1</li>
<li>Number 2</li>
<li>Number 3</li>
<li>Number 4</li>
<li>Number 5</li>
<li>Number 6</li>
<li>Number 7</li>
<li>Number 8</li>
<li>Number 9</li>
<li>Number 1</li>
<li>Number 2</li>
<li>Number 3</li>
<li>Number 4</li>
<li>Number 5</li>
<li>Number 6</li>
<li>Number 7</li>
<li>Number 8</li>
<li>Number 9</li>
<li>Number 1</li>
<li>Number 2</li>
<li>Number 3</li>
<li>Number 4</li>
<li>Number 5</li>
<li>Number 6</li>
<li>Number 7</li>
<li>Number 8</li>
<li>Number 9</li>
</ul>
</section>
<section class="flex-grow flex justify-center bg-red-600">
<button>
Add task +
</button>
</section>
</article>
<article class="bg-purple-500 flex justify-center footer">
Footer component sidebar
</article>
</aside>
</div>
只需使用正确的顺风 类,您就可以达到预期的效果。检查下面更新的代码片段。这是 jsFiddle
<link href="https://unpkg.com/tailwindcss@^1.0/dist/tailwind.min.css" rel="stylesheet"/>
<div class="w-screen h-screen flex p-16">
<main class="w-4/6 bg-blue-500 flex items-center justify-center">
Main
</main>
<aside class="w-2/6 h-full flex flex-col gap-0 justify-between"> <!-- removed gap (optional change) -->
<article class="w-full flex flex-col bg-gray-300 overflow-hidden"> <!-- added overflow hidden -->
<header class="text-xl bg-green-500 flex justify-center py-3">
List
</header>
<section class="min-h-0 flex-1 flex-grow overflow-auto"> <!-- added flex-1 class -->
<ul class="p-4 bg-orange-500">
<li>Number 1</li>
<li>Number 2</li>
<li>Number 3</li>
<li>Number 4</li>
<li>Number 5</li>
<li>Number 6</li>
<li>Number 7</li>
<li>Number 8</li>
<li>Number 9</li>
<li>Number 10</li>
<li>Number 11</li>
<li>Number 12</li>
<li>Number 13</li>
<li>Number 14</li>
<li>Number 15</li>
<li>Number 16</li>
<li>Number 17</li>
<li>Number 18</li>
<li>Number 19</li>
<li>Number 20</li>
</ul>
</section>
<section class="flex justify-center bg-red-600"> <!-- removed flex-grow class -->
<button>
Add task +
</button>
</section>
</article>
<article class="bg-purple-500 flex justify-center">
Footer component sidebar
</article>
</aside>
</div>
我正在尝试为我的网络应用程序创建一个侧边栏,它的侧边栏中有一个可滚动列表。在侧边栏的底部有一个小页脚。我的问题源于这样一个事实,即如果我将最大尺寸设置为 100%,它会推开底部的页脚。我知道该列表需要一个已定义的父级高度,但在这种情况下尚不清楚。我怎样才能在我的侧边栏中实现一个可增长的弹性列表,一旦它填满侧边栏上剩余的 space 就会自动溢出到滚动条?
<link href="https://unpkg.com/tailwindcss@^1.0/dist/tailwind.min.css" rel="stylesheet"/>
<div class="w-screen h-screen flex p-16">
<main class="w-4/6 bg-blue-500 flex items-center justify-center">
Main
</main>
<aside class="w-2/6 h-full flex flex-col gap-8 justify-between">
<article class="w-full h-full flex flex-col bg-gray-300">
<header class="text-xl bg-green-500 flex justify-center py-3">
List
</header>
<section class="flex-grow overflow-y-scroll">
<ul class="p-4 bg-orange-500">
<li>Number 1</li>
<li>Number 2</li>
<li>Number 3</li>
<li>Number 4</li>
<li>Number 5</li>
<li>Number 6</li>
<li>Number 7</li>
<li>Number 8</li>
<li>Number 9</li>
<li>Number 1</li>
<li>Number 2</li>
<li>Number 3</li>
<li>Number 4</li>
<li>Number 5</li>
<li>Number 6</li>
<li>Number 7</li>
<li>Number 8</li>
<li>Number 9</li>
<li>Number 1</li>
<li>Number 2</li>
<li>Number 3</li>
<li>Number 4</li>
<li>Number 5</li>
<li>Number 6</li>
<li>Number 7</li>
<li>Number 8</li>
<li>Number 9</li>
<li>Number 1</li>
<li>Number 2</li>
<li>Number 3</li>
<li>Number 4</li>
<li>Number 5</li>
<li>Number 6</li>
<li>Number 7</li>
<li>Number 8</li>
<li>Number 9</li>
</ul>
</section>
<section class="flex-grow flex justify-center bg-red-600">
<button>
Add task +
</button>
</section>
</article>
<article class="bg-purple-500 flex justify-center">
Footer component sidebar
</article>
</aside>
</div>
编辑: 如下图所示。仅指定最大 vh 会导致网页无法完全响应。只要不进行计算,这将始终是一个问题。
我修改了 html 看起来像这样
<div class="w-screen h-screen flex p-16">
<main class="w-4/6 bg-blue-500 flex items-center justify-center">
Main
</main>
<aside class="w-2/6 h-full flex flex-col gap-8 justify-between">
<article class="w-full flex flex-col bg-gray-300">
<header class="text-xl bg-green-500 flex justify-center py-3">
List
</header>
<section class="min-h-0 flex-grow overflow-scroll">
<ul class="p-4 bg-orange-500">
<li>Number 1</li>
<li>Number 2</li>
<li>Number 3</li>
<li>Number 4</li>
<li>Number 5</li>
<li>Number 6</li>
<li>Number 7</li>
<li>Number 8</li>
<li>Number 9</li>
<li>Number 10</li>
<li>Number 11</li>
<li>Number 12</li>
<li>Number 13</li>
<li>Number 14</li>
<li>Number 15</li>
<li>Number 16</li>
<li>Number 17</li>
<li>Number 18</li>
<li>Number 19</li>
<li>Number 20</li>
</ul>
<div>
<button>
Add task +
</button>
</div>
</section>
</article>
<article class="bg-purple-500 flex justify-center">
Footer component sidebar
</article>
</aside>
</div>
然后这个在css.
ul{
overflow: scroll;
height:90vh;
}
我希望这至少能解决您的想法。
尽管有很多版本可以解决此类问题,但您可以通过在边栏中添加 padding-bottom
来解决此问题,如下所示:
.min-body {
min-height: 300px !important;
}
.footer-margin {
position: relative;
padding-bottom: 20px !important;
}
.footer {
position: absolute;
bottom: 0;
width:100%;
}
<link href="https://unpkg.com/tailwindcss@^1.0/dist/tailwind.min.css" rel="stylesheet"/>
<div class="w-screen h-screen flex p-16 min-body">
<main class="w-4/6 bg-blue-500 flex items-center justify-center">
Main
</main>
<aside class="w-2/6 h-full flex flex-col gap-8 justify-between footer-margin">
<article class="w-full h-full flex flex-col bg-gray-300">
<header class="text-xl bg-green-500 flex justify-center py-3">
List
</header>
<section class="flex-grow overflow-y-scroll">
<ul class="p-4 bg-orange-500">
<li>Number 1</li>
<li>Number 2</li>
<li>Number 3</li>
<li>Number 4</li>
<li>Number 5</li>
<li>Number 6</li>
<li>Number 7</li>
<li>Number 8</li>
<li>Number 9</li>
<li>Number 1</li>
<li>Number 2</li>
<li>Number 3</li>
<li>Number 4</li>
<li>Number 5</li>
<li>Number 6</li>
<li>Number 7</li>
<li>Number 8</li>
<li>Number 9</li>
<li>Number 1</li>
<li>Number 2</li>
<li>Number 3</li>
<li>Number 4</li>
<li>Number 5</li>
<li>Number 6</li>
<li>Number 7</li>
<li>Number 8</li>
<li>Number 9</li>
</ul>
</section>
<section class="flex-grow flex justify-center bg-red-600">
<button>
Add task +
</button>
</section>
</article>
<article class="bg-purple-500 flex justify-center footer">
Footer component sidebar
</article>
</aside>
</div>
只需使用正确的顺风 类,您就可以达到预期的效果。检查下面更新的代码片段。这是 jsFiddle
<link href="https://unpkg.com/tailwindcss@^1.0/dist/tailwind.min.css" rel="stylesheet"/>
<div class="w-screen h-screen flex p-16">
<main class="w-4/6 bg-blue-500 flex items-center justify-center">
Main
</main>
<aside class="w-2/6 h-full flex flex-col gap-0 justify-between"> <!-- removed gap (optional change) -->
<article class="w-full flex flex-col bg-gray-300 overflow-hidden"> <!-- added overflow hidden -->
<header class="text-xl bg-green-500 flex justify-center py-3">
List
</header>
<section class="min-h-0 flex-1 flex-grow overflow-auto"> <!-- added flex-1 class -->
<ul class="p-4 bg-orange-500">
<li>Number 1</li>
<li>Number 2</li>
<li>Number 3</li>
<li>Number 4</li>
<li>Number 5</li>
<li>Number 6</li>
<li>Number 7</li>
<li>Number 8</li>
<li>Number 9</li>
<li>Number 10</li>
<li>Number 11</li>
<li>Number 12</li>
<li>Number 13</li>
<li>Number 14</li>
<li>Number 15</li>
<li>Number 16</li>
<li>Number 17</li>
<li>Number 18</li>
<li>Number 19</li>
<li>Number 20</li>
</ul>
</section>
<section class="flex justify-center bg-red-600"> <!-- removed flex-grow class -->
<button>
Add task +
</button>
</section>
</article>
<article class="bg-purple-500 flex justify-center">
Footer component sidebar
</article>
</aside>
</div>