ウェブページのドロップダウンリストとdivレイヤーのカバーの問題を選択する

ウェブページのドロップダウンリストとdivレイヤーのカバーの問題を選択する

HTML の select 要素に関する質問は、さまざまな場所で提起されています。最近のプロジェクトで、select 要素に関する 2 つの小さな問題に遭遇しました。以下に概要を示します。 最初の問題はよく知られているものです。一般的な div フローティング レイヤーは、IE6 では選択要素をカバーすることができません。まず、次の例を示します。注: FirFox と IE7 で見ると、HTML の select 要素に関する問題がさまざまな場所で発生しています。少し前のプロジェクトで、select 要素に関する 2 つの小さな問題に遭遇しました。以下に要約を示します。
関連記事: div レイヤーがフラッシュ レイヤーによって覆われる問題に対する最初の解決策は、より有名なものです。一般的な div フローティング レイヤーは、IE6 で選択要素を覆うことができません。まず、次の例を示します。
ウェブページのドロップダウンリストとdivレイヤーのカバーの問題を選択する
注: FirFox と IE7 で見ると、結果は同じです。フローティング レイヤー A、B、C はすべて正常に表示され、下の選択要素をカバーします。ただし、IE6 では、3 つの異なる状況があります。フローティング レイヤー A は正常のままです。フローティング レイヤー B の本体は選択要素をカバーしますが、フローティング レイヤーの境界は選択要素をカバーすることができません。フローティング レイヤー 3 は選択要素をまったくカバーできません。この現象が発生する理由は、IE6 ではブラウザが select 要素をウィンドウ レベルの要素と見なすためです。このとき、div などの通常の要素は、z-index をどれだけ高く設定しても select 要素を覆うことはできません。ただし、同じくウィンドウ レベルの要素である iframe で select を覆うことはできます。上記の例では、このようになっています。フローティング レイヤー C は単なる div フローティング レイヤーです。ここでは説明しません。フローティング レイヤー B の構造を直接見てみましょう。
<div class="containDiv" > <iframe class="maskIframe" ></iframe> <div class="mainDiv" >フローティングレイヤー B</div> </div>
div を使用して、実際のコンテンツ div と iframe 要素を組み合わせます。対応するスタイルは次のとおりです。
.containDiv{位置: 絶対; 上: 140px; 左: 60px; } .maskIframe{位置: 絶対; 左: -1px; 上: -1px; z-index: -1;境界線: 1px solid #000;高さ: 50px;幅: 50px;_高さ: 48px;_幅: 48px;} .mainDiv{背景: #EBAC3B;幅: 50px;高さ: 50px;}
フローティングレイヤー B は、iframe を使用して containDiv に絶対配置し、z-index: -1; を設定してから、実際にコンテンツを保持する mainDiv が iframe を覆うようにします。このとき、iframe は select 要素を覆うことができ、間接的に mainDiv が select 要素を覆うようになります。ただし、フローティング レイヤー B はまだ完璧ではありません。その理由は、ここでのフローティング レイヤー B の境界線は iframe の境界線を使用しているためです。iframe 自体は選択範囲を覆うことができますが、境界線は覆うことができないため、フローティング レイヤー B の状況が発生します。
フローティング レイヤー A はこの問題を解決し、理想的な効果を実現します。基本的にはフローティング レイヤー B と同じですが、iframe を mainDiv より上下左右に 1px 大きくし、mainDiv に境界線を設定します。このように、フローティング レイヤーの境界線は mainDiv によって提供され、境界線とともに mainDiv 全体が iframe 上にあるため、理想的な効果が実現されます。
select に関する 2 番目の問題は、IE でオプション オプションを動的に生成する問題です。上記の 2 番目の質問の例を見ると、(FF のみ) リンクをクリックすると、FF では 3 つのオプション要素を select 要素に追加できますが、IE では追加できません。一方、(ユニバーサル) リンクをクリックすると、IE と FF の両方で 3 つのオプション要素を select 要素に追加できます。その理由は、最初のリンクがselect要素のinnerHTML属性を通じてoption要素に追加されるからです。
document.getElementById("addSelect").innerHTML = "ABC";
これは FF では問題なく動作しますが、IE ではこの方法を使用して選択要素にオプション サブ要素を追加することはできません。代わりに、2 番目のリンクで提供されている方法を使用する必要があります。
document.getElementById("addSelect").options.add(新しいオプション("A","A",false,true));

<<:  複数のサーバーにNginxリバースプロキシを実装する方法

>>:  格納可能なセカンダリメニューを実装するための JavaScript

推薦する

MySQL の 4 つのトランザクション分離レベルの詳細な説明

この実験のテスト環境: Windows 10+cmd+MySQL5.6.36+InnoDB 1. ト...

CentOS7 上で KVM 仮想化プラットフォームを構築する (3 つの方法)

KVM はカーネルベースの仮想マシンの略で、Linux をハイパーバイザーに変換する Linux ...

ページのスクロールバーを無効にするには、overflow: hiddenを使用します。

コードをコピーコードは次のとおりです。 html {オーバーフロー: 非表示; }体{オーバーフロー...

波効果を作成するための CSS のトリック

純粋な CSS を使用して波の効果を実現することは、常に非常に困難でした。 波形曲線を実現するにはベ...

WeChatアプレットが弾丸画面を送信するビデオプレーヤーを実装

この記事では、WeChatアプレットでビデオプレーヤーの集中砲火を実装するための具体的なコードを参考...

CentOS に Nginx をインストールする方法

公式ドキュメント: https://nginx.org/en/linux_packages.html...

Vue のキーボードイベント監視の概要

キー修飾子キーボード イベントをリッスンする場合、詳細なキーを確認する必要があることがよくあります。...

DockerコンテナのIPアドレスを表示する方法

私はずっとDockerにはIPアドレスがないと思っていました。実はDockerのネットワークテンプレ...

MySQL Innodb インデックス メカニズムの詳細な紹介

1. インデックスとは何ですか?インデックスは、ストレージ エンジンがレコードをすばやく検索するため...

LinuxにNginxをインストールする詳細な手順

1. Nginxのインストール手順1.1 公式サイトの紹介http://nginx.org/en/d...

JavaScript キャンバスはマウスの動きに合わせてボールを動かすことを実装します

この記事の例では、マウスに従ってボールを動かすjsの具体的なコードを参考までに共有しています。具体的...

Vue3 の emitting と attr の違いの分析

目次結論は実践分析拡張機能要約する結論は親コンポーネントでカスタム イベントが定義されている場合、子...

MySQL 5.7.20 共通ダウンロード、インストール、設定方法と簡単な操作スキル(解凍版無料インストール)

早朝に MySQL 5.7.19 のインストールを終えたばかりですが、午前中に MySQL が最新バ...

docker ベースで Prometheus+Grafana を構築する手順の詳細説明

1. プロメテウスの紹介Prometheus は、もともと SoundCloud によって開発された...