jquery - html表格的对齐问题

标签 jquery html css

我正在开发 jQuery 应用程序。在使用具有固定标题和垂直滚动条的表格时,我遇到了列边框对齐问题。 当行数较多且垂直滚动条可见时,列边框会稍微未对齐以适合滚动条。 请建议如何修复它。我正在浏览很多链接,但没有运气。 请找到演示 here

代码:

    <div class="pane pane--table1">
        <div class="pane-hScroll">
            <table>
                <thead>
                <th style="text-align: center;">Header1</th>
                <th style="text-align: center;">Header2</th>
                <th style="text-align: center;">Header3</th>

                </thead>
            </table>
            <div class="pane-vScroll">
                <table>
                    <tbody>
                    <tr>
                        <td style="text-align: center;">Dataaaa</td>
                        <td style="text-align: center;">Data</td>
                        <td style="text-align: center;">Data</td>
                     </tr>
                        <tr>
                        <td style="text-align: center;">Dataaaa</td>
                        <td style="text-align: center;">Data</td>
                        <td style="text-align: center;">Data</td>
                     </tr>
                        <tr>
                        <td style="text-align: center;">Dataaaa</td>
                        <td style="text-align: center;">Data</td>
                        <td style="text-align: center;">Data</td>
                     </tr>
                        <tr>
                        <td style="text-align: center;">Dataaaa</td>
                        <td style="text-align: center;">Data</td>
                        <td style="text-align: center;">Data</td>
                     </tr>   <tr>
                        <td style="text-align: center;">Dataaaa</td>
                        <td style="text-align: center;">Data</td>
                        <td style="text-align: center;">Data</td>
                     </tr> <tr>
                        <td style="text-align: center;">Dataaaa</td>
                        <td style="text-align: center;">Data</td>
                        <td style="text-align: center;">Data</td>
                     </tr>
                        <tr>
                        <td style="text-align: center;">Dataaaa</td>
                        <td style="text-align: center;">Data</td>
                        <td style="text-align: center;">Data</td>
                     </tr>
                        <tr>
                        <td style="text-align: center;">Dataaaa</td>
                        <td style="text-align: center;">Data</td>
                        <td style="text-align: center;">Data</td>
                     </tr>
                        <tr>
                        <td style="text-align: center;">Dataaaa</td>
                        <td style="text-align: center;">Data</td>
                        <td style="text-align: center;">Data</td>
                     </tr>   <tr>
                        <td style="text-align: center;">Dataaaa</td>
                        <td style="text-align: center;">Data</td>
                        <td style="text-align: center;">Data</td>
                     </tr>

                    </tbody></table></div></div> 
</div>

CSS 代码:

  * {
        box-sizing: border-box;
    }
    body {
        font: 14px/1 Arial, sans-serif;
    }
    table {
        border-collapse: collapse;
        background: white;
        table-layout: fixed;
        width: 100%;
    }
    th, td {
        padding: 8px 16px;
        border: 1px solid #ddd;
        width: 160px;
        overflow: hidden;
        white-space: nowrap;
    }
    .pane {
        background: #eee;
    }
    .pane-hScroll {
        overflow: auto;
    }
    .pane-vScroll {
        overflow-y: auto;
        overflow-x: hidden;
        height: 30%;
    }

    table { table-layout:fixed;width: 100% }
    td {
        white-space: -o-pre-wrap;
        word-wrap: break-word;
        white-space: pre-wrap;
        white-space: -moz-pre-wrap;
        white-space: -pre-wrap;

    }

即使垂直滚动打开,如何修复和显示边框而不出现任何对齐问题。任何建议都会有帮助。

最佳答案

表格对齐方式发生变化,因为表格的滚动条宽度小于固定表格。一种方法是找到滚动表格的宽度并将该宽度设置为固定表格

if( $('.pane-vScroll').prop('scrollHeight') >$('.pane-vScroll').height()){
   var width = $('.pane-vScroll table').width();  
   $('.pane-hScroll table:first').width( width);
} 

