css - 启用 "overflow-y: auto"时,多选列表在 x 轴上被截断

标签 css user-interface bootstrap-multiselect

这是我在工作中遇到的一个非常奇怪的问题,所以请原谅我无法提供大量代码,但背景是我只是想为页面的一些过滤器创建一个 sidenav .在 sidenav 中,我有一个容器,用于所有我希望能够垂直滚动的 Bootstrap 多选下拉菜单(来自此来源:http://davidstutz.de/bootstrap-multiselect/)。我遇到的问题是,当我使用 overflow-y: autooverflow-y: scroll 时,我看到一个奇怪的问题,其中 multi- select 将在过滤器 sidenav 的边缘截断,但是当我禁用它时,它会按照我的预期显示。

同样,这个多选来自 Bootstrap,但在检查 css 时,多选元素具有以下属性:

    max-height: 350px;
    overflow: hidden auto;
    width: 397px;
    position: absolute;
    will-change: transform;
    top: 0px;
    left: 0px;
    transform: translate3d(-130px, -352px, 0px);
    z-index: 1000;
    margin: 0.125rem 0 0;

所有这些多选元素的容器都具有以下 CSS:

   padding: 20px;
   position: relative;
   height: calc(100% - 70px);
   z-index: 2;
   overflow-y: auto; (<- Disabling this gives the desired display, but not scrolling behavior)

如果需要更多信息,我会尽我所能提供帮助。

我创建了一个小代码笔来捕捉我的问题的基本概念:https://codepen.io/dakotamaker1/pen/NWWeezb

如果有人有任何见解,这正是我正在寻找的,因为我无论如何都不是世界顶级的 CSS 专家,并且对于这个半相关的问题没有真正明确的解决方案:Bootstrap-Multiselect: Dropdown is underneatch outer container if overflow-y is used .干杯。

最佳答案

我不知道这是否解释了您正在寻找的内容,但请查看我自己的解决方案。

我之前已经回答过这个问题,但我想我误解了这个问题,这就是为什么我的答案多次被编辑的原因,我的错。我只是在下面的解决方案中替换了这些类中相对于静态的位置,span.multiselect-native-select, .btn-group, .btn-group-vertical,并对 js 进行了一些更新以确定期权持有人的权利和最高位置。

    $(document).ready(function() {
        $('#multiple-checkboxes').multiselect({
          includeSelectAllOption: true,
          maxHeight: 350,
          dropRight: true,
        });
      
      var position = $('.multiselect').position();
      var height = $('.btn-group').height();
      var right = ($(window).width() - ($('.btn-group').offset().left + $('.btn-group').outerWidth()));
     
        $('.dropdown-menu.pull-right')
          .css({
          top: position.top + height,
          right: right
        });
    });
.side {
  position: absolute;
  top: 0;
  right: 0;
  width: 200px;
  background-color: red;
  height: 100%;
}

.cont {
  padding: 20px;
  overflow-x: visible;
  overflow-y: auto;
  height: 90%;
}

.bottom {
  height: 10%;
  bottom: 0;
  position: absolute;
}

span.multiselect-native-select, .btn-group, .btn-group-vertical {
    position: static !important;
}

.dropdown-menu.pull-right {
/*   top: 55px;
  right: 50px !important; */
}
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.js"></script>
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
  <script type="text/javascript" src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>

  <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-multiselect/0.9.15/js/bootstrap-multiselect.js"></script>
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-multiselect/0.9.15/css/bootstrap-multiselect.css">


<div class="side">
  <div class='cont'>
    <select id="multiple-checkboxes" multiple="multiple">
        <option value="php">asdlkjfhalsdfjalsd;fha;sldkfja;sldkfja;lsdkjf;alsdkfja;sldkfja;sldkjfa;lsdkfja;lsdkfja;lsdkjf;al</option>
        <option value="javascript">JavaScript</option>
        <option value="java">Java</option>
        <option value="sql">SQL</option>
        <option value="jquery">Jquery</option>
        <option value=".net">.Net</option>
    </select>
    <div class='bottom'>
      <button> Apply</button>
    </div>
  </div>
</div>

关于css - 启用 "overflow-y: auto"时,多选列表在 x 轴上被截断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58884102/

相关文章:

jquery - 在嵌套 DIV 的情况下将图像设置在 DIV 的中间

jquery - bootstrap multiselect - 单击即可取消选择/取消选中所有选项

javascript - 如何更改压缩圆d3中圆的对齐方式

c# - 适用于 Windows 7 的带有 GUI 的 Perl 应用程序

.net - 为 Powershell 创建 GUI 前端

javascript - 如何使用重置按钮从 bootstrap-multiselect 中取消选择所有选定的值?

angularjs - Angular Bootstrap 多选择器组件在模型更改后不在选项上显示刻度线

html - 为按钮使用背景图像。如何根据文本的长度调整按钮的大小?

javascript - 使弹出 div 可堆叠

html - Chromium 计算表格宽度不正确?