CSS3 を介して作成された形状との相互作用に関して、潜在的にトリッキーな質問があります。次のフィドルを参照してください: http://jsfiddle.net/MH4LN/1/
コード例:
<div class="container">
<div class="l1"></div>
<div class="l2"></div>
<div class="l3"></div>
</div>
次の CSS を使用します。
.container {
width: 570px; height: 570px;
position: relative;
}
.l1 {
width: 352px;
height: 352px;
background: red;
position: absolute;
top: 109px;
left: 109px;
z-index: 999;
-webkit-border-radius: 176px;
border-radius: 176px;
}
.l2 {
width: 464px;
height: 464px;
background: blue;
position: absolute;
top: 53px;
left: 53px;
z-index: 998;
-webkit-border-radius: 232px;
border-radius: 232px;
}
.l3 {
width: 570px;
height: 570px;
background: green;
position: absolute;
z-index: 997;
-webkit-border-radius: 285px;
border-radius: 285px;
}
.l1:hover, .l2:hover, .l3:hover {
background: #fff;
}
私の問題はこれです: ホバー時に各図形に CSS を適用したいです。シェイプは、境界線の半径を div の幅/高さの半分に設定する (円を作成する) ことによって作成されます。ただし、半径によって隠されている空の領域にカーソルを合わせると、その要素でホバー状態がトリガーされます。ここに私が何を意味するかを説明するための画像があります:
これを回避する方法はありますか?これには、単純な丸みを帯びた div の代わりに canvas 要素を使用する必要がありますか?
編集: Firefox で正常に動作するため、これは WebKit ブラウザーに固有のようです。
編集 2: Niels の解決策は正しいので受け入れます。ボックス モデルでは、要素は長方形であると規定されているため、これについて行っていた方法は間違っていました。しかし、SVG で必要なことは達成できました。誰かが興味を持っている場合に備えて、Fiddle の例を次に示します: http://jsfiddle.net/uhrHX/1/