【问题标题】:"Drop" <li> hover in bootstrap menu"Drop" <li> 悬停在引导菜单中
【发布时间】:2016-07-02 21:16:03
【问题描述】:

所以问题是,我必须在引导导航上制作一个悬停动画,如下所示:

我需要的动画是去 li 底部的颜色线,其余的“新” li 对象看起来几乎相同,但背景颜色不同,所以像这样:

我意识到(可能)无法更改边框顶部的位置,所以我是否需要在每个 li 上方添加一些其他对象,以便在悬停时“覆盖”它?我真的不知道如何创建它。 非常感谢您的帮助。

【问题讨论】:

    标签: javascript html css twitter-bootstrap animation


    【解决方案1】:

    我想这就是你的意思,但我可能错了。 JSFIDDLE

    div {
      width: 200px;
      height: 200px;
      background-color: grey;
      border-top: 3px solid black;
    }
    
    div:hover {
      background-color: #aaa;
      border-bottom: 3px solid black;
      border-top: none;
    }
    

    【讨论】:

    • 对不起,我知道我的英语远非完美,但事实并非如此。我需要的是你所做的之间的动画:第一个状态 - 当颜色线和其他“正方形”下降时的动画,以及最后一个状态
    • 不幸的是,这是我能给你的最佳答案。 jsfiddle.net/qz723h79
    【解决方案2】:

    您可以使用:after 伪元素 创建叠加层,并在悬停时将其高度更改为0。您也可以添加top: 100%,这将创建幻灯片到底部的过渡。

    * {
      box-sizing: border-box;
    }
    
    ul {
      display: flex;
      max-width: 400px;
      padding: 0;
      list-style-type: none;
      margin: 0 auto;
    }
    
    li {
      flex: 1;
      position: relative;
      padding: 20px 0;
      text-align: center;
      border-right: 1px solid #D8D9DB;
    }
    
    li:after {
      position: absolute;
      transition: all 0.3s ease-in;
      content: '';
      top: 0;
      left: 0;
      bottom: 0;
      right: 0;
      width: 100%;
      height: 100%;
      background: #E3E3E5;
      z-index: -1;
      border-top: 5px solid black;
    }
    
    li:hover:after {
      height: 0;
      bottom: 0;
      top: 100%;
    }
    <ul>
      <li>Link</li>
      <li>Link</li>
      <li>Link</li>
      <li>Link</li>
    </ul>

    或者您可以删除height: 0bottom: 0 并使用top: 100%,您会得到这样的结果

    * {
      box-sizing: border-box;
    }
    
    ul {
      display: flex;
      max-width: 400px;
      padding: 0;
      list-style-type: none;
      margin: 0 auto;
    }
    
    li {
      flex: 1;
      position: relative;
      padding: 20px 0;
      text-align: center;
      border-right: 1px solid #D8D9DB;
    }
    
    li:after {
      position: absolute;
      transition: all 0.3s ease-in;
      content: '';
      top: 0;
      left: 0;
      bottom: 0;
      right: 0;
      width: 100%;
      height: 100%;
      background: #E3E3E5;
      z-index: -1;
      border-top: 5px solid black;
    }
    
    li:hover:after {
      top: 100%;
    }
    <ul>
      <li>Link</li>
      <li>Link</li>
      <li>Link</li>
      <li>Link</li>
    </ul>

    【讨论】:

    • 我不知道不使用 javascript 是可能的!非常感谢!
    猜你喜欢
    • 2023-03-19
    • 2018-05-06
    • 2013-04-19
    • 2016-04-02
    • 1970-01-01
    • 2013-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多