HTML&CSS&JS 互換性ツリー (IE、Firefox、Chrome)

HTML&CSS&JS 互換性ツリー (IE、Firefox、Chrome)
Web デザインにおけるツリーとは何ですか?簡単に言うと、リンクをクリックするとサブディレクトリが展開され、もう一度クリックすると閉じます。これは最も単純なツリーです。実装方法も非常に簡単です。CSS には display プロパティがあり、コンテンツを表示するかどうかを制御できます。次に、JS を使用して CSS のプロパティを制御してこれを実現します。次のコードを参照してください。
<div>最上位ディレクトリ</div>
<div id="メニューリスト">
<div>メニュー 1</div>
<div>メニュー 2</div>
<div>メニュー 3</div>
</div>
これはツリーのプロトタイプです。もちろん、初期状態では CSS 表示属性が追加されます。最もよく使用される表示属性は none と block です。
Noneは表示なしを意味し、blockはブロック型要素のように表示されます。コードを見てみましょう。
<div>最上位ディレクトリ</div>
<div id="メニューリスト" style="display:none">
<div>メニュー 1</div>
<div>メニュー 2</div>
<div>メニュー 3</div>
</div>
このように、ページを実行すると、最上位のディレクトリのみが表示されます。これを制御したい場合は、jsコードを追加する必要があります。
1. まずメニューリストを取得する
var メニューリスト = document.getElementById("メニューリスト");
2. オブジェクトはCSSプロパティを制御できる
メニューリスト.style.display="ブロック";
判断を加える
(menulist.style.display="none") の場合
menulist.style.display="ブロック";
それ以外
メニューリスト.style.display="なし";
このようにして、最も原始的なツリーが生成され、最終的なコードは
<スクリプト>
関数 showmenu()
{
var メニューリスト = document.getElementById("メニューリスト");
(menulist.style.display=="none") の場合
メニューリスト.style.display="ブロック";
それ以外
メニューリスト.style.display="なし";
}
</スクリプト>
<div オン
click="showmenu();">トップディレクトリ</div>
<div id="メニューリスト" style="display:none">
<div>メニュー 1</div>
<div>メニュー 2</div>
<div>メニュー 3</div>
</div>
私は長い間、この方法を使用してプロパティ ディレクトリを作成してきました。ディレクトリがどんなに複雑であっても、この方法は毎回機能しました。次のスクリーンショットは、IE で作成したより複雑なツリー ディレクトリの実行効果を示しています。


ひどいことが起こりました。Chrome ですべてがめちゃくちゃに見えました。情報検索をした後、ようやく理由がわかりました。block と none に加えて、display には他の多くの属性があります。block はブロックで表示され、レイアウトにはテーブルを使用しました。table と block に深い嫌悪感があるかどうかは神のみぞ知るところです。Microsoft は彼らの嫌悪感を無視するのが賢明だと考えていますが、Chrome は依然として標準に誠実に従っており、Firefox も同様です。したがって、彼らの説明にはまだ問題があります。この問題を解決する方法:
Display には、コンテンツをテーブル形式でレンダリングする table-cell というプロパティもあります。これは、レイアウトにテーブルを使用する場合にまさにやりたいことです。以下は、3 つのブラウザーの互換性のあるレンダリングです。

IE6

クロム2

ファイアフォックス3.5

<<:  React コンポーネント通信ルーティングパラメータ転送 (react-router-dom)

>>:  CSS変数を使用してスタイルを変更する方法の例

推薦する

MySQL XA で分散トランザクションを実装する方法

目次序文XA プロトコルMySQL XA で分散トランザクションを実装する方法序文MySQL が単一...

React Hooksの詳細な説明

目次フックとは何ですか?クラスコンポーネント機能コンポーネントフックが作られた理由要約するフックとは...

JavaScript はクリックして画像の形状を変更する (変換アプリケーション) を実装します。

JavaScriptをクリックすると画像の形状が変わります(変形の応用)。参考までに具体的な内容は...

JSにおける4つのデータ型判定方法

目次1. 型2. インスタンス3. コンストラクター4.toString() この記事では、4 つの...

ページコードの変更の効率を向上させ、HTML言語のコア知識を習得します。

ウェブサイトを構築するとき、HTML 言語は重要ではないと思われるかもしれませんが、実際には、基本的...

HTMLのテーブルタグの基本学習チュートリアル

表ラベルの構成HTML 内の表は <table> タグで構成されており、ブラウザはタグを...

CentOS 6.8 での Hadoop 3.1.1 完全分散インストール ガイド (推奨)

上記:このドキュメントは、3 台の仮想マシンが相互に ping を実行できること、ファイアウォールが...

複数ページ通信を実現する JavaScript の sharedWorker の詳細な例

こんなことがありました。今日はGitHubで遊んでいました。最初はログインせずにいくつかのページを閲...

Linux における「/」と「~」の違いの詳細な説明

「/」はルートディレクトリ、「~」はホームディレクトリです。 Linux ストレージはツリー状にマウ...

Centos7 で MySQL マスター スレーブ サーバーを構築する方法 (グラフィック チュートリアル)

この記事では主に CentOS 上で MySQL マスタースレーブサーバーを構築する方法を紹介します...

MySQL データ型の選択原則

目次小さいけれど美しいシンプルにNULL値を避けるデータタイプを選択する手順データ型の紹介1. 文字...

mysqlタイムスタンプの使用

序文:タイムスタンプ フィールドは、MySQL でよく使用されます。たとえば、データ行が作成または変...

Linux でハイパースレッディング技術を動的に有効/無効にする方法の詳細な説明

序文Intel のハイパースレッディング テクノロジーにより、1 つの物理コア上で 2 つのスレッド...

Linux仮想マシンの静的IPアドレスを構成するための手順を完了します

序文多くの場合、仮想マシンを使用します。たとえば、一部のテストは検出されません。何かを壊すことを心配...

docker compose を使ってワンクリックで分散構成センター Apollo を展開するプロセスの詳細な説明

導入分散について話すときは、分散構成センター、分散ログ、分散リンク トラッキングなどについて考える必...