前回テーブルソートを行ったので、今回はテーブルについて少し理解できましたが、テーブルがとても複雑であることがわかりました。
この効果が何と呼ばれるかはまだわかりません。最初は列の位置決めをしたいと思っていましたが、まだその必要はありません。時間があるときに行います。
プログラム原理
最初の要件は、スクロール時に時計のヘッド部分を常にヘッドに固定できることです。達成するための重要なことは、tr を配置できるようにすることです。
最初に思い浮かぶのは、tr に相対値を設定し、ie6/7 で次のコードをテストすることです:
私が使用した最後の方法は、新しいテーブルを作成し、その新しいテーブルにソース tr のクローンを作成し、効果を達成するために新しいテーブルを配置することでした。
この方法を使用するには 2 つの重要な点があります。まず、可能な限り高度なシミュレーションで TR を作成する必要があります。もう 1 つは、TR を正確に配置する必要があります。これらについては、次のプログラム手順を参照してください。
手順の説明
【クローンテーブル】
要素のクローンを作成するには、cloneNode を使用します。これには、クローンに子ノードが含まれるかどうかを示す bool パラメーターがあります。
プログラムの最初のステップは、元のテーブルのクローンを作成することです:
ie の cloneNode パラメータはオプション (デフォルトは false) ですが、ff では必須であることに注意してください。使用する場合はパラメータを記述することをお勧めします。
また、id 属性も複製されることにも注意してください。つまり、複製後に同じ ID を持つ 2 つの要素が存在することになり (clone オブジェクトが設定されている場合)、プログラムによって他の問題が発生しやすくなります。 table id 属性は空のままにします。
追記: クラスを使用してスタイルをテーブルにバインドしてください。ID を使用すると、新しいテーブルはスタイルを取得できません。
クローンを作成してからスタイルを設定します:
一般に、offsetWidth は幅パディングボーダーの結果ですが、table は特殊です:
【克隆tr】
table有一个rows集合,包括了table的所有tr(包括thead和tfoot里面的)。
程序的Clone方法会根据其参数克隆对应索引的tr:
由于tr可能是包含在thead这些中,所以还要判断一下:
然后再插入到新table中:
プログラムではクローンされた tr の変更が許可されているため、挿入されているかどうかを判断し、そうでない場合は直接 appendChild を実行し、そうでない場合は元の tr を replaceChild で置き換えます。
[テーブルの境界線とフレームの属性]
テーブルのborder属性は枠幅の指定に使用され、テーブル固有のframe属性はテーブルの周囲の枠線の表示方法の設定または取得に使用されます。
w3c ラベル のフレーム部分は、フレームが次の値を持つことができることを示します。
void: これはデフォルト値です。 : 上側のみ。
下: 下側のみ。
vsides: 左側のみ。
rhs: 右側のみ。
box: 4 つの辺すべて。
これらの値は、表示する境界線を指定します。なお、デフォルト値は void ですが、設定しない場合は実際には null 値となり、4 つの枠線がすべて表示されます。
また、フレームはスタイルによって設定された境界線には影響しません。次のコードをテストします: