Popper.js 和 flex-end 导致主体溢出

Mat*_*att 5 javascript css jquery flexbox popper.js

在我的项目中,我有一个下拉按钮列表,这些按钮使用flex-end. 我创建了一个显示问题的代码的最小版本:

var popper = new Popper(
  $('#anchor')[0],
  $('#popper')[0],
  {
    modifiers: {
      preventOverflow: {
        enabled: true,
        boundariesElement: 'window'
      }
    }
  }
);
Run Code Online (Sandbox Code Playgroud)
body {
  height: 2000px;
}
.parent {
  display: flex;
  justify-content: flex-end;
}
.anchor {
  width: 40px;
  height: 40px;
  
  background-color: #333;
}
.popper {
  width: 120px;
  height: 80px;
  
  background-color: #c23;
  border: 2px solid #ae3;
}

ul {
  list-style-type: none;
  margin: 0 -6px;
}
li {
  margin: 0 6px;
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://unpkg.com/popper.js/dist/umd/popper.min.js"></script>

<ul class="parent">
  <li><div class="anchor"></div></li>
  <li><div class="anchor"></div></li>
  <li><div class="anchor"></div></li>
  <li>
    <div class="anchor" id="anchor"></div>
    <div class="popper" id="popper"></div>
  </li>
</ul>
Run Code Online (Sandbox Code Playgroud)

如上所示,.popperdiv 正在溢出body;导致出现滚动条。

删除li使 Popper 按预期工作,但我不能这样做,因为我会丢失我的列表。使用flex-start而不是-end也可以正常工作。

值得注意的是,.popper.anchor元素可以是任何宽度,具体取决于它们中的内容。

这种行为是否有任何变通方法或解决方案?最好不要更改任何标记。