【问题标题】:CSS Flexbox - scroll not visible with overflow-scroll: yCSS Flexbox - 使用溢出滚动不可见滚动:y
【发布时间】:2019-08-09 13:23:48
【问题描述】:

我有这个sn-p:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body style='overflow: hidden;'>
<style>
        *, :after, :before {
            box-sizing: border-box;
        }

        .example {
            display: flex;
            flex-direction: column;
            justify-content: flex-end;
            height: 100%;
            max-height: 100%;
        }

        .bottom {
            overflow: auto;
            height: 140px;
            max-height: 100%;
            flex-shrink: 0;
            white-space: pre-wrap;
        }

        .top {
            position: relative;
            display: flex;
        }

        .scroll {
            overflow-y: scroll;
            width: 100%;
        }

        .elements {
            position: relative;
        }
        .test {
            margin-top: 20px;
        }
    </style>
<article class="example">
    <div class="top">
        <div class="scroll">
            <article class="elements">
                <article class="test">
                    TEST
                </article>
                <article class="test">
                    TEST
                </article>
                <article class="test">
                    TEST
                </article>
                <article class="test">
                    TEST
                </article>
                <article class="test">
                    TEST
                </article>
                <article class="test">
                    TEST
                </article>
                <article class="test">
                    TEST
                </article>
                <article class="test">
                    TEST
                </article>
                <article class="test">
                    TEST
                </article>
                <article class="test">
                    TEST
                </article>
                <article class="test">
                    TEST
                </article>
                <article class="test">
                    TEST
                </article>
                <article class="test">
                    TEST
                </article>
                <article class="test">
                    TEST
                </article>
                <article class="test">
                    TEST
                </article>
                <article class="test">
                    TEST
                </article>
                <article class="test">
                    TEST
                </article>
                <article class="test">
                    TEST
                </article>
                <article class="test">
                    TEST
                </article>
                <article class="test">
                    TEST
                </article>
                <article class="test">
                    TEST
                </article>
                <article class="test">
                    TEST
                </article>
                <article class="test">
                    TEST
                </article>
                <article class="test">
                    TEST
                </article>
                <article class="test">
                    TEST
                </article>
                <article class="test">
                    TEST
                </article>
                <article class="test">
                    TEST
                </article>
                <article class="test">
                    TEST
                </article>
            </article>
        </div>
    </div>
    <article class="bottom">
        Bottom
    </article>
</article>
</body>
</html>
这个想法是“底部”文本始终可见,并且带有“测试”元素的区域是可滚动的 - 但滚动不起作用。你愿意花一点时间帮我弄清楚吗?预先感谢您的每一个帮助。

【问题讨论】:

    标签: html css flexbox


    【解决方案1】:

    对您的代码进行一些更改

    *,
     :after,
     :before {
      box-sizing: border-box;
    }
    
    /* some normalization to document */
    
    html,
    body {
      height: 100%;
      margin: 0;
      padding: 0;
      overflow: hidden;
    }
    
    .example {
      display: flex;
      flex-direction: column;
      justify-content: flex-end;
      height: 100%;
      max-height: 100%;
    }
    
    .bottom {
      overflow: auto;
      height: 140px;
      max-height: 100%;
      flex-shrink: 0;
      white-space: pre-wrap;
    }
    
    /* handling overflow here */
    
    .top {
      position: relative;
      display: flex;
      overflow: auto;
    }
    
    /* removed overflow here */
    
    .scroll {
      width: 100%;
    }
    
    .elements {
      position: relative;
    }
    
    .test {
      margin-top: 20px;
    }
    <article class="example">
      <div class="top">
        <div class="scroll">
          <article class="elements">
            <article class="test">
              TEST
            </article>
            <article class="test">
              TEST
            </article>
            <article class="test">
              TEST
            </article>
            <article class="test">
              TEST
            </article>
            <article class="test">
              TEST
            </article>
            <article class="test">
              TEST
            </article>
            <article class="test">
              TEST
            </article>
            <article class="test">
              TEST
            </article>
            <article class="test">
              TEST
            </article>
            <article class="test">
              TEST
            </article>
            <article class="test">
              TEST
            </article>
            <article class="test">
              TEST
            </article>
            <article class="test">
              TEST
            </article>
            <article class="test">
              TEST
            </article>
            <article class="test">
              TEST
            </article>
            <article class="test">
              TEST
            </article>
            <article class="test">
              TEST
            </article>
            <article class="test">
              TEST
            </article>
            <article class="test">
              TEST
            </article>
            <article class="test">
              TEST
            </article>
            <article class="test">
              TEST
            </article>
            <article class="test">
              TEST
            </article>
            <article class="test">
              TEST
            </article>
            <article class="test">
              TEST
            </article>
            <article class="test">
              TEST
            </article>
            <article class="test">
              TEST
            </article>
            <article class="test">
              TEST
            </article>
            <article class="test">
              TEST
            </article>
          </article>
        </div>
      </div>
      <article class="bottom">
        Bottom
      </article>
    </article>

    【讨论】:

    • 如果我理解正确,唯一的变化就是处理向上滚动一级,对吗?
    【解决方案2】:

    您没有为文章容器设置高度(您也可以使用 overflow: auto; )。

    .elements {
       position: relative;
       overflow: auto;
       height: 150px;
    }
    

    【讨论】:

    • 我这样做是为了举例(实际情况下,它的高度约为 150 像素)
    猜你喜欢
    • 2011-07-09
    • 1970-01-01
    • 2016-11-22
    • 1970-01-01
    • 2012-07-09
    • 2020-10-12
    • 1970-01-01
    • 2011-09-19
    相关资源
    最近更新 更多