【问题标题】:DataTables buttons not centered on narrow screenDataTables 按钮不在窄屏幕上居中
【发布时间】:2018-03-27 14:54:40
【问题描述】:

我有一个使用 Twitter Bootstrap 3 样式并使用一些按钮的 DataTable。这是它被初始化的代码:

bookingsTable = $('#bookings-table').DataTable({
  language: {
    "url": "//cdn.datatables.net/plug-ins/1.10.16/i18n/Italian.json"
  },
  dom: "<'row'<'col-sm-4'l><'col-sm-4 text-center'B><'col-sm-4'f>>" +
    "<'row'<'col-sm-12'tr>>" +
    "<'row'<'col-sm-5'i><'col-sm-7'p>>",
  buttons: [
    {
      extend: 'excel',
      className: "btn-sm",
      text: 'Esporta',
      exportOptions: {
        columns: [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 ]
      }
    },
    {
      extend: 'colvis',
      className: "btn-sm",
      text: 'Colonne'
    },
    'refresh'
  ],
  scrollY:        500,
  scrollX:        true,
  scrollCollapse: true,
  paging:         true,
  fixedColumns:   true,
  select: true 
});

如您所见,按钮位于 dataTables_lengthdataTables_filter 包装器之间的中心,它们分别包装了当前显示的行数和输入搜索。

只要宽度大于 768 像素,一切都会按预期工作。在下方时,三个col-sm-4 列正确地各自在自己的行上,但是,当dataTables_lengthdataTables_filter 居中时,按钮的包装是左对齐的,这没有多大意义,因为它有 text-center 类,它应该保持居中对齐。

普通表:

缩表:

我想我在这里遗漏了一些东西,但是我无法找出问题所在。

Here 是一个 JSFiddle 示例。

