31

クリックした現在のメニューを強調表示したい。私はCSSを使用していますが、現在は機能しています。

ここに私のcssコードがあります:

#sub-header ul li:hover{ background-color: #000;}
#sub-header ul li:hover a{ color: #fff; }
#sub-header ul li.active{ background-color: #000; }
#sub-header ul li.active a{ color: #fff; }

ここに私のhtmlがあります:

<div id="sub-header">
    <ul>
        <li> <a href="index.php">Home</a> </li>
        <li> <a href="contact.php">Contact Us</a> </li>
        <li> <a href="about.php">About Us</a> </li>
    </ul>
</div>

これは、ホバーしたときにメニューがアクティブな場合に私が好むものです

これは、ホバーしたときにメニューがアクティブな場合に私が好むものです

ホバーは大丈夫です。問題は、メニューをクリックした後、黒い地面が表示されないことです


@ジョナサン、私はすでにそれを解決しており、あなたが与えたものよりも簡単です。

これが私の答えです:

$(function(){
    // this will get the full URL at the address bar
    var url = window.location.href; 

    // passes on every "a" tag 
    $("#sub-header a").each(function() {
            // checks if its the same on the address bar
        if(url == (this.href)) { 
            $(this).closest("li").addClass("active");
        }
    });
});

次に、私のcssファイルで:

.active { background-color: #000; }
/* to override the existing css for "a" tag */
#sub-header .active a{ color: #fff; }
4

11 に答える 11

36

各ページの本文にクラスを追加します。

<body class="home">

または、連絡先ページにいる場合:

<body class="contact">

次に、スタイルを作成するときにこれを考慮してください。

#sub-header ul li:hover,
body.home li.home,
body.contact li.contact { background-color: #000;}

#sub-header ul li:hover a,
body.home li.home a,
body.contact li.contact a { color: #fff; }

最後に、クラス名をリスト アイテムに適用します。

<ul>
  <li class="home"><a href="index.php">Home</a></li>
  <li class="contact"><a href="contact.php">Contact Us</a></li>
  <li class="about"><a href="about.php">About Us</a></li>
</ul>

この時点で、body.homeページにいるときはいつでも、li.home aリンクには現在のページであることを示すデフォルトのスタイルが設定されます。

于 2012-05-18T04:44:31.130 に答える
2

回答: 「現在の」リンクには CSS が必要です。

jQuery メニュー ナビゲーションの説明

サンプル :多くのソリューションの 1 つ

それは私のために働いています

于 2012-11-23T00:51:13.407 に答える
2

この質問に与えられたタグはCSSであるため、私が達成した方法を提供します。

  1. .css ファイルにクラスを作成します。

    a.activePage{ color: green; border-bottom: solid; border-width: 3px;}

  2. ナビゲーション バーは次のようになります。

    • お問い合わせ
    • 私たちに関しては

注:クラスを使用してすべての Nav-Bar 要素のスタイルを既に設定している場合は、作成した特別なケースのクラスをhtml タグの汎用クラスの後に空白でカスケードできます。

例:ここでは、すべての list-items 用に作成した「navList」というクラスからスタイルを既にインポートしていました。ただし、特殊なケースのスタイリング属性はクラス「activePage」の一部です

.CSS ファイル:

a.navList{text-decoration: none; color: gray;}
a.activePage{ color: green; border-bottom: solid; border-width: 3px;}

.HTML ファイル:

<div id="sub-header">
    <ul>
        <li> <a href="index.php" class= "navList activePage" >Home</a> </li>
        <li> <a href="contact.php" class= "navList">Contact Us</a> </li>
        <li> <a href="about.php" class= "navList">About Us</a> </li>
    </ul>
</div>

あるクラス名を他のクラス名の後ろにカスケードした方法を見てください。

于 2014-08-24T06:51:02.700 に答える
0

シンプルな 2 行のリスナーを使用した別のバリエーション

$( ".menu_button" ).click(function() {

    $( ".menu_button" ).removeClass('menu_button_highlight');
    $(this).addClass('menu_button_highlight');
});

=====

    <a class='menu_button' href='#admin'>Admin</a>
    <br/>

    <a class='menu_button' href='#user_manager'>User Manager</a>
    <br/>

    <a class='menu_button' href='#invite_codes'>Invite Codes</a>

====

.menu_button {

    padding: 0 5px;
}

.menu_button_highlight {

    background: #ffe94c;
}
于 2018-04-14T00:18:37.520 に答える
0

これを試してください(コピーして貼り付けてください):

Test.html:-

<html>
 <link rel="stylesheet" type="text/css" href="style.css">
 <a class="fruit" href="#">Home</a></span>
 <a class="fruit"  href="#">About</a></span>
 <a class="fruit"  href="#">Contact</a></span>
</html>

style.css:-

a:link{
 color:blue;
}

a:visited{
 color:purple;
}

a:hover{
 color:orange;
}
a:focus{
color:green;
}

a:active{
 color:red;
}

a:active{
 color:yellow;
}
于 2015-10-05T10:31:23.230 に答える