CSS导航精灵悬停不起作用

时间:2013-04-20 20:33:39

标签: html css hover sprite

我在尝试为我的精灵导航实现CSS部分时遇到问题,带来了" hover"我的精灵对悬停的影响。如果我显示代码,则更容易解释。

CSS:

#nav {

    width:837px;
    float:left;
    margin:0px 0px 0px 30px;
    background:url(../images/withtext.gif) repeat-x;
    height:79px;
    position: relative;
    top: -45px;
}   


#nav li {
 margin:0;
 padding:0;
 list-style-type:none;
 display:inline; 
 height:79px;
 text-align:center; 
 float:left; 
 line-height:79px; 
 font-family:Georgia, "Times New Roman", Times, serif;
 }



#nav a {
 display:block;
 height:79px; 
 color:#311f11;
 text-decoration:none;
 font-size:13px;
 }

#nav a:hover {
 background-image:url(withtext.gif); 
 color:#fff;
 }



#nav .snowboard { width:240px; }
#nav .snowboard a:hover { background-position: 0px bottom; }

Html:

<ul id="nav">
   <li class="snowboard"><a href="#">Snowboard</a></li>
   <li class="briller"><a href="#">Briller</a></li>
   <li class="ski"><a href="#">Ski</a></li>
   <li class="stovler"><a href="#">Stovler</a></li>
   <li class="handlevogn"><a href="#">Handlevogn</a></li>

</ul>

导航图片:

[1] http://i.imgur.com/zkVmoEN.gif&#34;具有被动和悬停状态的导航栏&#34;

目前的导航状态:

[2] http://i.imgur.com/oZPK8kd.jpg&#34;在浏览器中导航&#34;

那么如何才能使它在悬停时向下移动整个图像?

提前帮助非常感谢!

3 个答案:

答案 0 :(得分:2)

这是你的工作solution

#nav ul, #nav li{
  margin: 0;
  padding: 0;
}
#nav {

    width:837px;
    float:left;
    margin:0px 0px 0px 30px;
    background:url(http://i.imgur.com/zkVmoEN.gif) repeat-x;
    height:79px;
    position: relative;
}   

#nav li {
 margin:0;
 padding:0;
 list-style-type:none;
 display:inline; 
 height:79px;
 text-align:center; 
 float:left; 
 line-height:79px; 
 font-family:Georgia, "Times New Roman", Times, serif;
 }

#nav a {
 display:block;
 height:79px; 
 color:#311f11;
 text-decoration:none;
 font-size:13px;
  width:150px;
  text-indent:-9999px;
 }
.snowboard a:hover {
  background-image: url(http://i.imgur.com/zkVmoEN.gif);
  background-position: -40px 80px;
}
.briller a:hover {
  background-image: url(http://i.imgur.com/zkVmoEN.gif);
  background-position: -190px 80px;
}
.ski a:hover {
  background-image: url(http://i.imgur.com/zkVmoEN.gif);
  background-position: -340px 80px;
}
.stovler a:hover {
  background-image: url(http://i.imgur.com/zkVmoEN.gif);
  background-position: -490px 80px;
}
.handlevogn a:hover {
  background-image: url(http://i.imgur.com/zkVmoEN.gif);
  background-position: -640px 80px;
}

答案 1 :(得分:1)

尝试:

#nav li a {
 display:block;
 height:79px; 
 color:#311f11;
 text-decoration:none;
 font-size:13px;
 }

#nav li a:hover {
 background-image:url(withtext.gif); 
 color:#fff;
 }



#nav li.snowboard { width:240px; }
#nav li.snowboard a:hover { background-position: 0px -79px; }/*Here change as needed.*/

Css类总是使用标签,例如:li.class{} 尽量保持选择者在同一水平上交易:

foo foo2 foo2 a{}
foo foo2 foo2 a:hover{}

在背景位置使用px阴性和阳性。

  

注意 - 关闭:我建议您在制作css轮子时遇到问题   在各种浏览器中,您尝试使用CSS RESET:

     

* {     余量:0;     填充:0;     列表样式类型:无;   }

答案 2 :(得分:1)

如果您遇到CSS问题,可能是因为您只是在文本中添加悬停效果。您不能将文本悬停在所需的位置,并在背景中显示背景图像。如果您愿意,可以试试这个:

CSS:

    #nav{background:url(../images/withtext.gif) 
    repeat-x;
    height:100px;
    width:100%;
    }
li {
background-color: #??????;
}
li a {
color: black;
}
li:hover {
background-color: #something_different;
}
li a:hover {
color:#something_different;
}

或者,如果你想让li课程各不相同,你可以这样做:

.snowboard li:hover {
Some code...
}

.snowboard li a:hover {
some code
}

如果您的布局是这样的,您基本上可以做任何事情。