当前位置: 首页 > 面试题库 >

Flexbox调整大小并滚动可溢出[重复]

唐恺
2023-03-14
问题内容

我有正在调整大小的内容,并且我希望有一个不会增加/缩小并且不属于可滚动内容的固定标题。如果没有足够的空间,则下面的内容可滚动。

内容外部包装器(flexGrowWrapper)具有flex-grow: 1,内部包装器具有height: 100%; overflow-y: auto。这里的思想过程是flexGrowWrapperresizediv内的所有剩余空间填满,然后内部包装将占据的整个高度,flexGrowWrapper如果溢出,则应滚动。

发生的事情是flexGrowWrapper确实会填满该resize区域,但似乎它的内容决定了它的最小高度。

我怎样才能使它flexGrowWrapper永远不会超出resize区域高度?

$("button").click(function() {

    $(".resize").toggleClass("small");

});


.resize {

  height: 200px;

  display: flex;

  flex-direction: column;

  overflow-y: hidden;

  width: 300px;

}



.resize.small {

  height: 100px;

}



.heading {

  flex: 0 0 auto;

}



.flexGrowWrapper {

  border: 2px solid red;

  flex-grow: 1;

}



.wrapper {

  height: 100%;

  overflow-y: auto;

}



.content {

  display: flex;

  flex-direction: row;

  clear: both;

}


<button>

Resize

</button>

<div class="resize">

  <div class="heading">

  <label>Some heading that wont scroll</label>

  </div>

  <div class="flexGrowWrapper">

    <div class="wrapper">

      <div class="content">

        content

      </div>

      <div class="content">

        content

      </div>

      <div class="content">

        content

      </div>

      <div class="content">

        content

      </div>

      <div class="content">

        content

      </div>

      <div class="content">

        content

      </div>

      <div class="content">

        content

      </div>

    </div>

  </div>

</div>

<div>

 Something else here

</div>



<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

注意:我看了这个类似的问题,但是似乎有一些区别,我无法找到适合我的解决方案。


问题答案:

添加min-height: 0.flexGrowWrapper-参见下面的演示:

$("button").click(function() {

  $(".resize").toggleClass("small");

});


.resize {

  height: 200px;

  display: flex;

  flex-direction: column;

  overflow-y: hidden;

  width: 300px;

}



.resize.small {

  height: 100px;

}



.heading {

  flex: 0 0 auto;

}



.flexGrowWrapper {

  border: 2px solid red;

  flex-grow: 1;

  min-height: 0; /* ADDED */

}



.wrapper {

  height: 100%;

  overflow-y: auto;

}



.content {

  display: flex;

  flex-direction: row;

  clear: both;

}


<button>

Resize

</button>

<div class="resize">

  <div class="heading">

    <label>Some heading that wont scroll</label>

  </div>

  <div class="flexGrowWrapper">

    <div class="wrapper">

      <div class="content">

        content

      </div>

      <div class="content">

        content

      </div>

      <div class="content">

        content

      </div>

      <div class="content">

        content

      </div>

      <div class="content">

        content

      </div>

      <div class="content">

        content

      </div>

      <div class="content">

        content

      </div>

    </div>

  </div>

</div>

<div>

  Something else here

</div>



<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

为什么这样

请注意,这是因为对于 列flexbox ,默认min-height值为auto(沿 flex axis
)。



 类似资料:
  • 以下是我用来实现上述布局的代码: 我省略了用于样式设置的代码。你可以在钢笔里看到所有的东西。 上述方法有效,但当区域的内容溢出时,会使整个页面滚动。我只希望内容区域本身滚动,因此我将添加到div。 现在的问题是,柱本身并没有超出其父高度,因此边界也在那里被切断。 这是显示滚动问题的笔。 如何将区域设置为独立滚动,同时使其子项延伸到框的高度之外?

  • 问题是当我将页面收缩到某个点时, 元素的顶部溢出,奇怪的是底部没有溢出。说清楚一点,我不想让这两个都溢出来。 这里有一个指向它的JSFiddle链接:https://jsfidle.net/maep468x/1 您将看到,当您运行它并将结果窗口缩小到大约350px时, 元素开始溢出。 我已经尝试从.main-content规则中删除我的line-height和font-size属性,但它仍然溢出。

  • 我有一个简单的问题:我想把一个文本和一个图像放在一行。我试过用display flex,但它总是调整图像的大小,这不是我想要的。 这是我的html代码: 这是我的CSS: 我还想把关闭的imgage放在方框的右边。看起来总是这样: 这可能很容易解决,但我现在很困惑。(感谢您的帮助:)

  • 问题内容: 我正在将JTable放入JScrollPane 但是,当我设置JTable Auto Resizeable时,它将没有水平滚动条。 如果我设置了AUTO_RESIZE_OFF,那么当列宽不够大时,Jtable将不会填充其容器的宽度。 所以我该怎么做: 当表格不够宽时,展开以填充其容器宽度 当表格足够宽时,使其可滚动。 谢谢 问题答案: 您需要自定义Scrollable界面的行为。 上面

  • 问题内容: 在Java应用程序中使用时,我遇到了一个小问题。 我有一个。这被动态地与按钮(垂直排序),其可以是任何宽度的更新。的自动调整其宽度最大的部件内部。 现在,当出现垂直滚动条时,它会占用my右侧的一些空间,这将导致最大的按钮无法完全显示。除了显示整个按钮之外,我不想使用水平滚动条。 当滚动条出现时,是否有办法调整我的大小,使其很好地显示在我的按钮旁边?还是有其他方法可以使滚动条出现在我的旁

  • jQueryUI提供resizable()方法来调整任何DOM元素的大小。 这种方法简化了元素的大小调整,否则需要花费大量时间和HTML编码。 resizable()方法在项目的右下角显示一个图标以调整大小。 语法 (Syntax) resizable()方法可以使用两种形式 - $(selector,context).resizable(options)方法 $(selector, contex