5

私はCSSを探すのに何時間も費やし、それからこのためのjQueryソリューションを探しました。私はこれをどこでも見ましたが、最初からそれを行う方法がわかりません。

私がやりたいのは、リストとしてメニューがあり、その中に別のリストがあり、別のリストがあることです。つまり、これは3レベルの水平メニューです。

私がやりたいのは、子供が選ばれたときに、親の背景色を変更して、li a意味がわかればパンくずのように見えるようにすることです。

これは私の現在のCSSです

.menu {
    z-index: 9999;
    position:relative;
    background-image: url(images/top_nav_lili_repeat.png);
    background-repeat: repeat-x; height:38px;
    font-family: 'Open Sans', sans-serif;
    text-transform:uppercase;
}
.menu ul ul {
    display: none;
}
.menu ul li:hover > ul {
    display: block;
}
.menu ul {

    color: #797979;
    padding: 0 0px;

    list-style: none;
    position: relative;
    display: inline-table;
}
.menu ul:after {
    content: "";
    clear: both;
    display: block;
}
.menu ul li {
    float: left;
}
.menu ul li:hover {
    background: #4b545f;
}
.menu ul li:hover a {
    color: #EBAD2D;
}
.menu li a.seleted ul li a{ background-color:#ff0000;}
.menu ul li a {
    display: block;
    padding: 11px 16px;
    color: #bbb;
    text-decoration: none;
}
.menu ul li a.selected { background-color:#ff0000;}

.menu ul ul {
    background: #5f6975;
    border-radius: 0px;
    padding: 0;
    position: absolute;
    top: 100%;
    width: 200px;
}
.menu ul ul li {
    float: none;
    border-top: 1px solid #6b727c;
    border-bottom: 1px solid #575f6a;
    position: relative;
}
.menu ul ul li a {
    padding: 10px 16px;
    color: #fff;
}
.menu ul ul li a:hover {
    background: #4b545f;
}
.menu ul ul ul {
    position: absolute;
    left: 100%;
    top: 0;
}

現在のHTMLメニューは次のようになっています。

<div class="menu">

            <ul>
    <li><a href="#" title="Menu Item 1">Home</a>
        <ul>
            <li><a href="#" title="Sub-Menu Item 1">Home link 1</a>
                <ul>
                    <li><a href="#" title="Sub-Sub-Menu Item 1">Home Link 1 Link 1</a></li>
                    <li><a href="#" title="Sub-Sub-Menu Item 2">Home Link 1 Link 2</a></li>
                    <li><a href="#" title="Sub-Sub-Menu Item 3">Home Link 1 Link 3</a></li>
                </ul>
            </li>
            <li><a href="#" title="Sub-Menu Item 2">About</a>
                <ul>
                    <li><a href="#" title="Sub-Sub-Menu Item 1">About 1</a></li>
                    <li><a href="#" title="Sub-Sub-Menu Item 2">About 2</a></li>
                    <li><a href="#" title="Sub-Sub-Menu Item 3">About 3</a></li>
                </ul>
            </li>
            <li><a href="#" title="Sub-Menu Item 3">Contact</a>
                <ul>
                    <li><a href="#" title="Sub-Sub-Menu Item 1">Contact 1</a></li>
                    <li><a href="#" title="Sub-Sub-Menu Item 2">Contact 2</a></li>
                    <li><a  class="selected" href="#" title="Sub-Sub-Menu Item 3">Contact 3</a></li>
                </ul>
            </li>
        </ul>
    </li>

</ul>
          </div>

最後li a Contact 3にクラスがアタッチされているのを見るselectedと、CMSはこのクラスを選択した要素に追加します。だから私がやりたいのは、親の背景色を変更し、<a>Contact</a>css<a>Home</a>またはJqueryを使用して、これもクロスブラウザー互換にすることです。みんなありがとう。

ここにフィドルがあります:http://jsfiddle.net/8s3Bc/

4

3 に答える 3

5

必要なのは、選択したクラスでアンカーを選択し、そのli を繰り返して背景を変更することです。

次のステートメントでは、親li要素のクラスを追加しました。

$('.menu li a.selected').parents('li').addClass('parent');​

そして、親クラスの背景色を定義しました。

.parent {
   background-color:#ff0000;
}

実例は次のとおりです。http://jsfiddle.net/dhMSN/

于 2012-12-12T09:40:45.827 に答える
0

このような?http://jsfiddle.net/8s3Bc/5/

このjqueryを追加しました

$('.menu ul ul > li').click(function(){
    $(this,'a').addClass('selected');
});​

いくつかのCSSを変更しました。

于 2012-12-12T09:47:16.377 に答える
0

@halilbの答えはあなたが望むものかもしれませんが、これを見て、あなたのパフォーマンスを改善し、あなたのメニューの感触を見てください。

デモ:http
://www.dynamicdrive.com/dynamicindex1/ddsmoothmenu.htm コード:https ://github.com/dynamicdriverepo/ddsmoothmenu

ここからアイデアを得るここでは、必要な適切に実装されたjQueryとcssを見つけることができます。

新しい機能を作成することは良いことですが、無料で利用できる場合は良くありません。最も重要な部分は適切にテストされており、より多くの機能と適切に構造化されたコードがあります。

注:コードを毎回盗んだり、誰かのコードを常にコピーしたりするように促しているわけではありませんが、開発時間を節約できます。

于 2014-06-13T06:53:25.347 に答える