折りたたまれたテーブル行要素のバグ

折りたたまれたテーブル行要素のバグ
例を見てみましょう。コードは次の通り非常にシンプルです。

コードをコピー
コードは次のとおりです。

<表の境界線="1">
<tr>
<td>dd</td>
<td>dds</td>
</tr>
<tr>
<td>ss</td>
<td>さっ</td>
</tr>
</テーブル>

したがって、2 行 2 列のテーブルはどのブラウザでも正しく表示されます。ただし、次の CSS を追加すると状況は変わります。

コードをコピー
コードは次のとおりです。

<スタイル>
tr{位置: 相対;}
</スタイル>

問題があるように見えますが、心配しないでください。実際、現時点では表面からは問題は見えず、ページレイアウトが乱れることもありません。
重なり合うものは一切表示されません。

決してあなたを騙すつもりはありませんでした。表面的には問題はありませんが、IE 開発ツールを使用してレイアウトが何をもたらすかを見てみましょう。
ccccccc
2 つの画像の違いと類似点に注目してください。左側のビューの青いボックスに注目してください。このツールは、Web ページ上の要素をクリックしたときにその要素の周囲に線を描くために使用されます。
しかし、2 つの異なる要素を 2 回クリックしたことに注目してください。ワイヤーフレームは同じ場所です。ああ、これは間違いです。
はい、つまり、2 つの tr は重なっていますが、奇妙なことに、tr 内の要素は完全に正しくレンダリングされ、外観スタイルには影響しません。これで安全だと思わないでください。この時点で、隠れた危険が潜んでいます。
実際にこの問題に遭遇したのは、シミュレートされたウィンドウを作成していたときです。2 行のテーブルを使用しました。最初の行はドラッグ可能なウィンドウのタイトル バーで、2 行目はメイン ビューでした。しかし、後でテーブルの 2 行目が最初の行を覆っていることに気付きました。外見上は正常に見えましたが、タイトル バーはブロックされているためクリックもドラッグもできませんでした。
この問題を解決するには、trの位置を削除します
3. つまり:
CSS を書くときに reset を使用してリセットするかどうかはわかりません。とにかく、私はこのようにしています。私の NetBeans の CSS テンプレートには reset があります。各 CSS ファイルの先頭に次のようなセクションがあります。

コードをコピー
コードは次のとおりです。

/*
TODO このサンプルスタイルをカスタマイズする
構文の推奨事項 http://www.w3.org/TR/REC-CSS2/
*/
html、body、div、span、アプレット、オブジェクト、iframe、
h1、h2、h3、h4、h5、h6、p、blockquote、pre、
a、略語、頭字語、アドレス、big、cite、コード、
del、dfn、em、フォント、img、ins、kbd、q、s、samp、
小さい、ストライク、強い、サブ、sup、tt、var、
b、u、i、センター、
dl、dt、dd、ol、ul、li、
フィールドセット、フォーム、ラベル、凡例、
表、キャプション、tbody、tfoot、thead、tr、th、td {
マージン: 0;
パディング: 0;
境界線: 0;
アウトライン: 0;
フォントサイズ: 12px;
垂直位置合わせ: ベースライン;
背景: 透明;

}
体 {
行の高さ: 1;
}
オル、ウル {
リストスタイル: なし;
}
引用ブロック、q {
引用符: なし;
}
ブロック引用:前、ブロック引用:後、
q:前、q:後 {
内容: なし;
}
/* フォーカスを取得した時の要素のスタイル! */
:集中 {
アウトライン: 0;
}
/* 特別なテキストスタイル! */
インス {
テキスト装飾: なし;
}
デル{
テキスト装飾: 取り消し線;
}
/* 細線テーブルスタイル */
テーブル {
境界線の折りたたみ: 折りたたみ;
境界線の間隔: 0;
}

要素を絶対位置に配置するには、まずその親要素を配置する必要があることは誰もが知っています。たとえば、子要素が絶対位置になるように position:relative を設定し、次に上と左の位置を設定します。

そこで、これは面倒すぎるので、すべての要素に対して position:relative を設定してから、絶対配置のために position:absolute を変更したほうがよいと考えました。この方法なら、1 つずつ設定する必要がなく、すべての要素を直接絶対配置できます。

ここで、この記事で言及されている問題が発生します。すべての要素に position:relative を設定したため、テーブルに問題が発生します。したがって、このアプローチは推奨されず、他のレンダリングの問題も発生します。この設定は使用できないというプロンプトがいくつかの場所で表示されたのを覚えています。

この記事はレイアウトに関するものですが、この問題はレイアウトの問題ではなく、IE のバグです。レイアウトについては、次回レイアウトの問題に遭遇したときにお話しします。ちなみに、これは本当に奇妙なバグです。

<<:  Nginx で同じドメイン名を持つ複数のプロジェクトを構成する方法

>>:  WeChatミニプログラムのすべてのページがログインされていることを確認する方法

推薦する

Win7 64 ビット版に MySQL 5.7 をダウンロードしてインストールする際によくある問題の概要

1. 公式ウェブサイトからMySQLをダウンロードします。 これが私たちが探しているものです、win...

html2canvasで画像が正常にキャプチャできない時の解決方法

質問まず、私が遭遇した問題についてお話しします。まず、そういった需要があるわけです。フロントエンドは...

Linux で Docker を使用して MySQL をインストールする手順

テスターとして、学習プロセス中に Linux でソフトウェアをインストールする必要が頻繁にある場合が...

type="file" の入力ボックスのスタイル変更の概要

入力タイプ「file」とは何ですか?これが何なのかは説明する必要はないと思います。誰もが知っているこ...

MySQL 全文あいまい検索 MATCH AGAINST メソッドの例

MySQL 4.x 以降では、全文検索 MATCH ... AGAINST モード (大文字と小文字...

Dockerfile における ENV 命令の具体的な使用法の詳細な説明

1. Dockerfile 内の ENV 命令は、イメージの環境変数を定義するために使用されます。次...

docker CMD/ENTRYPOINT が sh スクリプトを実行する問題の解決策: not found/run.sh:

Dockerfile の設定に問題はありませんが、ENTRYPOINT コマンドを実行するとエラー...

JSはタイムラインの自動再生を実現する

最近、次のような効果を実装しました。再生ボタンをクリックするとタイムラインの再生が開始され、一時停止...

MySQL で行を列に変換したり、列を行に変換したりする詳細な例

mysql 行から列へ、列から行へ難しい文章ではないので、詳しく説明はしません。文章を読むときは、一...

ウェブサイトをIE6、7、8、9の古いバージョンに対応させるための3つのソリューション

Microsoft は後からブラウザの研究開発に力を入れてきましたが、実際のところ、最新の IE ブ...

Oracle の MySQL バージョンでユーザー Scott のテーブル ステートメントを作成する例

概要: Oracle scottユーザーには4つのテーブルがあり、実験やデータ検証に便利です。現在は...

moment.jsの時間と日付の処理の詳細な説明

月曜日から日曜日の時間形式の変換(Y --- 年 M --- 月 D--- 日) : : : : :...

MySQLパスワード変更例の詳細な説明

MySQLパスワード変更例の詳細な説明長い間 MySQL を使用していませんでした。今日、MySQL...

MySQL インデックスの最適化: ページング探索の詳細な紹介

目次MySQL インデックス最適化ページングの調査ケース1ケース2 MySQL インデックス最適化ペ...

Vue カプセル化に基づくプルダウン更新およびプルアップ読み込みコンポーネント

VueとネイティブJavaScriptカプセル化に基づいて、プルダウンリフレッシュとプルアップロード...