HTML CSS导航菜单定位文本和图像

时间:2014-03-08 05:36:47

标签: html css image navigation positioning

我正在尝试创建一个HTML和CSS导航菜单,每个菜单项都有一个图像和文本。我可以让这个工作,但我不知道如何定位图像或文本。我希望每个图像都以其容器为中心,其下面的文本以其容器为中心。

这是代码,但我不确定如何获得正确的定位

HTML

<div id="pageTop"> 
    <nav>
        <ul>
            <li><a href="apps/fade-ifit.html"> <img src="images/search.png" alt="" class="headerCon" /> <navText> Home </navText> </a> </li>
            <li><a href="about.html">About</a></li>
            <li><a href="help.html">Help</a></li>
            <li><a href="home.html">Home</a></li>
            <li><a href="about.html">About</a></li>
            <li><a href="help.html">Help</a></li>
            <li><a href="home.html">Home</a></li>
            <li><a href="about.html">About</a></li>
            <li><a href="help.html">Help</a></li>
        </ul>
    </nav>
</div>

CSS

#pageTop {
    height: 172px;
    border: 1px red dashed;
}

nav {
  background-color: #fff;
  border: 0px solid #dedede;
  border-radius: 10px; /* edges */
  box-shadow: 0 2px 2px -1px rgba(0, 0, 0, 0.055);
  color: black;
  display: block;
  margin: 0px auto;
  margin-top: 35px;
  overflow: hidden;
  width: 995px;
  height: 100px;
}

nav ul {
    margin: 0px;
    padding: 0px;
}

nav ul li {
    display: inline-block;
    list-style-type: none;
    background-color: #c5c5c5;
    -webkit-transition: all 0.2s;
    -moz-transition: all 0.2s;
    -ms-transition: all 0.2s;
    -o-transition: all 0.2s;
    transition: all 0.2s; 
    width: 107px;
    text-align: center;
}


navtext {
    text-align: center;
    font-family: Century Gothic, Gillsans-Light, Helvetica;
    color: #676767;
    font-size: 12px;

}

.headerCon{


}

nav > ul > li > a {
    color: #aaa;
    display: block;
    line-height: 56px;
    padding-top: 50px;
    text-decoration: none;
}


nav > ul > li:hover {
    background-color: black;
}

nav > ul > li:hover > a {
    background-color: black;
}

nav > ul > li:hover > a > .caret {
    background-color: black;
}

/*
nav > ul > li > div {
    background-color: black;
    border-top: 0;
    border-radius: 0 0 1px 1px;
    display: none;
    margin: 0;
    opacity: 0;
    position: absolute;
    width: 100px;
    visibility: hidden;
    z-index: 100;

    -webkit-transiton: opacity 0.2s;
    -moz-transition: opacity 0.2s;
    -ms-transition: opacity 0.2s;
    -o-transition: opacity 0.2s;
    -transition: opacity 0.2s;
}
*/

nav > ul > li:hover > div {
    display: block;
    opacity: 1;
    visibility: visible;
}

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

2 个答案:

答案 0 :(得分:3)

您可以使<img>元素块元素并使用auto边距对其进行居中。

ul img {
    display : block;
    margin  : 0 auto;
}

另一种方法是使用background imagesbackground position

ul li.home {
    background-image    : url(...);
    background-position : center;
}

您可能还想删除<li>元素之间的空格。我喜欢这样做,省略可选的结束标记,这样你就可以:

<ul>
    <li><a href=...><img src=... />Item 1
    <li><a href=...><img src=... />Item 2
    ...
</ul>

可以在此处找到删除空格的其他选项:How to remove the space between list items

修改JSFiddle添加了一个精简版本,以说明这是如何运作的。

答案 1 :(得分:0)

<li>

中添加换行符
   <li><a href="..."> <img src="..." class="headerCon" /> <br/>
        <navText> Home </navText> </a> 
   </li>

我也会取出<navText>,这是无效的HTML

   <li><a href="..."> <img src="..." class="headerCon" /> <br/>
        Home </a> 
   </li>