function setTableWidth(){
    if( $('.pane-vScroll').prop('scrollHeight') >$('.pane-vScroll').height()){
       var width = $('.pane-vScroll table').width();  
       $('.pane-hScroll table:first').width( width);
    } 

}
$(function(){
  setTableWidth();
  $(window).resize(function () {
    setTableWidth();
  })

})
   * {
        box-sizing: border-box;
    }
    body {
        font: 14px/1 Arial, sans-serif;
    }
    table {
        border-collapse: collapse;
        background: white;
        table-layout: fixed;
        width: 100%;
    }
    th, td {
        padding: 8px 16px;
        border: 1px solid #ddd;
        width: 160px;
        overflow: hidden;
        white-space: nowrap;
    }
    .pane {
        background: #eee;
    }
    .pane-hScroll {
        overflow: auto;
    }
    .pane-vScroll {
        overflow-y: auto;
        overflow-x: hidden;
        height: 150px;
    }
 
    table { table-layout:fixed;width: 100% }
    td {
        white-space: -o-pre-wrap;
        word-wrap: break-word;
        white-space: pre-wrap;
        white-space: -moz-pre-wrap;
        white-space: -pre-wrap;

    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="pane pane--table1">
        <div class="pane-hScroll">
            <table>
                <thead>
                <th style="text-align: center;">Header1</th>
                <th style="text-align: center;">Header2</th>
                <th style="text-align: center;">Header3</th>
      
                </thead>
            </table>
            <div class="pane-vScroll">
                <table>
                    <tbody>
                    <tr>
                        <td style="text-align: center;">Dataaaa</td>
                        <td style="text-align: center;">Data</td>
                        <td style="text-align: center;">Data</td>
                     </tr>
                        <tr>
                        <td style="text-align: center;">Dataaaa</td>
                        <td style="text-align: center;">Data</td>
                        <td style="text-align: center;">Data</td>
                     </tr>
                        <tr>
                        <td style="text-align: center;">Dataaaa</td>
                        <td style="text-align: center;">Data</td>
                        <td style="text-align: center;">Data</td>
                     </tr>
                        <tr>
                        <td style="text-align: center;">Dataaaa</td>
                        <td style="text-align: center;">Data</td>
                        <td style="text-align: center;">Data</td>
                     </tr>   <tr>
                        <td style="text-align: center;">Dataaaa</td>
                        <td style="text-align: center;">Data</td>
                        <td style="text-align: center;">Data</td>
                     </tr> <tr>
                        <td style="text-align: center;">Dataaaa</td>
                        <td style="text-align: center;">Data</td>
                        <td style="text-align: center;">Data</td>
                     </tr>
                        <tr>
                        <td style="text-align: center;">Dataaaa</td>
                        <td style="text-align: center;">Data</td>
                        <td style="text-align: center;">Data</td>
                     </tr>
                        <tr>
                        <td style="text-align: center;">Dataaaa</td>
                        <td style="text-align: center;">Data</td>
                        <td style="text-align: center;">Data</td>
                     </tr>
                        <tr>
                        <td style="text-align: center;">Dataaaa</td>
                        <td style="text-align: center;">Data</td>
                        <td style="text-align: center;">Data</td>
                     </tr>   <tr>
                        <td style="text-align: center;">Dataaaa</td>
                        <td style="text-align: center;">Data</td>
                        <td style="text-align: center;">Data</td>
                     </tr>
                  
                    </tbody></table></div></div> 
</div>

https://jsfiddle.net/ffr991oe/1/

关于jquery - html表格的对齐问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43986894/

相关文章:

html - 将 "SHARE"按钮放置在图像的垂直和水平中心(悬停触发时)

javascript - 点之间的空间和从上到下的动画

python - Mechanize 刮削

javascript - AngularJS选择通过标签记录指令的DOM元素

html - 使用带类的第 nth-child 匹配元素

javascript - 如何通过css创建图像框架?

javascript - 如何动态地将CSS媒体类型添加到页面

javascript - 为什么 Google Chrome 的脚本调试器不让我设置断点?

jQuery 动画在服务器端的 Chrome 中速度较慢且滞后

jquery - 自动完成-devbridge : update params on change from other autocomplete field