テーブルはいつ使用されますか? 最近では、Web ページの全体的なレイアウトにテーブルが使用されることはほとんどなくなりました。ただし、フォーム入力やデータの表示など、特定のデザインに直面した場合は、テーブルが最も適切な選択肢となる場合があります。 表の最も直感的な印象は、複数のセルが整然と配置された要素であり、行と列が明確にわかるということです。これは Excel と関連付けることができます。データ処理と統計における Excel の位置付けから、Web ページ上の表の重要性を理解できます。 簡単に言えば、複数の要素が行と列に配置されていることを直感的に把握できると、テーブルを使用すると作業がはるかに簡単になります。たとえば、caniuse.com では次の表が使用されています。 テーブルレイアウト計算 テーブルの使用は簡単ですが、テーブル内の各グリッドの最終状態が希望どおりにならない場合があります。たとえば、一部のセルに改行が含まれている場合、改行のせいで表全体が非常に見苦しくなります。特に、データ表示に使用されるテーブルの場合、幅の割り当ては非常に重要なトピックです。各列に表示される可能性のあるデータに基づいて、テーブルの合計幅を慎重に計算する必要がある場合があります。 これは、テーブルがレイアウトに独自の特性を持っているためです。テーブルは特定の原則に従い、計算を通じて実際のレイアウトを決定します。次に、この記事では実際のテーブル テストの例を使用して、テーブルが独自のレイアウトを計算する方法を説明します。 この記事では、テーブルを使用する最も一般的な方法のみを取り上げており、すべての状況を網羅しているわけではありません。ブラウザによってテーブルの概念の解釈が異なりますが、レイアウトの計算は基本的に同じです (違いがある場合は別途説明します)。 以下で使用されるテスト テーブルはすべて次のようになります (内容は Zero Tracks から取得されます)。 同時に、テーブルには border-collapse:collapse; と border-spacing:0; が設定されます。これは、テーブルを適用する最も一般的な方法でもあります。Normalize.css はこの部分を初期化定義として使用します。 <table> 要素で定義された table-layout CSS プロパティは、レイアウトを計算するときにテーブルで使用されるアルゴリズムを決定します。自動と固定の 2 つの値があります。通常はデフォルト値の auto が使用されます。 これら 2 つのアルゴリズムの違いは、テーブルの幅のレイアウトがテーブル内のデータ コンテンツに関連しているかどうかにあります。この記事では、これら 2 種類の値に対するテーブルのレイアウト計算の原則について説明します。 自動テーブルレイアウトの特徴は、テーブルの幅レイアウトがテーブル内のすべてのデータ コンテンツに関係していることです。最終的な幅レイアウトを決定する前に、すべてのテーブル コンテンツを取得し、それらを一緒に表示する必要があります。 ポイントは「コンテンツの関連性」にあるようです。テーブルが固定幅 (ここでは 500 ピクセル) を定義し、すべてのセルが幅を定義していない場合 (CSS で定義された幅のみについて説明します) はどうなりますか?結果を見てみましょう: 上記の表では、空白部分はスペースで埋められています。比較すると、次の点がわかります。 列 2 と 3 の幅は同じです。 各セルには幅が定義されていないため、幅のレイアウトは特定のコンテンツ データ (テキスト情報) によって完全に決定されます。このような結果をどのように説明すればよいでしょうか?まず、直感的に次のロジックを推測できます。 ステップ 1: 各列から、テキスト コンテンツが最も多い列 (改行なしの条件で、テキストが占める幅が最も広い列) を「代表」として選択します。 上記のロジックを参考に、先ほどの表をもう一度見てみましょう。何となく意味が分かりませんか?先ほど、幅の比率は 2:1 のようだと述べていましたが、これはどのくらいでしょうか?パディングなしのバージョンを見てみましょう。 フロントエンド デバッグ ツールを使用して、上のセルの幅を詳しく見てみましょう。この表は前の表とは異なり、比率が 2:1 に非常に近いことがわかります (境界線があるため、このわずかな差がありますが、境界線がないと列を区別できません)。 幅の比率を分析すると、コンテンツの幅、パディング、境界線がすべて考慮されていることがわかります。これは、測定されるのは文字数ではなく、文字が折り返さずに占めることができる幅であることも示しています (ここでの 2:1 は、中国語の文字の幅が等しいという事実に由来します)。パディングを使用するのは、もちろん、テーブルをより美しくするためだけです :)。 幅の定義があると何が起こりますか?幅が定義されたセルがいくつかある表を次に示します。 対応する HTML コードは次のとおりです。 XML/HTML コードコンテンツをクリップボードにコピー
上記の表には以下の点が記載されています。 5px に設定されたセルの実際の幅は 13px で、これはちょうど 1 つの漢字の幅です。同じ列にある漢字のセルは、最小セル幅の形式でテキストを配置します (したがって、改行されます)。 このことから推論されるのは、幅定義のある列と幅定義のない列の両方がある場合です。 セルの定義された幅が、そのコンテンツの最小配置幅 (折り返しのない配置ではなく、セル内にできるだけ多くの行を配置する場合にセルに必要な幅) よりも小さい場合、セルが配置されている列には、コンテンツが最小配置で表示されます。 幅の定義がない最前列はケース 1 とみなすことができます。ここでは、幅の定義がある列と、定義がない列があり、これはケース 2 とみなすことができます。すべての列の幅が定義されているケース 3 を次に示します。 対応する HTML コード: XML/HTML コードコンテンツをクリップボードにコピー
上記の表では、幅によって値を明確に定義できるようにパディングが削除され、3 つの列の幅の比率が 2:1:1 になっています。ここでは別の条件があり、セル内のコンテンツの幅が定義された幅の値を超えないことです。テストの結果、IE7 以下では、コンテンツが定義された幅を超えた場合に他のブラウザとは異なる動作をすることがわかりました。 この表の例から、すべての列に幅定義があり、これらの幅定義の値の合計が表の幅よりも小さい場合、表は幅定義値に対応する幅を割り当てた後、幅の比率に従って残りの幅を割り当て続けることがわかります。 上記は、自動テーブルレイアウトが使用され、テーブル自体が固定幅を定義している 3 つの状況の分析です。テーブル自体に幅を定義しない場合は、状況はさらに増え、テーブルの包含ブロックに関係します(詳細)。今後、適切な機会があれば、再度取り上げます(いわゆる記事の長さには限りがあります...)。 固定テーブルレイアウトの特徴は、テーブルの幅レイアウトがテーブル内のデータ内容に依存しないことです。テーブルの最初の行の情報を受け取るだけで、最終的な幅レイアウトを決定し、表示を開始できます。 固定テーブルレイアウトは「コンテンツに依存せず」、「最初の行」を強調します。次の表の例をご覧ください。 対応する HTML コード: XML/HTML コードコンテンツをクリップボードにコピー
固定テーブルレイアウトのロジックははるかに単純で、次のように表現されます。 最初の行の情報のみを取得し、最初の行以降のすべてのセルの内容と幅の定義は無視します。 また、固定テーブル レイアウトを使用する場合は、テーブル要素の幅を定義する必要があることにも注意してください。幅が定義されていない場合 (つまり、デフォルト値の auto)、ブラウザーは代わりに自動テーブル レイアウトを使用します。 実際、<colgroup>、<thead>、<tfoot>、<caption> など、テーブルに関連する他の要素もありますが、最も一般的な使用法では必要ありません。実際、それらはテーブルのレイアウト計算でも考慮されます。これにセル結合のケースを加えると、テーブルレイアウトの計算がいかに複雑になるかが想像できるでしょう。 W3C のドキュメントには、テーブルレイアウトの計算 (自動テーブルレイアウト) はまだ仕様化されていないと記載されています。 W3C によるテーブルレイアウト計算の説明については、「テーブル幅アルゴリズム」を参照してください。 実際のところ、テーブルレイアウトの計算原理についてこのような詳細な推論を行うことはあまり現実的ではありません。ただ、詳細を検討する必要があるときに、この情報を参考にしておくと便利ですが、そのような機会はめったにありません。 ただし、この記事の内容に基づいて、より意味のある結論を導き出すことができます。テーブルが幅を定義し、すべてのセルが幅を定義していない場合、自動レイアウト テーブルはすべてのデータが折り返されないように最善を尽くします。折り返しが外観に影響する状況に遭遇した場合は、幅の割り当てを自分でやり直すのではなく、データを合理化するか、余白を減らす必要があることを意味します。 今回、こういった実際の測定や推論を行う際には、体系的かつ網羅的に一気に提示するよりも、具体的な状況に応じて詳しく説明した方が分かりやすいと感じています。語学の訓練と捉えても良いのでしょうか? |
前面に書かれたMySQL をアップグレードする方法には、インプレース アップグレードと論理アップグレ...
1. MySQL Community Server 5.6.35をダウンロードするダウンロードアドレ...
目次1. NFS の概要2. NFS構築1. NFSサーバーの構築2. NFSクライアントの構築3....
序文var は ES5 における変数宣言方法です。var で変数を宣言するとループ変数がグローバル変...
序文ターミナルを使用してデータベースまたはテーブルを作成するたびに、文字セットが latin1 であ...
HTML では、色は 2 つの方法で表現されます。 1 つは、青の場合は blue のように色の名前...
目次インストール環境の説明MySQLデータベースサービスをインストールするメインライブラリを構成する...
この機能を実装するにあたり、本家ブロガーさんから拝借した方法では色の切り替えが実現できず、長い間考え...
JS はホバー ドロップダウン メニューを実装します。これは、フロントエンドの面接で遭遇するシナリ...
カーソルの作成まず、MySql でデータ テーブルを作成します。 存在しない場合はテーブルを作成 `...
1. カーディナリティとは何ですか?カーディナリティとは、MySQL テーブルの列内の異なる値の数を...
導入振り返ってみると、4年前、私がMySQLのインデックスについて学んでいたとき、先生はインデックス...
1. まずcenterosに付属のJDKをアンインストールします rpm-qa|grepopenjd...
目次シンプルなSpringbootプロジェクトを作成する1. pom.xmlでSpring Boot...
1. MYSQLインデックスインデックス: MySQL がデータを効率的に取得するのに役立つデータ構...