带有过渡的CSS3仅下拉菜单

时间:2016-04-17 08:29:07

标签: css css3

我尝试使用过渡创建一个仅限CSS3的下拉菜单,但它并不像我希望的那样100%工作。即使您将鼠标悬停在展开的下拉菜单上,我也希望下划线悬停状态相同。

这是我的第一次尝试: http://codepen.io/Winterfox/pen/wGmEbY

ul {
  text-align: center;
  li {
    display:inline-block;
    margin-right: 15px;
    transition:all 0.3s ease-in-out;
    &:hover {
      .submenu {
        height: 85px;
      }
    }
    .submenu {
      overflow:hidden;
      position:absolute;
      left: 0;
      width: 100%;
      background-color: #3862a0;
      height: 0;
      margin-top: 10px;
      line-height: 40px;
      box-sizing:border-box;
      transition:height 0.3s ease-in-out;
      transition-delay: 0.1s;
      a {
        color: #fff;
        margin-top: 20px;
        font-size: 16px;
        &:hover {
          color: #fff;
          text-decoration:underline;
        }
      }
    }
    a {
      color: #999;
      display: block;
      padding: 0 7px 0 7px;
      margin: 0 0 0 0;
      text-decoration: none;
      position: relative;
      &:hover {
        color: #3862a0;
        &::before {
          visibility: visible;
          transform: scale(1, 1);
        }
      }
      &::before {
        content: "";
        position: absolute;
        width: 100%;
        height: 3px;
        bottom: -10px;
        left: 0px;
        background-color: #3862a0;
        transition: all 0.2s ease-in-out;
        transform: scale(0, 0);
        visibility: hidden;
      }
    }
  }
}

正如您可以看到,悬停展开的下拉菜单时会删除悬停状态。我尝试通过将转换移动到li元素来解决此问题,如下所示: http://codepen.io/Winterfox/pen/ZWxqvp

但是当我在悬停状态下更改位置时,我遇到了1#的问题,当它再次关闭时,下拉列表看起来并不好看。 2#菜单文本的蓝色下划线现在显示在页面底部。

有关如何使用CSS3解决此问题的任何建议吗?

1 个答案:

答案 0 :(得分:0)

我认为您的想法朝着正确的方向前进,但不是将样式应用于li,您只需将锚点移动到li:hover块内,如:

li {
    ...
    &:hover {
        ...
        a {        
            color: #3862a0;
            &::before {
                visibility: visible;
                transform: scale(1, 1);
            }
        }
    }
}

此处的完整代码:http://codepen.io/anon/pen/VaxrwE