导航栏上的分隔符问题

时间:2015-08-10 12:06:58

标签: html css navigation

有一个有点烦人的问题,我在我的智慧结束时寻求一些帮助。

我为导航制作了一个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;
}

3 个答案:

答案 0 :(得分:3)

分隔符实际上与li next 关联到正在悬停的分隔符,因此快速解决方案是将其隐藏起来:

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

Codepen Demo

答案 1 :(得分:2)

padding:3px;代码

添加li
.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

答案 2 :(得分:1)

不要填充填充或边距,只需定义焦点<li>右侧的<li>不应具有显示边框的背景。

添加这段CSS代码:

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

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