プロが教える店舗&オフィスのセキュリティ対策術

ブロックレベル要素が重なってz-indexの数値で上下関係を決めた場合に重なっている部分では、
通常はz-indexの数値が大きい方にはアクセスできるけれど小さい数値の方にはアクセスできないと思います。
重なっている部分ではz-indexの数値が小さい方はテキストの選択もリンクのクリックもできないと思います。
ですが、私は重なっている上下の両方の要素にアクセスしないといけなくなりました。
上だけ、下だけにアクセスする方法は分かります。
両方にアクセスするにはどうしたら良いでしょうか。

単純化して試している下記の通りです。
緑色の四角の内、ピンクの枠で囲まれている所、
左のリンク「55」をクリックできて、テキスト「666」を選択できて、
右のリンク「3333」「5555」をクリックできて、とテキスト「44」「66」を選択できるようにしたいです。
ちなみに、実際のソースではin_menuとin_contentsはiframeです。divでもできなかったので、divで質問させていただきました。

よろしくお願いします。

<style>
*{font-size:18px;}
.menu{width:300px;height:50px;background-color:red;text-align:left;}
.in_menu{width:250px;height:150px;border:10px solid pink;}
.contents{width:250px;height:200px;margin-left:20px;background-color:blue;}
.in_contents{width:250px;height:150px;margin-left:20px;background-color:green;text-align:right;}
.footer{width:200px;height:40px;background-color:black;}
.menu{z-index:0;}
.in_menu{position:relative;z-index:3;}
.contents{z-index:1;}
.in_contents{z-index:2;}
.in_menu{pointer-events: auto;}
.in_contents{pointer-events: auto;}
</style>
<body>
<div class="menu">
<div class="in_menu">
<a href="">1111</a>2222<br>
<a href="">3333</a>4444<br>
<a href="">5555</a>6666<br>
</div>
</div>
<div class="contents">
<div class="in_contents">
<a href="">1111</a>2222<br>
<a href="">3333</a>4444<br>
<a href="">5555</a>6666<br>
</div>
</div>
<div class="footer"></div>
</body>

「z-indexで上になっている要素だけで」の質問画像

質問者からの補足コメント

  • へこむわー

    文章が乱れていてすみません。
    .in_menu{pointer-events: auto;}
    .in_contents{pointer-events: auto;}
    は試している途中でコピー&ペーストしてしまいました。
    参考にした次のサイトによると、

    「z-indexが下の要素も上の要素もクリックできるようにする」
    https://haayaaa.hatenablog.com/entry/2019/03/07/ …

    .in_menu{pointer-events: none;}
    にして、.in_menu内のリンクに"pointer-events: auto;"をすれば良いようです。
    .in_contents{pointer-events: auto;}にするのだと勘違いしてました。
    参考サイトのようにしたらできました。
    申し訳ありませんでした。

      補足日時:2021/04/14 02:59
  • つらい・・・

    質問のテストソースではできましたが、実際のソースでは{pointer-events: none;}が効いているらしく、上の層(z-indexが大きい方)のリンクは{pointer-events: auto;}を加えてもクリックできませんでした。
    ここでの質問とは別の原因だと思いますが、その質問も継続させていただきます。

      補足日時:2021/04/14 03:18

A 回答 (1件)

なんかすごいもん作ろうとしてるんですねえ。


がんばってください。

<span id="text01"><a href="">1111</a>2222</span>

こんな感じで一行ずつくくり、

#text01 {
position: relative;
z-index:9999;
}

みたいな感じじゃだめですかね?
平たく言えば、z-indexでどんな要素よりも上にする、というもんですわ。
できっかなあ。やってないからわからないけど、位置もつけてabsoluteの方がいいか。それでもダメならfixedだったら確実できるね。ちょっと使いづらいけど。
    • good
    • 0
この回答へのお礼

なるほど。
文字単位でz-indexを上げちゃう発想はありませんでした。
目から鱗が落ちました。
リンクのクリックだけでなくテキストの選択もできました。
どうもありがとうございました。

お礼日時:2021/04/14 23:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!