画像のロールオーバー、JavaScript なし、リンクなし、純粋な CSS、コード検証、ブラウザ互換。
こんにちは、私はこのかなり簡単な解決策を考え出すために24時間苦労してきました. すべてが大丈夫かどうか、改善する方法があるかどうかを知りたいです。それは非常にエレガントです。
「ロゴ」という画像は 1 つしかありませんが、それぞれロールオーバー効果のある 2 つの異なるロゴとして表示されます。スプライト (4 つのロゴを含む 1 つの画像のみ) を使用し、その位置を変更するだけです。
ここで、画像をdivに挿入します
<div id="logo-rollover-1" class="logo-rollover">
<img title="whatever" alt="whatever" src="path-to-your-image">
</div>
次に、別の div に同じ画像を挿入しますが、ID は異なります
<div id="logo-rollover-2" class="logo-rollover">
<img title="whatever" alt="whatever" src="path-to-your-image">
</div>
今私のCSS:
.logo-rollover {
background: #ffd42a url('path-to-your-image');
width: 230px;
float: left;
height: 130px;
overflow: hidden;
position: relative;
}
.logo-rollover img { width: 460px; height: 260px; }
.logo-rollover :hover { opacity: 0; filter:alpha(opacity=0); }
#logo-rollover-1 { background-position: 0px -130px; }
#logo-rollover-2 { background-position: -230px -130px; }
#logo-rollover-2 img { right: 230px; position: relative; display: block; }
説明: 誰かが画像にカーソルを合わせると、画像が透明になり、背景の魔女が同じ画像であるが位置が異なることを示します。opacity: Firefox、Google の場合は 0、Explorer の場合は filter:alpha(opacity=0) です。.logo-rollover クラスの position: relative は、IE6 および IE7 との隠しオーバーフローの互換性のためのものです。表示ブロック; Opera ブラウザの id img に追加されます。
No Hack:リンクがない場合、href="#" や "javascript:void(0)" は必要ありません
利点: 4 つ (またはそれ以上) の画像を要求する代わりに、1 つの画像しかありません (1 つの画像スプライトの合計サイズは、4 つの合計サイズより小さい)。イメージはすでにダウンロードされているため、ロールオーバーは瞬時に行われます。ハッキングなし、偽リンクなし、コード検証なし。画像にタイトルを追加します。ロールオーバーしない唯一のブラウザは IE6 ですが、サイトは壊れていません。ロゴは正しく表示されます。IE6 のホバーを有効にするためのハックがありますが、IE6 が死んでいるので気にしませんでした。
ヒント: どこでも画像に同じパスを使用してください。つまり、「イメージへのパス」はすべての呼び出しで同じである必要があります。ブラウザのキャッシュが原因です。
これは最高のエレガントな方法ですか?このコードは改善できますか? ここで他のユーザーに感謝して開発するのは本当に苦痛だったので、誰かの助けになることを願っています ここでいくつかのトリックを見つけて、これを思いつきました.
コメントよろしくお願いします。