【问题讨论】:

    标签: css twitter-bootstrap-3 datatables


    【解决方案1】:

    更新:修复了这里的问题:https://jsfiddle.net/phgw8kbx/11/ div 'dt-buttons btn-group' 使用 100% 宽度,应该是自动的,或者您需要使元素 inline-block 居中对齐。 只需在某处添加这个 css,应该可以正常工作。

    $(function() {
      $.fn.dataTable.ext.buttons.refresh = {
        text: 'Aggiorna',
        className: 'btn-sm',
        action: function (e, dt, node, config) {
        }
      };
    
      bookingsTable = $('#bookings-table').DataTable({
        language: {
          "url": "//cdn.datatables.net/plug-ins/1.10.16/i18n/Italian.json"
        },
        dom: "<'row'<'col-sm-4'l><'col-sm-4 text-center'B><'col-sm-4'f>>" +
          "<'row'<'col-sm-12'tr>>" +
          "<'row'<'col-sm-5'i><'col-sm-7'p>>",
        buttons: [
          {
            extend: 'excel',
            className: "btn-sm",
            text: 'Esporta',
            exportOptions: {
              columns: [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 ]
            }
          },
          {
            extend: 'colvis',
            className: "btn-sm",
            text: 'Colonne'
          },
          'refresh'
        ],
        scrollY:        500,
        scrollX:        true,
        scrollCollapse: true,
        paging:         true,
        fixedColumns:   true,
        select: true 
      });
    });
    &lt;!-- begin snippet: js hide: false console: true babel: false --&gt;
    <!DOCTYPE html>
    <html lang="it">
      <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
    
        <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
        <meta name="description" content="">
        <meta name="author" content="">
        <!--    <link rel="icon" href="../../favicon.ico"> //TODO: set custom favicon-->
    
        <title>Gestione avanzata</title>
    
        <!-- Font Awesome v4.7.0 -->
        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" />
    
        <!-- Twitter Bootstrap v3.3.7 core CSS -->
        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" />
    
        <!-- Bootstrap DataTables CSS v1.10.16 -->
        <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.16/css/dataTables.bootstrap.min.css"/>
    
        <!-- DataTables Bootstrap Buttons CSS v1.5.1 -->
        <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/buttons/1.5.1/css/buttons.bootstrap.min.css"/>
    
        <!-- Custom CSS -->
        <link rel="stylesheet" type="text/css" href="css/bookings_manager.css" />
      </head>
    
      <body>
        <div class="container-fluid">
          <div class="col-sm-12">
            <h2 class="text-center">Storico prenotazioni</h2>
    
            <!-- Vehicles' table -->
            <div class="">
              <table id="bookings-table" class="table table-bordered table-striped text-center" cellspacing="0" width="100%">
                <thead>
                  <tr>
                    <td><strong>ID prenotazione</strong></td>
                    <td><strong>Veicolo</strong></td>
                    <td><strong>Impiegato</strong></td>
                    <td><strong>Centro</strong></td>
                    <td><strong>Data</strong></td>
                    <td><strong>Partenza da</strong></td>
                    <td><strong>Ora di partenza</strong></td>
                    <td><strong>Tragitto intermedio</strong></td>
                    <td><strong>Ritorno a</strong></td>
                    <td><strong>Ora di ritorno</strong></td>
                    <td><strong>Servizio</strong></td>
                    <td><strong>Motivazione</strong></td>
                    <td><strong>Stato</strong></td>
                    <td><strong>Storia</strong></td>
                    <td><strong>Opzioni</strong></td>
                  </tr>
                </thead>
                <tbody>
                </tbody>
              </table>
            </div>
          </div>
        </div>
        
        <!-- Modal to show the history of a booking -->
        <div class="modal fade" id="booking-history-modal" tabindex="-1" role="dialog" aria-labelledby="booking-history-modal-label">
          <div class="modal-dialog modal-md" role="document">
            <div class="modal-content">
              <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-label="Chiudi"><span aria-hidden="true">&times;</span></button>
                <h4 class="modal-title" id="booking-history-modal-label">Storico prenotazione</h4>
              </div>
              <div class="modal-body">
                <table id="booking-history-table" class="table table-bordered table-striped text-center" cellspacing="0" width="100%">
                  <thead>
                    <tr>
                      <td><strong>Impiegato</strong></td>
                      <td><strong>Azione</strong></td>
                      <td><strong>Motivazione</strong></td>
                      <td><strong>Data e ora</strong></td>
                    </tr>
                  </thead>
                  <tbody>
                  </tbody>
                </table>
              </div>
              <div class="modal-footer">
                <button type="button" class="btn btn-default" data-dismiss="modal">Chiudi</button>
              </div>
            </div>
          </div>
        </div>
        
        <!-- Modal to permanently delete a booking -->
        <div class="modal fade" id="booking-delete-modal" tabindex="-1" role="dialog" aria-labelledby="booking-delete-modal-label">
          <div class="modal-dialog modal-md" role="document">
            <div class="modal-content">
              <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-label="Chiudi"><span aria-hidden="true">&times;</span></button>
                <h4 class="modal-title" id="booking-delete-modal-label">Elimina prenotazione</h4>
              </div>
              <div class="modal-body">
                Sei sicuro di voler eliminare in maniera definitiva questa prenotazione?
                Essa verrà eliminata dal database, e non sarà più possibile recuperarla. Verrà eliminata anche dallo storico delle prenotazioni.
              </div>
              <div class="modal-footer">
                <button type="button" class="btn btn-danger" id="confirm-delete-booking-button">
                  <span class="fa fa-trash fa-fw" aria-hidden="true"></span>
                  Elimina
                </button>
                <button type="button" class="btn btn-default" data-dismiss="modal">Chiudi</button>
              </div>
            </div>
          </div>
        </div>
    
        <!-- Modal to give information about the last action (error/success) -->
        <div class="modal fade" id="action-info-modal" tabindex="-1" role="dialog" data-keyboard="false" aria-labelledby="action-info-modal-label">
          <div class="modal-dialog modal-md" role="document">
            <div class="modal-content">
              <div class="modal-header">
                <button type="button" class="close" id="closeIcon" data-dismiss="modal" aria-label="Chiudi"><span aria-hidden="true">&times;</span></button>
                <h4 class="modal-title" id="action-info-modal-label"></h4>
              </div>
              <div class="modal-body">
              </div>
              <div class="modal-footer">
                <button type="button" class="btn btn-success" id="refresh-page-button">
                  <span class="fa fa-refresh fa-fw" aria-hidden="true"></span>
                  Aggiorna la pagina
                </button>
                <button type="button" class="btn btn-warning" id="report-error-button">
                  <span class="fa fa-bug fa-fw" aria-hidden="true"></span>
                  Segnala errore
                </button>
                <button type="button" class="btn btn-default" data-dismiss="modal">Chiudi</button>
              </div>
            </div>
          </div>
        </div>
    
        <!-- Bootstrap core JavaScript
        ================================================== -->
        <!-- Placed at the end of the document so the pages load faster -->
        <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
    
        <!-- DataTables JSzip v2.5.0 -->
        <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jszip/2.5.0/jszip.min.js"></script>
    
        <!-- Datatables Core JS v1.10.16 -->
        <script type="text/javascript" src="https://cdn.datatables.net/1.10.16/js/jquery.dataTables.min.js"></script>
    
        <!-- Bootstrap DataTables Core JS v1.10.16 -->
        <script type="text/javascript" src="https://cdn.datatables.net/1.10.16/js/dataTables.bootstrap.min.js"></script>
    
        <!-- DataTables Buttons JS v1.5.1 -->
        <script type="text/javascript" src="https://cdn.datatables.net/buttons/1.5.1/js/dataTables.buttons.min.js"></script>
    
        <!-- DataTables Bootstrap Buttons JS v1.5.1 -->
        <script type="text/javascript" src="https://cdn.datatables.net/buttons/1.5.1/js/buttons.bootstrap.min.js"></script>
    
        <!-- DataTables HTML5 Buttons JS v1.5.1 -->
        <script type="text/javascript" src="https://cdn.datatables.net/buttons/1.5.1/js/buttons.html5.min.js"></script>
    
        <!-- DataTables Column Visbility Buttons JS v1.5.1 -->
        <script type="text/javascript" src="https://cdn.datatables.net/buttons/1.5.1/js/buttons.colVis.min.js"></script>
    
        <!-- Datatables fixedColumns JS v3.2.4 -->
        <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/fixedcolumns/3.2.4/css/fixedColumns.bootstrap.min.css"/>
        <script src="https://cdn.datatables.net/fixedcolumns/3.2.4/js/dataTables.fixedColumns.min.js"></script>
      </body>
    </html>
    div.dt-buttons {
        width: auto !important;
      }
    

    【讨论】:

    • 我不确定我是否理解。我不希望 col-sm-4 左对齐,事实上这就是问题所在。我希望它在较小的视图中居中。即使将 col-xs-12 添加到按钮的包装器也无济于事。
    • 能否提供一个链接让我查看?
    • 我已经用一个 jsfiddle 示例的链接更新了我的问题。
    • 我已经更新了我的答案,现在应该对你有用。
    猜你喜欢
    • 2013-10-14
    • 1970-01-01
    • 2019-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-07
    • 1970-01-01
    相关资源
    最近更新 更多