RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1007681
Accepted
Квартиры Петербург
Квартиры Петербург
Asked:2020-07-29 06:18:29 +0000 UTC2020-07-29 06:18:29 +0000 UTC 2020-07-29 06:18:29 +0000 UTC

CSS:为表格标题固定位置 - 对齐单元格高度

  • 772

我想在滚动时修复 html-table 的标题,以便它始终对用户可见。我正在尝试使用在网络上找到的 js 脚本来执行此操作。

但是我无法解决所有高度对齐的问题。它们按内容排序。事实证明,在屏幕截图中。行中单元格的高度不同(为了清楚起见,我特意用颜色突出显示了它)。

你能告诉我如何平衡所有的高度吗?平庸的东西,比如身高:汽车;或高度:100%;没有帮助。

这里还需要写一些东西:

'height': $(th).outerHeight(true) + 'px'

告诉我具体是什么?谢谢你。

在此处输入图像描述

这是html:

    <table id="table-flats" class="fixtable">
 <tr>

 <th><span><a name="flats"></a><code class="html"><br />Кол-во<br /> комнат</code></span></th>
 <th data-th=", Характеристики"><code>Р-н</code></th>
 <th><code class="html"> Адрес</code></th>
 <th><code class="html">Метро</code></th>
 <th><code class="html">Эт</code></th>
 <th><code class="html">S <br /><br />о<br />б<br />щ</code></th>
 <th><code class="html">S <br /><br />к<br />о<br />м<br />н</code></th>
 <th><code class="html">S<br /><br />к<br />у<br />х</code></th>
 <th><code class="html">Т<br />е<br />л</code></th>
  <th><code class="html">М<br />е<br />б</code></th>
 <th><code class="html">Х<br />о<br />л</code></th>
  <th><code class="html">С<br />т<br />М<br />&nbsp;</code></th>
 <th><code class="html"><strong>Цена</strong></code></th>
 <th><code class="html">Срок</code></th>
 <th><code class="html">Примечания</code></th>
 </tr>

CSS:

.fixtable-fixed {
    position: fixed;
    top: 0;
    z-index: 101;
    background-color: #FCF8E4;
    border-bottom: 1px solid #ddd;
}

这是覆盖滚动样式的js脚本:

function FixTable(table) {
    var inst = this;
    this.table  = table;

    $('tr > th',$(this.table)).each(function(index) {
        var div_fixed = $('<div/>').addClass('fixtable-fixed');
        var div_relat = $('<div/>').addClass('fixtable-relative');
        div_fixed.html($(this).html());
        div_relat.html($(this).html());
        $(this).html('').append(div_fixed).append(div_relat);
        $(div_fixed).hide();
    });

    this.StyleColumns();
    this.FixColumns();

    $(window).scroll(function(){
        inst.FixColumns()
    }).resize(function(){
        inst.StyleColumns()
    });
}

FixTable.prototype.StyleColumns = function() {
    var inst = this;
    $('tr > th', $(this.table)).each(function(){
        var div_relat = $('div.fixtable-relative', $(this));
        var th = $(div_relat).parent('th');
        $('div.fixtable-fixed', $(this)).css({
            'width': $(th).outerWidth(true) - parseInt($(th).css('border-left-width')) + 'px',
            'height': $(th).outerHeight(true) + 'px',
            'left': $(div_relat).offset().left - parseInt($(th).css('padding-left')) + 'px',
            'padding-top': $(div_relat).offset().top - $(inst.table).offset().top + 'px',
            'padding-left': $(th).css('padding-left'),
            'padding-right': $(th).css('padding-right')
        });
    });
}

FixTable.prototype.FixColumns = function() {
    var inst = this;
    var show = false;
    var s_top = $(window).scrollTop();
    var h_top = $(inst.table).offset().top;

    if (s_top < (h_top + $(inst.table).height() - $(inst.table).find('.fixtable-fixed').outerHeight()) && s_top > h_top) {
        show = true;
    }

    $('tr > th > div.fixtable-fixed', $(this.table)).each(function(){
        show ? $(this).show() : $(this).hide()
    });
}

