当父级溢出时,下拉菜单会被切断

问题描述 投票:0回答:3

我创建了一个下拉菜单,我使用了我的真实项目源代码,这样就不会有混淆:-

.main-container {
  overflow-x: auto;
}

div.btn-dropdown-options {
    font-family: "Haas Grot Text R Web", "Helvetica Neue", Helvetica, Arial, sans-serif;
    font-size: 14px;
    font-weight: 400;
    line-height: 20px;
    
    position: absolute;
    z-index: 1000;
    top: calc(100% + 8px);
    left: 0;
    min-width: 180px;
    margin-top: 4px;
    overflow: auto;
    border: 1px solid rgba(0,0,0,0.05);
    border-radius: 8px;
    background: #fff;
    visibility: hidden;
  opacity: 0;
  transition: opacity 2s, visibility 2s;
    
    
    -webkit-box-shadow: 0px 1px 2px rgba(128,138,157,0.12),0px 8px 32px rgba(128,138,157,0.24);
    box-shadow: 0px 1px 2px rgba(128,138,157,0.12),0px 8px 32px rgba(128,138,157,0.24);
}

我有一个下拉菜单 div.btn-dropdown-options 和一个父容器 main-container。当我单击切换按钮显示下拉菜单时,由于溢出属性,它被切断,我使用了position:absolute和z-index:1000;,但没有任何效果,如何在溢出上方显示下拉菜单?

完整代码:- https://jsfiddle.net/ur5sL4qv/

javascript html css drop-down-menu overflow
3个回答
0
投票
  1. 可以通过为主容器分配高度来解决

.main-container {overflow-x: auto; height: 100vh;}

  1. 在 div.btn-dropdown-options 中使用相对位置而不是绝对位置

div.btn-dropdown-options {position: relative;}


0
投票

不确定我是否完全理解这个问题(我建议使用背景颜色来表示不需要的内容)。但是从 .main-container 中删除

overflow-x
并将
position: absolute
添加到下拉选项可以解决您的问题吗?

.btn-dropdown .btn-dropdown-options {
    position: absolute;
    right: 0;
}

0
投票

如果您使用 prime ng 或 boostrap,它允许将下拉列表附加到主体或更高级别的容器以避免剪切。

 <p-dropdown class="w-full" formControlName="RequiredLOA" [options]="requires"  [appendTo]="'body'"optionLabel="name" optionValue="value"  optionDisabled="inactive"> </p-dropdown>

© www.soinside.com 2019 - 2024. All rights reserved.