【问题标题】:Divider issue on Navigation Bar导航栏上的分隔线问题
【发布时间】:2015-08-10 20:14:40
【问题描述】:

遇到了一个有点烦人的问题,我束手无策,因此寻求帮助。

我已经制作了一个用于导航的 CodePen - http://codepen.io/nickelse/pen/yNwPwv

当您将鼠标悬停在其中一个导航链接上时,它会覆盖左侧分隔线但显示右侧分隔线,有人对我如何让链接悬停在两个分隔线或位于两者中间有任何建议吗?

干杯,

尼克

<div class="navigation cf">
  <div class="menu cf">
    <ul>
      <li><a href="#">Poker Chips</a></li>
      <li>
        <a href="#">Poker Chip Sets<i class="fa fa-caret-down"></i></a>
        <ul class="sub-menu">
          <li><a href="#">Sub Link 1</a></li>
          <li><a href="#">Sub Link 2</a></li>
          <li><a href="#">Sub Link 3</a></li>
          <li><a href="#">Sub Link 4</a></li>
        </ul>
      </li>
      <li><a href="#">Poker Tables</a></li>
      <li><a href="#">Poker Chip Cases</a></li>
      <li><a href="#">Poker Playing Cards</a></li>
      <li><a href="#">Poker Accessories</a></li>
    </ul>
  </div>
</div>


body {
  background: #272727;
}

/*----- Menu Outline -----*/
.navigation {
  width: 100%;
  background: #454545;
  border-bottom: 3px solid #666;
}

.menu {
  width: 1000px;
  margin: 0px auto;
  text-align: center;
  font-size: 0;
}

.menu li {
  margin: 0px;
}

.menu a {
  transition: all linear 0.15s;
  color: #fff;
}

.menu li:hover > a {
  text-decoration: none;
  color: #ddd;
}

.menu .arrow {
  font-size: 11px;
  line-height: 0%;
}

/*----- Top Level -----*/
.menu > ul {
  margin: 0;
  padding: 0;
}

.menu > ul > li {
  display: inline-block;
  position: relative;
  font-size: 14px;
  background: url(http://i.imgur.com/ijNENpN.png) no-repeat left 50%;
}

.menu > ul > li:first-child {
  background: none;
}

.menu > ul > li > a {
  padding: 20px 24px;
  display: block;
}

.menu > ul > li:hover > a{
  background: #666;
}

/*----- Bottom Level -----*/
.menu li:hover .sub-menu {
  z-index: 1;
  opacity: 1;
}

.sub-menu {
  width: 280px;
  padding: 0;
  position: absolute;
  top: 100%;
  left: 0px;
  z-index: -1;
  opacity: 0;
  transition: opacity linear 0.2s;
  background: #666;
  text-align: left;
}

.sub-menu li {
  display: block;
  font-size: 14px;
}

.sub-menu li a {
  padding: 10px 24px;
  display: block;
  color: #fff;
}

.sub-menu li a:hover {
  background: #353535;
}

.navigation .fa.fa-caret-down   {
    margin-left: 6px;   
}


.cf:before,
.cf:after {
  content: " "; /* 1 */
  display: table; /* 2 */
}

.cf:after {
  clear: both;
}

/** For IE 6/7 only - Include this rule to trigger hasLayout and contain floats. */
.cf {
  *zoom: 1;
}

【问题讨论】:

  • 我承认我的第一个想法是不要使用背景图像作为分隔线...您最好使用边框或伪元素。
  • @Paulie_D 同意,图片似乎没有必要。

标签: html css navigation


【解决方案1】:

分隔线实际上与li next 相关联到被悬停的那个,所以快速的解决方案是将它隐藏起来:

.menu li:hover + li {
  background-image: none;
}

Codepen Demo

【讨论】:

  • 我猜只是幸运,:)
  • 欣赏,让我发疯!谢谢! @Paulie_D
【解决方案2】:

li 标签添加padding:3px;

.menu > ul > li {
  padding:3px; //added this
  display: inline-block;
  position: relative;
  font-size: 14px;
  background: url(http://i.imgur.com/ijNENpN.png) no-repeat left 50%;
}

Demo here

【讨论】:

    【解决方案3】:

    不要乱用填充或边距,只需定义焦点&lt;li&gt;右侧的&lt;li&gt;不应该有显示边框的背景。

    添加这段 CSS 代码:

    .menu > ul > li:hover + li {
      background: none;
    }
    

    http://codepen.io/anon/pen/MwxrGx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多