負の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 ファイルのアップロードとダウンロードの例

推薦する

MySQL 8.0.12 のインストールと設定方法のグラフィックチュートリアル (Windows 版)

1. はじめにプロジェクトではMySQLを使用しています。インターネット上の例を参考にインストール...

Ubuntuのバックアップ方法(4種類)のまとめ

方法1:リスピンを使用するには、次の手順に従ってください。 sudo add-apt-reposit...

Nginx は https ウェブサイト構成コード例を実装します

https ベースポート 443。これはキーと呼ばれるものに使用されます。これらのことを理解せずにで...

CSS ボックスの折りたたみに対する 5 つの解決策

まず、ボックスコラプスとは何でしょうか?親ボックスの内側にあるべき要素が外側にあります。第二に、箱は...

MySQLのUPDATE文の落とし穴を記録する

背景最近、オンライン操作中に DML ステートメントを実行しました。これは絶対確実だと思っていました...

Google Chromeの自動入力問題に対する完璧な解決策

Google Chrome では、ログインに成功すると、パスワードを記憶するかどうかを尋ねるメッセー...

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

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

MySQLとRedisキャッシュ間の同期ソリューションについての簡単な説明

目次1. ソリューション 1 (UDF)デモケース2. ソリューション2(binlogの解析)キャナ...

WeChatアプレットで画像の幅と高さを取得する方法

起源最近、私は要件 A に取り組んでいます。そこには、次のように記述される小さな機能ポイントがありま...

Nodeはkoa2を使用してシンプルなJWT認証方式を実装します

JWT の紹介JWTとは正式名称はJSON Web Tokenで、現在最も人気のあるクロスドメイン認...

高品質なJavaScriptコードの書き方

目次1. 読みやすいコード1. 統一コード形式2. マジックナンバーを削除する3. 単一機能原則2....

ReactにおけるRefの相互利用の詳細な説明

目次1. まずRefとは何かを説明しましょう2. フックでのrefの使用1. HTMLDomフックで...

MySQL PHP 構文の簡単な分析

まずcharAt関数の基本的な構文を見てみましょう文字 = str.charAt(インデックス) c...

Pagoda Panel のインストール時にサーバーがデータベースにリモート接続できない問題の解決策

自分のウェブサイトを構築する予定なので、618 プロモーションを利用して Tencent Cloud...

.html、.htm、.shtml、.shtm の違いと関連性について簡単に説明します。

ご存知のとおり、私たちが毎日閲覧する Web ページ、Web サイト、または Web ページには独自...