CSS列表菜单的鼠标悬停填充/边距

3

我想知道是否有人能帮我解决一个CSS / HTML问题。

我有一张复杂的背景图片。菜单div定位在正确的位置,以覆盖它所需要覆盖的背景。整个LI都有一个鼠标悬停时显示为块级元素的图像。结果是当鼠标悬停在列表href上时,整个块的悬停效果都会起作用。

然而,问题出现在我尝试添加填充来创建列表项文本和其边框之间的缓冲区时。一些奇怪的事情开始发生了……我会添加一个屏幕截图。需要填充才能将其从边框移动。

第二个存在的问题是,如果不应用行高,我无法将文本垂直对齐到中间。这种解决方法很好用,直到项目换行……我需要能够换行菜单项文本……

下面的示例显示了当前CSS / HTML状态。菜单栏和悬停效果均按预期放置。但由于新用户发布限制,我无法将图片放在此处。您可以在213.40.100.100 / example1.jpg找到该示例。

下面的示例显示了添加填充或外边距后的状态。LI似乎完全移动了,而内部文本没有移动……

213.40.100.100 / example2.jpg

 <div id="wrapper">      
  <div
  id="header">Header</div>      <div
  id="menu">
     <ul>
       <li><a>Contact Us</a></li>
       <li><a>Recommends</a></li>
       <li><a>Deals</a></li>
       <li><a>Home</a></li>
     </ul>      </div>      <div id="content">Content</div>      
  <div id="footer">Footer</div>  
</div>




 @charset "utf-8"; /* CSS Document */



 * {  margin: 0;  padding: 0; }

 body {  
padding-top: 10px;
  background: url(background.jpg) no-repeat center top;  height:100%; 
}

 div#wrapper {  
margin: auto;  
height: 100%;  
width: 978px;
  min-width: 978px;
 }

 div#header { 
 height: 196px;
 }

 div#menu { 
 height: 69px; 
 position:
 relative; 
}

 div#menu ul { 
 height: 69px;

  list-style-type: none; 
}

 div#menu ul li { 
 display: block;  

  height: 69px; 
 width: 140px; 
 float: right; 
 padding: 5px; 
}

 div#menu ul li a:hover {
  display:block;
  background:url(menu_red_bg.jpg) repeat-x;  height: 69px;  color:#FF0;
  font-family: Arial, Helvetica, sans-serif; 
 font-size: large; 
}

 div#menu ul li a { 
 text-decoration: none; 
 color:#000;
  font-family: Arial, Helvetica, sans-serif;
  font-size: large;
 }

 div#content {  margin-top: 80px; }

你能把你的图片上传到某个地方吗?链接无效,我认为照片会帮助更好地可视化出问题所在。 - Tarik
1个回答

0

我认为您正在向错误的元素添加填充。 或者您可以向<li>添加“margin”,或者向div#menu添加填充。

我应该这样做:

一个带有黄色渐变背景、5像素填充和边距为80像素0 0 0的

#menu
; 在这个
里面,是<ul><li>...</li></ul> 您不需要向
  • 添加任何填充或边距,只需确保每个
  • 的高度小于
    #menu
    的高度+填充即可。


  • 我正在使用li:hover CSS元素来实现整个黄色条的鼠标悬停效果。由于黄色条周围有阴影,所以我不得不将其包含在实际页面的背景图像中,而不是菜单元素的背景图像中。 - Lee
    即使是在菜单元素中,您也可以使用阴影。只需使用带有透明度的 png 图像,IE6 有一个修复程序,支持透明度。但即便如此,思路是相同的,对于 li 元素使用 margin,确保菜单栏高度等于 li 高度 + 总填充量。 - Alex Angelico

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接