为啥flex横向布局的子元素高度100%生效了但是却被子元素撑开了?而且overflow不生效?

新手上路,请多包涵

flex纵向布局里面嵌套flex横向布局,为啥flex横向布局的子元素高度100%生效了但是却被子元素撑开了?而且overflow不生效?

代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
      *{
        margin: 0;
        padding: 0;
        box-sizing: border-box;
      }
      .column{
        display: flex;
        flex-direction: column;
        height: 500px;
        width: 100vw;
        border: 3px solid blue;
      }
      .btm{
        flex: 1;
        box-sizing: border-box;
        display: flex;
        border: 3px solid red;
      }
      .left, .right{
        width: 50%;
        height: 100%;
        background-color: rgba(0, 5, 5, 0.3);
      }
      .left{
        border-right: 1px solid green;
        display: flex;
        flex-direction: column;
      }
      .title{
        background-color: aquamarine;
      }
      .content{
        height: 100%;
        overflow: auto;
      }
    </style>
</head>
<body>
  <div class="column">
    <div class="top">
      <div class="title">大标题</div>
    </div>
    <div class="btm">

      <div class="left">
        <div class="title">小标题</div>
          <div class="content">
            flex纵向布局里面嵌套flex横向布局,为啥flex横向布局的子元素高度100%生效了但是却被子元素撑开了?而且overflow不生效?
            flex纵向布局里面嵌套flex横向布局,为啥flex横向布局的子元素高度100%生效了但是却被子元素撑开了?而且overflow不生效?
            flex纵向布局里面嵌套flex横向布局,为啥flex横向布局的子元素高度100%生效了但是却被子元素撑开了?而且overflow不生效?
            flex纵向布局里面嵌套flex横向布局,为啥flex横向布局的子元素高度100%生效了但是却被子元素撑开了?而且overflow不生效?
            flex纵向布局里面嵌套flex横向布局,为啥flex横向布局的子元素高度100%生效了但是却被子元素撑开了?而且overflow不生效?
            flex纵向布局里面嵌套flex横向布局,为啥flex横向布局的子元素高度100%生效了但是却被子元素撑开了?而且overflow不生效?
            flex纵向布局里面嵌套flex横向布局,为啥flex横向布局的子元素高度100%生效了但是却被子元素撑开了?而且overflow不生效?
            flex纵向布局里面嵌套flex横向布局,为啥flex横向布局的子元素高度100%生效了但是却被子元素撑开了?而且overflow不生效?
            flex纵向布局里面嵌套flex横向布局,为啥flex横向布局的子元素高度100%生效了但是却被子元素撑开了?而且overflow不生效?
            flex纵向布局里面嵌套flex横向布局,为啥flex横向布局的子元素高度100%生效了但是却被子元素撑开了?而且overflow不生效?
          </div>
      </div>
      <div class="right"></div>

    </div>
  </div>
    
</body>
</html>

效果图:
image.png
我想要的是横向布局左半块的文字内容超出就滚动,但是滚动没生效,有知道原因的吗?

阅读 5.3k
3 个回答
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>Document</title>
        <style>
            * {
                margin: 0;
                padding: 0;
                box-sizing: border-box;
            }
            .column {
                display: flex;
                flex-direction: column;
                height: 500px;
                width: 100vw;
                border: 3px solid blue;
            }
            .btm {
                flex: 1;
                box-sizing: border-box;
                display: flex;
                border: 3px solid red;
                overflow: hidden;
            }
            .left,
            .right {
                width: 50%;
                height: 100%;
                background-color: rgba(0, 5, 5, 0.3);
            }
            .left {
                border-right: 1px solid green;
                display: flex;
                flex-direction: column;
            }
            .title {
                background-color: aquamarine;
            }
            .content {
                height: 100%;
                overflow: auto;
            }
        </style>
    </head>
    <body>
        <div class="column">
            <div class="top">
                <div class="title">大标题</div>
            </div>
            <div class="btm">
                <div class="left">
                    <div class="title">小标题</div>
                    <div class="content">
                        flex纵向布局里面嵌套flex横向布局,为啥flex横向布局的子元素高度100%生效了但是却被子元素撑开了?而且overflow不生效?
                        flex纵向布局里面嵌套flex横向布局,为啥flex横向布局的子元素高度100%生效了但是却被子元素撑开了?而且overflow不生效?
                        flex纵向布局里面嵌套flex横向布局,为啥flex横向布局的子元素高度100%生效了但是却被子元素撑开了?而且overflow不生效?
                        flex纵向布局里面嵌套flex横向布局,为啥flex横向布局的子元素高度100%生效了但是却被子元素撑开了?而且overflow不生效?
                        flex纵向布局里面嵌套flex横向布局,为啥flex横向布局的子元素高度100%生效了但是却被子元素撑开了?而且overflow不生效?
                        flex纵向布局里面嵌套flex横向布局,为啥flex横向布局的子元素高度100%生效了但是却被子元素撑开了?而且overflow不生效?
                        flex纵向布局里面嵌套flex横向布局,为啥flex横向布局的子元素高度100%生效了但是却被子元素撑开了?而且overflow不生效?
                        flex纵向布局里面嵌套flex横向布局,为啥flex横向布局的子元素高度100%生效了但是却被子元素撑开了?而且overflow不生效?
                        flex纵向布局里面嵌套flex横向布局,为啥flex横向布局的子元素高度100%生效了但是却被子元素撑开了?而且overflow不生效?
                        flex纵向布局里面嵌套flex横向布局,为啥flex横向布局的子元素高度100%生效了但是却被子元素撑开了?而且overflow不生效?
                    </div>
                </div>
                <div class="right"></div>
            </div>
        </div>
    </body>
</html>
为使 overflow 有效果,块级容器必须有一个指定的高度(height或者max-height)或者将white-space设置为nowrap。---参考MDN-overflow

问题的关键点在:

.content{
        height: 100%; // 修改成指定高度即可~😉
        overflow: auto;
      }

有问题先看看文档~😁

给btm设置height:0,或者设置overflowe:hidden/auto

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题