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変数を使用してスタイルを変更する方法の例

推薦する

古典的なスネークゲームの JavaScript 実装

この記事では、古典的なスネークゲームを実装するためのJavaScriptの具体的なコードを参考までに...

VMware 仮想マシンに CentOS と Qt をインストールするチュートリアル図

VMware のインストールパッケージのインストールダウンロードアドレス: https://www....

WeChatアプレットでvantフレームワークを使用するための具体的な手順

目次1. アプレットのプロジェクト ディレクトリを開き、ファイルの場所を開きます。 2. プロジェク...

MySQL の自動インクリメント主キーが連続していないのはなぜですか?

目次1. はじめに2. 自己増分ストレージの説明3つの自己付加価値修正メカニズム4. 自己評価を修正...

MySQL 5.7 JSON 型の使用の詳細

JSON は、言語に依存しないテキスト形式を使用する軽量のデータ交換形式で、XML に似ていますが、...

Ant Design Blazor コンポーネントライブラリのルーティング再利用マルチタブ機能

最近、Ant Design Blazor コンポーネント ライブラリにマルチタブ コンポーネントを実...

Ubuntu 18.04 は mysql 5.7.23 をインストールします

以前、Ubuntu 16.04 に MySQL をスムーズにインストールしました。今回、Ubuntu...

HTML でのアンカーポイントの適用

アンカーポイントの設定<a name="トップ"></a>...

Linux でジャンクファイルをエレガントに削除する方法

あなたも私と同じように、コンピューターのファイルを整然と整理し、不要なファイルを適宜削除するプログラ...

Vue でバイナリ ファイル ストリームを受信して​​ PDF プレビューを実現する方法

バックグラウンド コントローラー @RequestMapping("/getPDFStre...

Linux dirnameコマンドの具体的な使い方

01. コマンドの概要dirname - ファイル名からディレクトリ以外のサフィックスを削除しますd...

Tomcat の一般的な例外と解決コードの例

弊社のプロジェクトは Java で開発され、ミドルウェアは Tomcat でした。運用中に、Tomc...

HTML ページをズームアウトした後にスクロール バーを表示するためのサンプル コード

ここでは、HTML ページのサイズを縮小した後に下部にスクロール バーを表示し、スクロール バーをス...

MySQL マスタースレーブレプリケーションでエラーをスキップする方法

1. 従来のbinlogマスタースレーブレプリケーション、エラー報告をスキップする方法 mysql&...

Windows 10 無料インストール版の MySQL インストールと設定のチュートリアル

ネットでいろいろ検索してみたところ、Linux システム向けではなく、現在の新しいバージョンと一致し...