Clickable Div
想要做一個隱形連結,例如在一張圖片上有兩個位置可以點,直覺想到可以用兩個absolute的 div 放上去想要的位置,然後為 div 加上 click listener。<style type="text/css"> .div { position: absolute; border: 1px solid white; cursor: pointer; width: 70px; height: 165px; } .divA { top: 30px; left: 60px; } .divB { top: 30px; left: 280px; } </style> <div style="background-image: url('clickable.jpg'); width: 400px; height: 275px;"> <div class="div divA" onclick="alert('Click A');"></div> <div class="div divB" onclick="alert('Click B');"></div> </div>嗯,在 chrome 與 IE 各版本(ie7 - ie11)都沒問題。
但是當 clickable div 不能在放在 background-image div 裡會發生什麼事?又或者不能有 background-image 呢?
先試試 clickable div 不能在放在 background-image div 裡。
<style type="text/css"> .div { position: absolute; border: 1px solid white; cursor: pointer; width: 70px; height: 165px; } .divA { top: 30px; left: 60px; } .divB { top: 30px; left: 280px; } </style> <div style="background-image: url('clickable.jpg'); width: 400px; height: 275px;"> </div> <div class="div divA" onclick="alert('Click A');"></div> <div class="div divB" onclick="alert('Click B');"></div>嗯,沒問題。
再試試沒有 background-image。
<style type="text/css"> .div { position: absolute; border: 1px solid white; cursor: pointer; width: 70px; height: 165px; } .divA { top: 30px; left: 60px; } .divB { top: 30px; left: 280px; } </style> <div style="background-image: url('clickable.jpg'); width: 400px; height: 275px;"> </div> <div class="div divA" onclick="alert('Click A');"></div> <div class="div divB" onclick="alert('Click B');"></div>
嗯,還是沒問題。
都沒問題了嗎?IE 總是在意想不到的地方嘿嘿嘿,不用 background-image,改用 img 呢?
<style type="text/css"> .div { position: absolute; border: 1px solid white; cursor: pointer; width: 70px; height: 165px; } .divA { top: 30px; left: 60px; } .divB { top: 30px; left: 280px; } </style> <div style="position: relative; width: 400px; height: 275px;"> <img src="clickable.jpg"/> <div class="div divA" onclick="alert('Click A');"></div> <div class="div divB" onclick="alert('Click B');"></div> </div>chrome 沒問題,但是除了 IE11 可以,IE 10 以下全點不到了!
解救 IE 消失的連結
在 div 裡放個超大的看不見的字,看不見的字當然是用空白( ),超大的話就來個 font-size: 1000px 吧。<style type="text/css"> .div { position: absolute; border: 1px solid white; cursor: pointer; width: 70px; height: 165px; font-size: 1000px; overflow: hidden; } .divA { top: 30px; left: 60px; } .divB { top: 30px; left: 280px; } </style> <div style="position: relative; width: 400px; height: 275px;"> <img src="clickable.jpg"/> <div class="div divA" onclick="alert('Click A');"> </div> <div class="div divB" onclick="alert('Click B');"> </div> </div>搞定收工。
---
---
---
沒有留言:
張貼留言