3

次の CSS を使用した CSS メニューがあります。

メニュー全体をページの中央に配置する最善の方法は何ですか?

別の<div>外側<nav>を使用してマージンを設定しようとしましたが、常に左に揃えるだけです。

nav {
    margin: 0 auto; 
    text-align: center;
    border:1px solid black;
}

nav ul ul {
    display: none;
}

nav ul li:hover > ul {
    display: block;
}

nav ul {
    list-style: none;
}

nav ul li {
    float: left;
}

nav ul li:hover a {
    color: #000000;
}

nav ul li a {
    display: block; 
    padding: 10px 15px;
    color: #000000;
    text-decoration: none;
}       

nav ul ul {
    border-radius: 0px;
    padding: 0;
    position: absolute;
}

nav ul ul li {
    float: none; 
    border-top: 1px solid #000000;
    border-bottom: 1px solid #000000;
    position: relative;
}

nav ul ul li a {
    color: #000000;
}

nav ul ul li a:hover {
    color: #666666;
}

nav ul ul ul {
    position: absolute;
    top:0;
}

jsfiddle : http://jsfiddle.net/njuVm/

4

3 に答える 3

2

次の CSS ルールを使用して、ナビゲーション バーを中央に配置できます。

nav {
    margin: 0 auto; 
    text-align: center;
    border:1px solid black;
}

nav ul ul {
    display: none;
}

nav ul li:hover > ul {
    display: block;
}

nav ul {
    list-style: none;
    margin: 0;                 /* << add this */
    padding: 0;                /* << add this */
    display: inline-block;     /* << add this */
    vertical-align: top;       /* << add this */
}

nav ul li {
    float: left;
    margin: 0;          /* << add this */
    padding: 0;         /* << add this */
}

nav ul li:hover a {
    color: #000000;
}

nav ul li a {
    display: block; 
    padding: 10px 15px;
    color: #000000;
    text-decoration: none;
    background-color: pink; /* optional... */
}       

nav ul ul {
    border-radius: 0px;
    padding: 0;
    position: absolute;
}

nav ul ul li {
    float: none; 
    border-top: 1px solid #000000;
    border-bottom: 1px solid #000000;
    position: relative;
}

nav ul ul li a {
    color: #000000;
}

nav ul ul li a:hover {
    color: #666666;
}

nav ul ul ul {
    position: absolute;
    top:0;
}

デモを参照してください: http://jsfiddle.net/audetwebdesign/DP6Ax/

重要なのは、 を設定display: inline-blockすることですnav ul。これにより、text-align: centerルールが有効になります。

ulおよびli要素のマージンとパディングを必ずゼロにしてください。あなたがした他のすべてのことは多かれ少なかれ正しかったので、あなたは良いはずです。

于 2013-09-17T01:23:02.700 に答える
1

をフローティングする代わりに、liとして表示できますinline-block

次に、 のulためにに対して相対的に中央に配置されtext-align: centerます。

はデフォルトでulと同じ幅であるため、はに対して中央に配置されているように見えます。navlinav

nav {
  text-align: center;
  border: 1px solid black;
}
nav ul {
  list-style: none;
  padding: 0;
  margin: 0;
}
nav > ul > li {
  display: inline-block;
}
nav a {
  display: block; 
  padding: 10px 15px;
  color: #000000;
  text-decoration: none;
}
nav li:hover > ul {
  display: block;
}
nav > ul ul {
  display: none;
  position: absolute;
}
nav > ul ul > li {
  border-bottom: 1px solid #000000;
}
nav > ul ul a:hover {
  color: #666666;
}
<nav>
  <ul>
    <li><a href="/add_contact.php">Add Contact</a></li>
    <li><a href="/view_contact.php">View Contact</a></li>
    <li><a href="/tickets.php">Tickets</a>
      <ul>
        <li><a>TEST1</a></li>
        <li><a>TEST2</a></li>
      </ul>
    </li>
    <li><a href="/invoices.php">Invoices</a></li>
    <li><a href="/itemised_calls.php">Itemised Calls</a></li>
  </ul>
</nav>

于 2015-12-11T19:31:24.660 に答える
-1

まず、 をフロートするときは、divulを追加してフロートをクリアする必要があります。clear

HTML :

<div class="clear"></div>

CSS :

.clear{
    clear:both;
}

また、メニューを中央に配置するulには、例のように幅を指定する必要があり、ランダムに幅を次のように設定しました560px:

nav ul {
    list-style: none;
    width : 560px;
    margin: 0 auto;
}

見てみましょう:

http://jsfiddle.net/njuVm/6/

于 2013-09-17T01:22:12.257 に答える