ウェブページのドロップダウンリストと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データベースインデックスの左端一致原則

目次1. 共同インデックスの説明2. ac はインデックスを使用できますか? 3. 考える4. 最左...

フレックスレイアウトにおける画像変形の解決策の詳細な説明

フレックス レイアウトは現在よく使用されるレイアウト方法ですが、場合によっては小さな問題が発生するこ...

Linux は n 日前のログとサンプルコマンドを自動的に削除します

1. ファイル削除コマンド:対応するディレクトリを検索します -mtime + 日数 -name &...

MySQLのインデックスシステムがB+ツリーを使用する理由の分析

目次1. インデックスとは何ですか? 2. インデックスはなぜ必要なのでしょうか? 3. インデック...

Tomcatの再構成後に起動が遅くなる問題を迅速に解決

Jenkins+Tomcatサーバーの設定中に、Tomcat設定ファイルが変更され、サーバーのTom...

Windows での MySQL 5.7.18 のインストールと設定のチュートリアル

この記事では、WindowsでのMySQL 5.7.18のインストールと設定のチュートリアルを参考ま...

Vue がルート変更を監視するときに watch メソッドが複数回実行される理由と解決策

目次要件の説明:要件分析:ニーズの解決問題解決私はフロントエンドの新人ですが、バックエンドのバグの中...

MySQL で CURRENT_TIMESTAMP を使用する方法

目次CURRENT_TIMESTAMPの使用CURRENT_TIMESTAMPを使用したタイムスタン...

MySQLデータベースにパスワードを入力した後にフラッシュバックする問題の解決策

パスワード入力後にMySQLデータベースがクラッシュする問題と解決策1 ケースの説明最近、基本的な機...

Selenium+testng を使用して Docker で Web 自動化を実現する方法

序文長い間さまざまな資料を読んで、ついに selenium+testng のパラメータ化の問題を解決...

Vueは小さなカウントダウン機能を実装します

多くのプロジェクトでは、検証コードの送信など、カウントダウン機能を実装する必要があります。ここで、簡...

CSS を使用して複数列の等高レイアウトを設定する方法の例

最初は、複数の列のコンテンツのサイズと高さが異なります。ここで、表示する背景を異なるものに設定し、各...

ARM64アーキテクチャでmysql5.7.22をインストールするプロセス全体

MySQLダウンロードアドレス: https://obs.cn-north-4.myhuaweicl...

フォント宝庫 50 種類の素晴らしい無料英語フォントリソース パート 1

デザイナーは独自のフォント ライブラリを持っているため、プロジェクトの設計時にすぐに使用できます。今...

MySQLのデッドロックチェック処理の通常の方法

通常、デッドロックが発生すると、重みが最も小さい接続が強制終了され、ロールバックされます。ただし、最...