$(document).ready(function(){
    $('.fixtable').each(function() {
        new FixTable(this);
    });
});

</script>
jquery
  • 2 2 个回答
  • 10 Views

2 个回答

  • Voted
  1. Best Answer
    OPTIMUS PRIME
    2020-07-29T07:43:59Z2020-07-29T07:43:59Z

    您可以使用position: sticky;
    它,但它的支持是马马虎虎 → https://caniuse.com/#search=sticky

    table th {
      position: sticky;
      top: 0;
      background-color: #ddd;
    }
    
    /* Ненужное демо */
    table { counter-reset: num; }
    .num { counter-increment: num; }
    .num td { border: 1px solid #123; }
    .num td::after { content: counter(num); }
    body { height: 1500px; }
    <table>
      <tr>
        <th><span><a name="flats"></a><code class="html"><br>Кол-во<br>комнат</code></span></th>
        <th data-th=", Характеристики"><code>Р-н</code></th>
        <th><code class="html">Адрес</code></th>
        <th><code class="html">Метро</code></th>
        <th><code class="html">Эт</code></th>
        <th><code class="html">S <br><br>о<br>б<br>щ</code></th>
        <th><code class="html">S <br><br>к<br>о<br>м<br>н</code></th>
        <th><code class="html">S<br><br>к<br>у<br>х</code></th>
        <th><code class="html">Т<br>е<br>л</code></th>
        <th><code class="html">М<br>е<br>б</code></th>
        <th><code class="html">Х<br>о<br>л</code></th>
        <th><code class="html">С<br>т<br>М<br>&nbsp;</code></th>
        <th><code class="html"><strong>Цена</strong></code></th>
        <th><code class="html">Срок</code></th>
        <th><code class="html">Примечания</code></th>
      </tr>
      
      <tr class="num"><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
      <tr class="num"><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
      <tr class="num"><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
      <tr class="num"><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
      <tr class="num"><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
      <tr class="num"><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
      <tr class="num"><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
      <tr class="num"><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
      <tr class="num"><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
      <tr class="num"><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
      <tr class="num"><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
      <tr class="num"><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
      <tr class="num"><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
      <tr class="num"><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
      <tr class="num"><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
      <tr class="num"><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
      <tr class="num"><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
      <tr class="num"><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
      <tr class="num"><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
      <tr class="num"><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>
    </table>

    • 1
  2. Инквизитор
    2020-08-02T19:44:56Z2020-08-02T19:44:56Z

    如果您已经进入脚本,那么它更容易:a)扔掉定位nafig。b) 在表格的滚动条上,为tr标题添加样式更改,特别是transform:translateY(...).

    这些方面的东西:

    HTML:

    <div onscroll="forceScroll(this.id);">
        <table>
            <tr id="tHeader"> ...</tr>
            ...
        </table>
    </div>
    

    JS:

    function forceScroll(what) {
        var  shift = document.getElementById(what).scrollTop;
        document.getElementById('tHeader').style.transform = 'translateY(' + shift + 'px';            
    }
    
    • 1

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    根据浏览器窗口的大小调整背景图案的大小

    • 2 个回答
  • Marko Smith

    理解for循环的执行逻辑

    • 1 个回答
  • Marko Smith

    复制动态数组时出错(C++)

    • 1 个回答
  • Marko Smith

    Or and If,elif,else 构造[重复]

    • 1 个回答
  • Marko Smith

    如何构建支持 x64 的 APK

    • 1 个回答
  • Marko Smith

    如何使按钮的输入宽度?

    • 2 个回答
  • Marko Smith

    如何显示对象变量的名称?

    • 3 个回答
  • Marko Smith

    如何循环一个函数?

    • 1 个回答
  • Marko Smith

    LOWORD 宏有什么作用?

    • 2 个回答
  • Marko Smith

    从字符串的开头删除直到并包括一个字符

    • 2 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5