2014-12-06 149 views
0

我想在红色DIV中水平和垂直对齐我的菜单项和标志图片。我怎么能做到这一点?我试着将左右边距设置为自动,并将垂直对齐设置为居中,但这不起作用。感谢您的帮助css垂直和水平对齐问题

参见:http://jsfiddle.net/gm2wzL6z/

enter image description here

HTML:

<div id="nav-container"> 
    <nav> 
     <ul id="navlist"> 
      <li id="active"><a href="#" id="current">Item one</a> 
      </li> 
      <li><a href="#">Item two</a> 
      </li> 
      <li><a href="#">Item three</a> 
      </li> 
      <li> 
       <img src="http://lorempixel.com/output/fashion-q-g-227-148-4.jpg"> 
      </li> 
      <li><a href="#">Item four</a> 
      </li> 
      <li><a href="#">Item five</a> 
      </li> 
     </ul> 
    </nav> 
</div> 

CSS:

#nav-container { 
    height: 300px; 
    background: red; 
} 
#navlist li { 
    display: inline; 
    list-style-type: none; 
    padding-right: 20px; 
} 
+0

http://jsfiddle.net/abhitalks/gm2wzL6z/3/ – Abhitalks 2014-12-06 11:18:48

+0

只是我自己对此的一点想法。以这种方式做任何菜单几乎是不可能的,以使响应/移动友好。所以,总是有一个移动版本准备好在更小的屏幕尺寸上取代它。 – 2014-12-06 11:38:43

回答

0

使用display:table/table-cellvertical-align

#nav-container { 
 
    height: 300px; 
 
    background: red; 
 
    display:table; 
 
    width:100%; 
 
} 
 
#nav-container nav{ 
 
    display: table-cell; 
 
    height: 300px; 
 
    vertical-align: middle; 
 
    text-align:center; 
 
} 
 

 
#nav-container nav li{ 
 
    display:inline-block; 
 
    vertical-align: middle; 
 
}
<div id="nav-container"> 
 
    <nav> 
 
     <ul id="navlist"> 
 
      <li id="active"><a href="#" id="current">Item one</a> 
 
      </li> 
 
      <li><a href="#">Item two</a> 
 
      </li> 
 
      <li><a href="#">Item three</a> 
 
      </li> 
 
      <li> 
 
       <img src="http://lorempixel.com/output/fashion-q-g-227-148-4.jpg"> 
 
      </li> 
 
      <li><a href="#">Item four</a> 
 
      </li> 
 
      <li><a href="#">Item five</a> 
 
      </li> 
 
     </ul> 
 
    </nav> 
 
</div>

JSFiddle

1

#nav-container { 
 
    height: 300px; 
 
    background: red; 
 
} 
 
#navlist li { 
 
    display: inline-block; /* this for personal preference :) */ 
 
    vertical-align: middle; /* this for alignment*/ 
 
    list-style-type: none; 
 
    padding-right: 20px; 
 
}
<div id="nav-container"> 
 
    <nav> 
 
     <ul id="navlist"> 
 
      <li id="active"><a href="#" id="current">Item one</a> 
 
      </li> 
 
      <li><a href="#">Item two</a> 
 
      </li> 
 
      <li><a href="#">Item three</a> 
 
      </li> 
 
      <li> 
 
       <img src="http://lorempixel.com/output/fashion-q-g-227-148-4.jpg"> 
 
      </li> 
 
      <li><a href="#">Item four</a> 
 
      </li> 
 
      <li><a href="#">Item five</a> 
 
      </li> 
 
     </ul> 
 
    </nav> 
 
</div>

+0

谢谢Paulie的回答。剩下的唯一问题是NAV菜单不是水平居中的,它似乎与页面的左侧对齐。非常感谢 – Greg 2014-12-06 11:21:56

0

为了这个工作,你需要3件事情。

1)作为容器的主分区 2)容器内的div,其垂直高度和容器的100%宽度,因为您必须进行相对定位才能进行垂直对齐。 3)最后一个容器,用于完成您的保证金余额,保证金右侧自动。它必须具有比前两个容器更小的设定宽度。4)所有的内容都位于水平分区内 5)不要设置主容器的高度,因为这会限制垂直对齐超出这个范围。

#nav-container { 
    background: red; 
    width: 100% 
} 

#vertical-align { 
    position: relative; 
    top: 50%; 
    width:100% 
    -webkit-transform: translateY(-50%); 
    -ms-transform: translateY(-50%); 
    transform: translateY(-50%); 
} 
#horizontal-align{ 
width: 100% 
max-width: 700px; 
margin-left: auto; 
margin-right: auto; 
}