誰もがコンテンツをレイアウトから分離する方法について言及していますが、私はそのアーキテクチャを強く支持しています。
しかし、なぜ、なぜ、ビッグネームはまだレイアウトにテーブルを使用するのでしょうか? (Googleショッピングが最大の犯罪者です)、eBay、Amazon、BaseCamp ...素晴らしいWebサイトは同意しませんか?私は彼らの動機を理解する必要があるので、私は確実に知っています。何かが足りないのですか?テーブルを使用するのは本当に簡単ですか、速いですか、安いですか?
Googleショッピングのコードスニペット:
考えられる理由:
彼らは最も一般的な分母のウェブブラウザを使用しています。言い換えれば、彼らは古いブラウザで合理的にうまくレンダリングしようとしています。これらのサイトは膨大な量のトラフィックを取得するため、ブラウザ市場の0.1%のブラウザでさえ、かなりの数のユーザーになる可能性があります。そのため、これらのユーザーをサポートするために、より現代的なマークアップを避け、それらのブラウザーでまだサポートされているマークアップを使用しています。
コードは古く、更新されていません。これは、コストの問題または物流上の問題が原因である可能性があります。
彼らは望んでいません。彼らのサイトは明らかに現在のコードで十分に入稿されているので、変更する理由はありません。
おそらく、彼らは次の標準であるHTML5がレイアウト用のテーブルq.vの使用を受け入れることを推奨しているわけではありませんが)
テーブルをレイアウトに使用する場合、ユーザーエージェントがテーブルを支援技術に適切に表し、表形式を抽出したいツールに著者の意図を適切に伝えるために、属性role = "presentation"でマークする必要があります。ドキュメントからのデータ。レイアウトにHTMLテーブルを使用する代わりに、主にCSSの配置とCSSテーブルモデルを使用するさまざまな選択肢があります。境界属性をテーブル要素に指定して、レイアウト目的でテーブル要素が使用されていないことを明示的に示すことができます。指定する場合、属性の値は空の文字列または値「1」のいずれかでなければなりません。この属性は、表のセルの周りに境界線を描画する必要があることを示すために、特定のユーザーエージェントによって使用されます。
http://www.w3.org/TR/html5/tabular-data.html#the-table-element
一部のデザインでは、CSSで互いにコンテンツを正しく整列させることは非常に困難です。特に、3列のセットアップと垂直整列が混在しています(例のように)。
テーブルは、ブラウザ、デスクトップ、モバイルなどの間で堅実な互換性を提供します。
もう1つの理由は...メールクライアントです。 Webブラウザからのカットアンドペーストは、メールクライアント、オフィクルクライアントなどで非常に悪いレンダリングになる可能性があります。
table
sは後でレイアウトを変更する必要がある場合、CSSほど柔軟ではありませんが、多くの場合、CSSのtonsを使用してCSSで同じものをレンダリングしようとするよりも少ない労力で済みます。すべてのブラウザが同じまたはほぼ同じになるようにハッキングする(たとえばIE)。
HTMLとCSSを使用してWebサイトを構築するのは簡単なことではありません。クロスブラウザーの互換性、固定/流体レイアウト、要素の浮動性などの問題は、Webデザイナーがよく遭遇する一般的な問題です。レイアウトをそのまま維持し、要素を最適な場所にレンダリングするために、Webデザイナーは多くの場合、テーブルを使用します。さらに、Webサイトのコンテンツに100%の幅を使用し、要素に最適な配置を行うことができます。解像度は無料です。多くの場合、Webデザイナーは固定レイアウトに固執するか、JavaScriptを使用します。
詳細情報: ここをクリック
1996年にコーディングを開始しました。明らかに、コーディングテーブルの専門家になりました。テーブルは、CSSと組み合わせると、迅速かつ簡単で、非常に一貫しています。
CSSのみ、またはテーブルのみを使用してレイアウトを作成するのは、それが正しいことだと思うので、愚かです。
「正しいこと」とは、通常、コーディングスキルレベル、サイトの潜在的な寿命、他のコーダー、ユーザーの技術など、物事の組み合わせです。
プロジェクトに8時間を費やし、CSSのみを使用して開発する場合(レイアウトの場合)またはテーブル時間のみを使用して2時間を使用する場合(レイアウトの場合)7時間かかる場合は、コンテンツまたはSEO。
保守が非常に簡単で、習得が非常に容易で、ほとんどの場合に望みどおりに機能するものを開発するようにしてください。それ以外は時間の無駄です。
テーブルの使用を禁止された場合、おそらくCSSでエミュレートするでしょう。彼らはとても自然です。数年前、私はテーブルレイアウトの悪について説教するすべてを盲目的に受け入れました。今、私はもっと便利なものを選んでいます。さらに、ASP.NETにはNiceテーブルコントロールクラスがあります。ところで、デスクトップアプリ(XAML WPF)でもテーブルレイアウトを使用しています-テーブルを非推奨にするための提案は聞いていません。
これはSOにあります: https://stackoverflow.com/questions/83073/why-not-use-tables-for-layout-in-html
CSSの方が直感的でないため、テーブルレイアウトを使用するとコードの複雑さが軽減される場合があります。
1つの目標を達成するためにCSSルールを追加することはあまりありませんが、このルールには多くの場合副作用があり、修正する必要があります。これは、ルールが私の問題を解決するように設計されておらず、その副作用を使用して問題を解決しているからです。
そして、レイアウトを達成するために多くのマージン/パディング/フロート/オーバーフローのルールを追加しましたが、1ヶ月後、実際にこのレイアウトの目標に合ったルールのセットがわかりませんでした。 1つのレイアウトを実現する標準的な方法はないため、コードを次の人に渡すと、コードを微調整することはできますが、すべての副作用を完全に理解することはできません。
たとえば、最も一般的な「高さの等しい列」レイアウトを考えてみましょう。それを行う方法はたくさんあります。 2層のラッパーが必要 、および より良い解決策は直観に反しない 。 sticky footer が必要な場合はどうですか?ヘッダーとコンテンツをもう一度ラップするだけです!すぐに、設計が厳格で変更不可能であることがわかります。
誤解しないでください、私はテーブルを一番上のコンテナとして見るのが嫌いです。 CSSはときどき表と同じくらいいものになる可能性があることを指摘したいと思います。したがって、1日の終わりにどちらがより効果的かを決定するのは開発者の責任です。