負のz-indexを持つ要素がクリックできない問題の解決策

負のz-indexを持つ要素がクリックできない問題の解決策
最近、ポップアップ広告に取り組んでいました。デフォルト ページには z-index が設定されていないため、負の z-index を持つ要素はクリックできないことがわかりました。解決策は、ポップアップ広告の z-index を 1 に設定し、他の要素の z-index を増やすことです。

次のような要件があると仮定します。



ヘッダーとメイン領域はすでにあります。次に、ページに背景画像を追加する必要があります。背景レイヤーはメイン領域の下にある必要がありますが、メイン領域の外側の部分はクリック可能で、リンクになっています。

ちょっと考えてみたところ、背景画像はクリックできないので、背景画像を使用してこれを実現することはできないことに気付きました。 js を使用して body のクリックを監視し、クリック位置に基づいて背景画像がクリックされたかどうかを判断することもできますが、これはあまりにも扱いにくいです。そこで、メインエリアの下にレイヤーを追加し、z-index: -1 を設定することにしました。画像は bgImg の背景画像として設定されます。コードは次のとおりです。

 <!DOCTYPE html>
<html>
    <ヘッド>
    <スタイル>
      .bgImg {位置: absolute; z-index: -1; 背景: url(...) no-repeat center;}
    </スタイル>
    </head>
    <本文>
         <ヘッダー></ヘッダー>
         <div class="bgImg"></div>
         <div class="main"><div>
    </本文>
</html>

しかし、この設定後、負の z-index を持つ要素が body レイヤーの下に配置されるため、クリック イベントとホバー イベントが body レイヤーによってカバーされ、bgImg をクリックできず、ホバーしても手の形が表示されなくなります。

解決:

1. z-index を 0 に設定します。メイン領域を position:relative; z-index: 1; に設定します。これにより、背景レイヤーがメイン領域に影響を与えなくなり、メイン領域の外側の部分もクリックできるようになります。



2. 構造は1と同じですが、実装方法が異なります。位置を使用する代わりに、負の margin-bottom を使用します。

背景レイヤー {height: 500px; margin-bottom: -500px;}

メインエリアでは変更は必要ありません。

原則として、負の margin-bottom は下の要素を引き上げ、背景レイヤーの高さ = height + padding-top + padding-bottom + border-top-width + border-bottom-width + margin-top + margin-bottom = 0 となります (設定されていないプロパティはすべて reset.css で 0 にリセットされます)。そのため、背景レイヤーはドキュメント フローのスペースを占有せず、クリックすることができます。

<<:  CSS で複数の境界線を実装するためのヒント

>>:  フロントエンドの vue+express ファイルのアップロードとダウンロードの例

推薦する

JavaScript プロトタイプとプロトタイプチェーンの深い理解

目次1. プロトタイプとは何ですか? 2. プロトタイプ__プロト__ 4. コンストラクター5. ...

nginxワーカープロセスループの実装

ワーカープロセスは、起動されると、まず自身の動作に必要な環境を初期化し、次に実行する必要があるイベン...

MySQL共通インデックスとユニークインデックスの選択に関する詳細な分析

各人が固有の携帯電話番号で登録し、ビジネス コードによって重複する携帯電話番号が 2 つ書き込まれな...

MySQLのREDOログとUNDOログの詳細な説明

MySQL ログ システムで最も重要なログは、REDO ログとアーカイブ ログです。後者は MySQ...

Web コンポーネントの内部イベント コールバックと問題点の分析

目次前面に書かれたWC とは何でしょうか?現在の欠陥1. コンポーネント内部イベントのコールバック2...

Dockerはポートを介してコンテナに接続します

Dockerコンテナ接続1. ネットワークポートマッピングPythonアプリケーション用のコンテナを...

HTML でスタイルを使用して属性を追加する例

必要なリンクにインライン スタイルを追加します。コードをコピーコードは次のとおりです。 <a ...

Brotli圧縮アルゴリズムを有効にするNginxの実装プロセスの詳細な説明

序文Web アプリケーションでは、トラフィックを節約し、転送データのサイズを縮小し、転送効率を向上さ...

MySQLのint主キーの自己増分の問題を解決する

導入MySQL データベースを使用する場合、int を主キーとして使用し、自動インクリメントに設定す...

非常に優れた CSS スキル 10 選のコレクションと共有

ここでは、CSS テクニックを巧みに使用することで、HTML を変更せずにブログやテンプレートの外観...

jsはキャンバスに基づいて時計コンポーネントを実装します

圧縮アップロード画像、スクラッチカード、ポスター作成、チャートプラグインなど、フロントエンド開発にお...

Docker が MySQL を作成する説明

1. MySQLイメージをダウンロードするコマンド: docker pull mysql 2. コン...

リンクAの意味論、書き方、ベストプラクティス

リンク A のセマンティクス、ライティング スタイル、およびベスト プラクティス。私は JavaEy...

ノードでシェルスクリプトを使用する方法

背景開発中、特定の状況でビジネス ロジックをバッチ処理するためのスクリプトが必要になる場合があります...

リモート接続を許可するようにMySQLを変更する方法

MySQLリモート接続の問題に関しては、会社で働いているときに誰かのコンピュータに保存されているMy...