Bootstrap 4 下拉菜单在数据表中不可见

Posted

技术标签:

【中文标题】Bootstrap 4 下拉菜单在数据表中不可见【英文标题】:Bootstrap 4 dropdown not-visible inside datatable 【发布时间】:2020-06-02 21:08:01 【问题描述】:

我已经看到 Bootstrap button drop-down inside responsive table not visible because of scroll 和这个 Bootstrap 4 drop-down menu in table 问题,但解决方案不适用于我,因为我使用的是 DataTables 插件。

下拉菜单应该高于一切,但即使按照 Bootstrap 4 文档所述使用data-boundary="window",它仍然无法正常工作。

您可以在这个 JSFiddle 中看到问题。

没有DataTables的代码,也可以正常工作。

$(table).DataTable(

    'bPaginate'         : true,
    'bLengthChange'     : false,
    'bFilter'           : true,
    'bInfo'             : true,
    'bAutoWidth'        : false,
    'aoColumnDefs'      : [
      
        'bSortable'     : false,
        'aTargets'      : ['nosorting']
      ],
    'aaSorting'         : [],
)

【问题讨论】:

【参考方案1】:

您的数据表溢出。因此,要使您的下拉列表可见,您需要将其附加到正文中。 Solution

【讨论】:

【参考方案2】:

刚刚在数据表配置中添加 'scrollY': '50vh', 'scrollCollapse': true

$(function() 
  var table = $('table');

  $(table).DataTable(
    'bPaginate': true,
    'bLengthChange': false,
    'bFilter': true,
    'bInfo': true,
    'bAutoWidth': false,
    'aoColumnDefs': [
      'bSortable': false,
      'aTargets': ['nosorting']
    ],
    'aaSorting': [],
  )
);
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet" type="text/css">
<link href="https://cdnjs.cloudflare.com/ajax/libs/datatables/1.10.19/css/dataTables.bootstrap4.min.css" rel="stylesheet" type="text/css">

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js" type="text/javascript"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.1/umd/popper.min.js" type="text/javascript"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/js/bootstrap.min.js" type="text/javascript"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/datatables/1.10.19/js/jquery.dataTables.min.js" type="text/javascript"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/datatables/1.10.19/js/dataTables.bootstrap4.min.js" type="text/javascript"></script>

<div class="container">
  <div class="row">
    <div class="col-12">
      <div class="table-responsive">
        <table class="table table-hover">
          <thead>
            <tr>
              <th>Name</th>
              <th>Options</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td>John</td>
              <td>
                <div class="btn-group dropup">
                  <a class="btn dropdown-toggle" data-toggle="dropdown">
            Title
            <span class="caret"></span>
          </a>
                  <ul class="dropdown-menu">
                    <li class="dropdown-submenu"><a>Option 1</a></li>
                    <li class="dropdown-submenu"><a>Option 1</a></li>
                  </ul>
                </div>
                <div class="btn-group dropleft">
                  <button class="btn btn-secondary dropdown-toggle font-10-px" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" data-boundary="window">Options</button>
                  <div class="dropdown-menu">
                    <button class="dropdown-item font-12-px" type="button">Option 1</button>
                    <button class="dropdown-item font-12-px" type="button">Option 2</button>
                    <button class="dropdown-item font-12-px" type="button">Option 3</button>
                    <button class="dropdown-item font-12-px" type="button">Option 4</button>
                  </div>
                </div>
              </td>
            </tr>
          </tbody>
        </table>
      </div>
    </div>
  </div>
</div>

【讨论】:

我希望下拉菜单在所有内容之上,我不希望它滚动。 还是不行。如果我将您的代码完全复制并粘贴到 JSFiddle 中,则会发生相同的错误,而且我想保持 dropleft 行为。【参考方案3】:

试试这个。我希望它会奏效。但请在移动视图中查看。如果您遇到响应式问题,请将 tabel-responsive 类赋予其父 div。

.table-responsive, .dataTables_scrollBody 
   overflow: visible !important;

【讨论】:

以上是关于Bootstrap 4 下拉菜单在数据表中不可见的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Bootstrap 3 导航栏下拉菜单在 IE8 中不起作用?

导航栏下拉菜单(折叠)在 Bootstrap 5 中不起作用

由于 jQuery,Bootstrap 下拉菜单在 Node 应用程序中不起作用

twitter bootstrap 下拉菜单在 django 模板中不起作用

Twitter Bootstrap 按钮下拉菜单在 IE9 中不起作用

引导下拉菜单在母版页中不起作用