2

テーブルにこの JQuery コードを使用しています。

    $(document).ready(function () {

    var tableBottom = $(window).height() - $('#compare-table').height();

    $(window).scroll(function (event) {
        var y = $(this).scrollTop();
        var tableTop = $('#compare-table').offset().top;

        if (y >= tableTop && y <= tableBottom) {
            $('#compare-table-controller').addClass('fixed');
            $('#compare-table-controller').css('margin-top', '-' + tableTop + 'px');
        } else {
            $('#compare-table-controller').removeClass('fixed');
            $('#compare-table-controller').css('margin-top', '0px');
        }
    });


    var compareTableHeight = $('#compare-table > table').height() + 1;
    var compareTableTotalColumn = $('#compare-table > table').width() / 195;
    $('#compare-table').css('height', compareTableHeight);

    alert($('#compare-table > table').width());
});

何らかの理由で、alert() は chrome と Firefox で異なる値を返します。Chrome 28.0.1500.71 と firefox 22.0 を使用しています。正しい値は 1170px です。

その結果、Firefox では 6 列すべてが表示されます。4 のみを表示し、他の 2 を非表示にする必要があります。

表示されたdivのCSSは.

#compare-table-h {
        width: 780px;
        overflow: hidden;
        position:fixed;
        height: 213px;
        z-index: 999;
    }
    #compare-table {
        width: 780px;
        overflow: hidden;
        position:relative;
        margin-top: 213px;
    }

そして、div内のテーブルは

<table id="compare-table-head" class="table font-size-12 compare-table table-striped" style="position:absolute; border-bottom:1px solid #ddd; width: 1170px;">

最初のテーブルは正常に動作しますが、2 番目のテーブルは動作しません

4

1 に答える 1

2

テーブルに割り当てられたインライン スタイルと CSS プロパティの間の混乱が原因で問題が発生したようです。( http://jsfiddle.net/XV3Vz/19/ )

インライン スタイルは次のとおりです。

 style="position:absolute; border-bottom:1px solid #ddd; width: 1170px"

親要素の CSS スタイルは次のとおりです。

#compare-table {
    width: 780px;
    overflow: hidden;
    position:relative;
    margin-top: 213px;
}

アップデート:

もう少し調べてみると、問題は 内でテーブルを使用することにあるdivことがわかりました。

を使用している理由が本当にわかりませんが、問題はそれを取り除き、スタイルをラッピング要素にposition:absolute追加することで修正できます。divdisplay:table

.compare-table-in-div {
    border-bottom:1px solid #ddd;
    width: 1170px !important;
    background: #ccffee;
   /*deleted position absolute */
}
#compare-table {
    width: 780px;
    position:relative;
    background: #ccddff;
    height: 50px;
    display:table;  /*ADDED */
}

実際の例: http://jsfiddle.net/XV3Vz/25/

于 2013-07-17T13:32:28.937 に答える