2010-12-26 11 views
0

「アクティブ」とは、現在のページを指すリンクを「アクティブ」として分類することを意味します。このようにして、リンクの外観はCSSを使用して変更できます。サーバサイド言語を使用せずに「アクティブリンク」のナビゲーションを実装する別の方法はありますか?

サーバー側の言語を使用せずにアクティブなリンクのナビゲーションを実装することはできますか?可能であれば、CSS/HTML/jQueryのみを使用したいと思います。存在する場合、それらのメソッドは何ですか?あなたは次の構造を作成したいと仮定すると:CSSで

<ul id="nav"> 
    <li class="active">Home</li> 
    <li>About</li> 
    <li>Contact</li> 
</ul> 
+2

ユーザーがホームページにあるときに[ホーム]リンクを強調表示するか、連絡先ページの[連絡先]リンクと同様にしますか? – scunliffe

+1

@scunliffe、そうですね、それは私の意図です。 – Mohamad

+0

@Harmen、静的なナビゲーションがあると仮定します。たとえば、jQueryを使用して何かを実装することは可能ですか? – Mohamad

答えて

1

(あなたはjqueryのを必要とする)と言います。

  1. サーバサイドで、どのリンクがハイライト表示されているかを判断し、CSSクラスを追加します。
  2. 作成するページごとに、クラスを追加するJavaScriptを手動で追加します。

あなたはjQueryのを使用していた場合、あなたができる:

<ul id="nav"> 
    <li id="home">Home</li> 
    <li id="about">About</li> 
    <li id="contact">Contact</li> 
</ul> 

<script> 
    $(document).ready(function(){ 
    $('#contact').addClass('active');//set the Contact "tab" as the active link 
    }); 
</script> 

を可能なすべての場合にかかわらず、これがされるよう、あなたがメニュー構造「を構築する」とき、私はこのサーバー側をやって...#1を選ぶと思います長期的には維持しやすくなります。

+1

JSのその塊をページにハードコーディングする場合は、クラスをHTMLに入れて開始することもできます。コードが少なく、実行前に遅延がなく、JavaScriptを使用しないで実行されます。 (そして、 "CSSクラス"というものはありません。それはHTMLクラスです)。 – Quentin

+0

@David Dorward - はいtrue ...しかし、私はこの場合、メニュー構造が他の場所に構築されていて、編集不可能な理由で "推測"しているので、クラスを直接HTMLに追加することはできません。 "CSS対HTMLクラス"に関しては、そのクラスは* HTMLで*作成され* JavaScriptで*操作され、* CSSで*定義され*、CSSとJavaScriptで*使用*というトリッキーな呼び出しです。私はJavaの世界でたくさんの仕事をしているので、私はしばしば、JavaクラスではなくCSSクラスについて話していることを明確にする必要があります。私はHTMLクラスを 'HTMLSelectElement'とすることを選びません。 'HTMLInputElement'など;-) – scunliffe

2

何も現在のURLに解決URLを含む属性に基づいて要素を選択することはできません。

JavaScriptでこれを処理できます(locationを調べる)が、複数のURIが同じドキュメントに解決できるため、それらをすべて考慮する必要があるため、サーバー側のシステムよりも扱いが難しくなります。 JavaScriptで

+0

は、この目的のためにjQueryを一般的に使用していますか?それともそれに対してお勧めしますか? – Mohamad

+2

一般的ではありません。これは、サーバー上で(またはデータとテンプレートを静的ページに変換するビルド段階で)処理する方が簡単です。次に、クライアントにハンドオフします。 – Quentin

-2

あなたは可能性はあなたが2つの選択肢があり

$('#active').onClick{ 
window.location: blabla.htm 
} 
+0

編集された質問を参照してください。ただし、CSSを使用して変更できるように、現在のページリンクを別々に分類する必要があります。 – Mohamad

2

jQueryを使用してこれに似たものを実装しました。 私の実装は、私のために働いたhrefで始まるページのURLに依存していました。 (私はASp.Net MVCを使用し、URLはこれに使用できる構造になっていました)。

<ul id="nav"> 

      <li><a href='/Home'>Home</a></li> 

      <li><a href='/Company'>Company</a></li> 

      <li><a href='/Staffing'>Staffing</a></li> 

      <li><a href='/Clients'>Clients</a></li> 

     </ul> 
<script> 
    function setActiveMenu() 
    { 
     var curPage = window.location.pathname; 
     curPage = (curPage.length>1)?curPage:"/Home"; 
     $("#nav > li > a").each 
     (
      function(i, el) 
      { 
       var regEx = new RegExp("^" + $(el).attr("href") + ""); 
       if(regEx.test(curPage)) 
       { 
       $(el).parent().addClass("active"); 
       } 
      } 
     ); 
    } 

$(setActiveMenu) 
</script> 
1

クラスなし;

 
a:link {color:#FF0000;} /* unvisited link */ 
a:visited {color:#00FF00;} /* visited link */ 
a:hover {color:#FF00FF;} /* mouse over link */ 
a:active {color:#0000FF;} /* selected link */ 

With JQuery;

 

    $(document).ready(function(){ 
    $('#nav li a').click(function() { 
     $('#nav li').removeClass('active'); 
     $(this).parent().addClass('active'); 
    }); 
    }); 

+0

' a:active'!=が選択されました。これは、現在クリックされているリンクを意味します。つまり、マウスボタンはこのリンク上でダウン状態にあります。 –

関連する問題