gpt4 book ai didi

html - 绝对定位元素内部溢出 :auto parent

转载 作者:行者123 更新时间:2023-11-28 05:22:35 26 4
gpt4 key购买 nike

我们有一个 div,它有一个 max-height 属性。因为我们希望内容可以滚动,所以我们在那个 div 中有 overflow:auto

但现在我们需要在内容中有一个 Bootstrap 下拉菜单,当下拉菜单被激活时,菜单呈现在容器 div 内,它不会弹出。我们该如何解决这个问题?

这里是情况的复制:https://jsfiddle.net/broncha/h1pa0tex/

最佳答案

快速回答是你不能!(如果您使用 overflow:auto,那么 container 中的所有内容都将是可滚动的。)

  1. 如果你没有 overflow 它会起作用:

        .container{
    width: 200px;
    background: lightblue;
    padding: 15px;
    }

    .dropdown{
    border: 1px solid #000;
    position: relative;
    }

    .popup{
    position: absolute;
    top: 100%;
    left:0;
    background: red;
    }
        <div class="container">
    <p>asasd asdasdas dasdasda</p>
    <p>asasd asdasdas dasdasda</p>
    <div class="dropdown">
    <p>Content</p>
    <div class="popup">
    <p>asasd asdasdas dasdasda</p>
    <p>asasd asdasdas dasdasda</p>
    <p>asasd asdasdas dasdasda</p>
    </div>
    </div>
    </div>

  2. 如果你想要的正是你所追求的,那么你必须做 position: fixed 并使用 js 来调整滚动:

        $(document).ready(function() {
    $('div.dropdown').each(function() {
    var dropDownTop = $(this).offset().top - $(window).scrollTop() + this.getBoundingClientRect().height;
    $(this).find('.popup').css('top', dropDownTop + "px");
    $(this).find('.popup').css('left', $(this).offset().left - 0.5 + "px");
    $(this).find('.popup').css('width', this.getBoundingClientRect().width - 1 + "px");
    });

    });

    $('div.container').scroll(function() {
    $('div.dropdown').each(function() {
    var dropDownTop = $(this).offset().top - $(window).scrollTop() + this.getBoundingClientRect().height;
    $(this).find('.popup').css('top', dropDownTop + "px");
    $(this).find('.popup').css('left', $(this).offset().left - 0.5 + "px");
    $(this).find('.popup').css('width', this.getBoundingClientRect().width - 1 + "px");

    });
    });
        body {
    margin: 0;
    padding: 0;
    }
    * {
    box-sizing: border-box;
    }
    .container {
    width: 200px;
    max-height: 200px;
    overflow: auto;
    background: lightblue;
    padding: 15px;
    }
    .dropdown {
    border: 1px solid #000;
    position: relative;
    }
    .popup {
    position: fixed;
    background: red;
    }
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div class="container">
    <p>asasd asdasdas dasdasda</p>
    <p>asasd asdasdas dasdasda</p>
    <div class="dropdown">
    <p>Content</p>
    <div class="popup">
    <p>asasd asdasdas dasdasda</p>
    <p>asasd asdasdas dasdasda</p>
    <p>asasd asdasdas dasdasda</p>
    </div>
    </div>
    <p>asasd asdasdas bnvnbv jgjg khg nbvnbvn nbvn bv</p>
    <p>asasd asdasdas nbv mgv mbnv mnbv nbv</p>
    <p>asasd asdasdas kuyg k kjhb kjhb</p>
    <p>asasd asdasdas jkhg kjhg jhb khg</p>
    <p>asasd asdasdas kjhg jhg hjgyg</p>
    <p>asasd asdasdas hkjh jbjhb mv mhv</p>
    </div>

让我知道您对此的反馈。谢谢!

关于html - 绝对定位元素内部溢出 :auto parent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38954100/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com