2011-12-08 1 views
1

<ul>を使用してナビゲーションバーを作成しています。 CSSコードは以下の通りである:背景画像上に移動すること、従って、異なる部分を表示するようにバックグラウンド位置を垂直方向にのみオフセットする方法はありますか?

.nav { 
    list-style: none; 
    background: url(/images/nav.png) no-repeat; 
    width: 666px; 
    height: 60px; 
} 
    .nav li { 
    font-size: 0px; 
    background: url(/images/nav.png) no-repeat; 
    width: 120px; 
    height: 60px; 
    display: block; 
    float: left; 
    position: relative; 
    } 
    .nav .navhome { 
    background-position: -31px 0; 
    left: 31px; 
    } 
    .nav .navA { 
    background-position: -152px 0; 
    left: 32px; 
    } 
    .nav .navB { 
    background-position: -273px 0; 
    left: 33px; 
    } 
    .nav .navC { 
    background-position: -394px 0; 
    left: 34px; 
    } 
    .nav .navD { 
    background-position: -515px 0; 
    left: 35px; 
    } 
    .nav .navhover { 
    background-position-y: -60px; 
    } 
    .nav .navcurrent { 
    background-position-y: -120px; 
    cursor: default; 
    pointer-events: none; 
    } 

はjQueryの機能は、マウスが一つのボタンに置​​いたときに、クラス.navhoverが追加されることもあります画像全体。クラス.navcurrent(現在のページ)もそうです。

MACで実装してChromeでテストしました。しかし、コードを検証したところ、background-position-yは標準ではないことがわかりました(実際には、これらの5つのボタンにはbackground-position-xも使用されていました)。ボタンごとにxオフセットがあるため、の.navhoverには常に最初のものが表示されます。また、私はbackground-position: inherit -60px;を試しても動作しません。では、バックグラウンドの位置を垂直方向にのみ移動する方法は?

もう1つの質問pointer-eventsも標準ではありません。これは、FirefoxとOperaでは機能しません。クラス.navcurrentのボタンでクリック機能を無効にする別の方法はありますか?

+0

あなたはコードがjsfiddleに投稿することはできますか? – biphobe

答えて

0

は.navcurrentにクリックイベントを防ぐために:

$(".navcurrent").click(function(e) { 
    e.preventDefault(); 
}); 

と背景の位置、なぜあなたが各クラスのインスタンスを持つことができないため

.nav .navD:hover { 
    background-position: -515px -60px; 
} 
+0

ホバーについては、問題ありません。しかし、どのように "現在"と関係がありますか? – DrXCheng

+0

@xucアクティブであることを意味しますか?次に、ホバーの代わりに擬似クラス「アクティブ」を使用します。それがあなたが意味するものでないなら、あなたはさらに説明しようとしますか?ありがとう – Jason

関連する問題