【问题标题】:Semi-transparent menu item on hover to background image悬停到背景图像时的半透明菜单项
【发布时间】:2015-12-30 19:35:41
【问题描述】:

有没有办法让菜单项悬停对背景图像透明? 如您所见,背景中的图像设置了 background-size 封面选项,并且背景可以缩放到不同的屏幕尺寸。

HTML:

<div class="header">
  <p></p>
  <div class="menu-container">
    <ul>
      <li><a href="#" title="">Menu 1</a></li>
      <li><a href="#" title="">Menu 2</a></li>
      <li><a href="#" title="">Menu 3</a></li>
    </ul>
  </div>
  <p></p>
</div>

CSS:

div.header{
  background: url('http://de.fwsx.co/mbergs/images/home-header.jpg') no-repeat;
  background-size: cover;
  height: 400px;
}  

p:first-child,
p:last-child {
  height: 50px;
}

div.menu-container {
  background: #fff;
}

div.menu-container ul li {
  display: inline-block;
  list-style: none;
}

div.menu-container ul li a {
  display: block;
  height: 50px;
  line-height: 50px;
  padding: 0 20px;
}

div.menu-container ul li a:hover {
  background: rgba(64,161,47, 0.6);
}

jsFiddle:https://jsfiddle.net/qwLp9f9y/1/

编辑:全宽菜单容器必须保持纯白色。

谢谢。

【问题讨论】:

标签: html css


【解决方案1】:

我建议切换到表格布局以实现此目的:https://jsfiddle.net/Lv0rkhun/1/

我想不出使用 ul/li 元素的方法。

  <table class="menu-container" cellspacing="0" cellpadding="0">
    <tr>
      <td><div></div></td>
      <td><a href="#" title="">Menu 1</a></td>
      <td><a href="#" title="">Menu 2</a></td>
      <td><a href="#" title="">Menu 3</a></td>
      <td></td>
    </tr>
  </table>

【讨论】:

  • 谢谢,但我需要 ul/li 布局。我尝试添加 ::before 和 ::after 元素,但没有成功。
  • @Janiis 请问你为什么需要它是 ul/li?也许我们可以解决这个问题,因为没有桌子会很困难。
  • 谢谢。我也需要它是响应式菜单,所以最好的选择是无表布局。
  • 这里是实时/演示菜单和布局:de.fwsx.co/mbergs 并且您可以看到它也是嵌套菜单,因此没有表格布局选项。
  • 我投入时间,然后你来说你需要这个和那个......你应该从一开始就说你需要什么
【解决方案2】:

我已经从容器中移除了背景(只有通过跨浏览器的方式来解决这个问题)。

为了能够在视觉上重现容器上的白色背景,我在 li 上添加了小阴影(以填补一个和下一个之间的空白),并在第一个和最后一个上添加了一个 before 伪元素,覆盖两边的边距

div.header{
  background: url('http://de.fwsx.co/mbergs/images/home-header.jpg') no-repeat;
  background-size: cover;
  height: 400px;
}  

p:first-child,
p:last-child {
  height: 50px;
}


div.menu-container ul li {
  display: inline-block;
  list-style: none;
  background: #fff;
  box-shadow: 5px 0px white;
  position: relative;
}

.menu-container li:first-child:before {
  content: "";
  position: absolute;
  width: 500px;
  height: 100%;
  top: 0px;
  right: 100%;
  background-color: white;
}
.menu-container li:last-child:before {
  content: "";
  position: absolute;
  width: 500px;
  height: 100%;
  top: 0px;
  left: 100%;
  background-color: white;
}
div.menu-container ul li a {
  display: block;
  height: 50px;
  line-height: 50px;
  padding: 0 20px;
}

div.menu-container li:hover {
  background: rgba(64,161,47, 0.4);
}
<div class="header">
  
  <p>

  </p>
  
  <div class="menu-container">
    <ul>
      <li><a href="#" title="">Menu 1</a></li>
      <li><a href="#" title="">Menu 2</a></li>
      <li><a href="#" title="">Menu 3</a></li>
    </ul>
  </div>
  
  <p>

  </p>
  
</div>

【讨论】:

  • 谢谢,这就是我要找的!
  • 很高兴它有帮助!
猜你喜欢
  • 2011-09-15
  • 1970-01-01
  • 1970-01-01
  • 2020-12-12
  • 1970-01-01
  • 2013-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多