ウェブページのドロップダウンリストと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

推薦する

Dockerを使用してDjango+MySQL8開発環境をデプロイする方法の詳細な説明

しばらく前にシステムを再インストールしましたが、バックアップを取っていなかったので、コンピューター上...

海外でダウンロードできる25個の新鮮で便利なアイコンセット

1. Eコマースアイコン2. アイコンスイーツ2 3. 携帯電話アイコンパック4. 旗アイコンセット...

Mysql の読み取り/書き込み分離期限切れに対する一般的な解決策

MySQLの読み書き分離の落とし穴読み取りと書き込みの分離の主な目的は、メイン データベースの負荷を...

OracleデータをMySQLデータベースに抽出する実装プロセス

Oracle データベースから MySQL データベースへの移行では、Oracle データベース モ...

lnmp を使用して MySQL データベースのルート パスワードをリセットする 2 つの方法

最初の方法: Junge のワンクリック スクリプトを使用して、LNMP 環境で MYSQL データ...

CSS 標準: vertical-align プロパティ

<br />原文: http://www.mikkolee.com/13私は最近、ver...

MySQLの誤操作後にbinlog2sqlを使用して素早くロールバックする方法の詳細な説明

序文日常の仕事や勉強では、データベースを操作するときに「不注意」によるミスを犯すことは避けられません...

Vueが初めて要素を取得できなかったときの解決記録

序文Vue で要素を初回取得できない問題の解決方法は、ポップアップ ウィンドウで要素を取得するために...

Vueはログインジャンプを実装する

この記事では、ログインジャンプを実装するためのVueの具体的なコードを例として紹介します。具体的な内...

React Nativeでaxiosを使用してネットワークリクエストを行う方法

フロントエンド開発では、Ajax、jQuery ajax、axios、fetch など、データ要求を...

Vue はブラウザのパスワード記憶機能を無効にするサンプル コードを実装します

情報を探すインターネットで見つかったいくつかの方法: autocomplete="off&...

IPとポートが接続可能かどうかを検出する方法

Windows コマンドテルネット形式: telnet IP ポート場合: テルネット 191.1....

bodyタグの主な属性の概要

bgcolor="テキストの色" background="背景画像&q...

dockerfile-maven-plugin 使用ガイドの概要

目次pom 構成Setting.xml 構成ログインステータスログインが必要ですログインは必要ありま...

珍しいけれど役に立つJSテクニックをいくつか紹介します

序文プログラミング言語には通常、さまざまな隠されたトリックが含まれており、これらのトリックを上手に使...