0

私はレスポンシブCSSメニュー用にこのCSSコードを持っています:

nav, ul, li, a {
    margin: 0; padding: 0;
}
a {
    text-decoration: none;
}
.container {
    width: 100%;
    margin: 10px auto;
}
.toggleMenu {
    display:  none;
    background: #666;
    padding: 10px 15px;
    color: #fff;
}
.nav {
    list-style: none;
     *zoom: 1;
     background:#f36f25;
}
.nav:before,.nav:after {
    content: " "; 
    display: table; 
}
.nav:after {
    clear: both;
}
.nav ul {
    list-style: none;
    width: 9em;
}
.nav a {
    padding: 10px 15px;
    color:#fff;
}
.nav li {
    position: relative;
}
.nav > li {
    float: left;
    border-top: 1px solid #104336;
}
.nav > li > .parent {
    background-image: url("images/downArrow.png");
    background-repeat: no-repeat;
    background-position: right;
}
.nav > li > a {
    display: block;
}
.nav li  ul {
    position: absolute;
    left: -9999px;
}
.nav > li.hover > ul {
    left: 0;
}
.nav li li.hover ul {
    left: 100%;
    top: 0;
}
.nav li li a {
    display: block;
    background: #1d7a62;
    position: relative;
    z-index:100;
    border-top: 1px solid #175e4c;
}
.nav li li li a {
    background:#249578;
    z-index:200;
    border-top: 1px solid #1d7a62;
}

@media screen and (max-width: 768px) {
    .active {
        display: block;
    }
    .nav > li {
        float: none;
    }
    .nav > li > .parent {
        background-position: 95% 50%;
    }
    .nav li li .parent {
        background-image: url("images/downArrow.png");
        background-repeat: no-repeat;
        background-position: 95% 50%;
    }
    .nav ul {
        display: block;
        width: 100%;
    }
   .nav > li.hover > ul , .nav li li.hover ul {
        position: static;
    }

}

しかし、メニュー項目をメニュー/ページの中央に揃えることができません

ここに完全なコードのフィドルがあります:

http://jsfiddle.net/5Z2QV/

4

1 に答える 1

2

このフィドルはあなたが望むものですか?
その場合は、 から削除floatしてli追加display: inline-blockする必要があります。次に、に追加text-align: centerする必要があります.nav

.nav {
    list-style: none;
    background:#f36f25;
    text-align: center;
    border-top: 1px solid #104336;
}
.nav > li {
    display: inline-block;
}

また、s間の隙間を取り除くために、 sborder-topから取り外してsliに入れました。.navli

EDIT :
サブメニュー項目を左揃えにするには、次の CSS を追加します。

.nav li {
    text-align: left;
}

EDIT2

adjustMenu()このJavaScript 関数は必要ありません。使用できますmedia queries@mediaセクションを少し変更します。このスタイルを追加:

.nav {
    border-top: none;
}

スタイルを次のように置き換えます.nav > li

.nav > li {
    display: block;
    border-top: 1px solid #104336;
}

また、解像度の狭い範囲では、1 つのメニュー項目が新しい行に分割されることに気付きました。これを防ぐには、このスタイルを.nav

white-space: nowrap;
overflow: hidden;

更新フィドルは次のとおりです。http://jsfiddle.net/5Z2QV/9/

于 2013-10-28T12:13:56.600 に答える