CSS ネガティブマージンで重なった要素のリンクをクリックできるようにする
CSS レイアウトでネガティブマージンを使っていると、一部のモダンブラウザでリンクがクリックできなかったり、マウスでテキストを選択できない状態になる場合があります。
配布中の Movable Type 4.2 テンプレートをご利用の方からご指摘を頂きましたが、ネガティブマージンを使った CSS レイアウト全般で有効な対処方法と思われるので、備忘録として残しておきます。
1.問題点
次のように、左サイドバーの「Movable Type 入門セミナー」にマウスをポイントしてもリンクがアクティブになりません。
なお、この問題に関する、Windows XP での各ブラウザの動作状況は次の通りでした。
- FireFox3.0.3:NG
- Safari3.1.2:NG
- Opera9.5.2:OK
- Google Chrome:NG
- IE6:OK
- IF7:OK
2.原因
中央カラムにネガティブマージンを設定しているのですが、左サイドバーのマークアップが中央カラムより後方にあるため、左サイドバーのボックスが(ネガティブマージンにより)中央カラムの下に重なってしまっていたようです。
3.対処方法
クリックできないボックスに、次のようなプロパティを与えます。
#links-left {
position: relative;
z-index: 2;
}
z-index はボックスの重なりの順序を指定する際に使用します。値は 0 を基準とし、値が大きいものが上に重なります。ここでは 2 を指定して中央カラムのボックス(z-index 指定なし)より上に重なるようにしています。
なお、z-index はpositionプロパティでstatic以外の値が指定されている要素に適用されるので、position プロパティを併せて設定しています。
これでテキスト選択やリンクがアクティブになります。
配布中の Movable Type テンプレートも修正致しました。3カラムリキッドレイアウト(フッタつき)をご利用の方は最新版をご利用ください。
4.参考サイト
Posted by yujiro このページの先頭に戻る
- YouTube動画にキャプションをつけてテキストを回り込ませる方法
- 画像を下揃えにしてテキストを回り込ませる方法
- style要素にCSSの擬似要素は記述可能か?
- position:relativeを設定すると他の要素がずれる場合の対処
- CSSでタブ切り替えする方法
- :target擬似クラスのまとめ
- CSSでヘッダを固定したスクロールテーブルを作る方法
- レスポンシブウェブデザインで画像を縮小する方法
- disabledなボタンのhoverのスタイルを無効にする方法
- HTML要素を別の要素を基点にしてCSSで絶対配置する方法
- :not擬似クラスでCSS3のサポートをチェックする方法
- :checked擬似クラスでチェックボックスに連動して要素を表示させる方法
- ol要素の入れ子で親の番号を子に割り当てる方法
- チェックボックスやラジオボタンを大きくする方法
- CSSで中央に配置する方法
トラックバックURL
コメントする
greeting