【问题标题】:css: animate border on hover [closed]CSS:悬停时的动画边框[关闭]
【发布时间】:2015-02-19 02:20:22
【问题描述】:

我正在尝试创建带边框的菜单(请参阅http://multijuice.org/),我需要将悬停时的边框从活动元素移动到hovered。我怎么能做到这一点?也许,有人知道一些教程吗?

UPD:完成!请参阅this js file 以获取答案。谢谢大家!

【问题讨论】:

  • 很常见的问题,但我还是会再问。 你尝试了什么?
  • @Ravi 好评。我想补充一点,如果您还没有尝试过 CSS 过渡到您的 :hover,请尝试一下。否则,请发布您正在尝试的代码,以便我们进一步提供帮助。
  • 这是你想要的吗? jsfiddle.net/CristiKavi/5qw4u32y/1
  • @RaviDhoriyaツ 我试图移动 border-bottom,但这对我不起作用 - 我不知道如何将 border 移动到带有动画的 active 类元素.
  • @Kavya 不,我想通过动画将 border-bottomactive 元素移动到 :hover 元素。

标签: javascript css


【解决方案1】:

演示 - http://jsfiddle.net/victor_007/gujrud4y/

您可以使用类似的方法,但您需要更改每个页面上下划线的位置,或者您可以使用 jQuery 检查哪个<li> 具有活动类并进行相应设置

nav {
  text-align: center;
}
ul {
  list-style: none;
  margin: 0;
  padding: 0;
  display: inline-block;
  position: relative;
  font-size: 0px;
}
ul li {
  display: inline-block;
  padding: 8px 0;
  width: 80px;
  text-align: center;
  font-size: 15px;
  cursor: pointer;
}
span.border {
  height: 2px;
  background: red;
  width: 80px;
  position: absolute;
  left: 80px;
  bottom: 0;
  transition: .5s linear;
}
li:nth-child(1):hover ~ span.border {
  left: 0px;
}
li:nth-child(2):hover ~ span.border {
  left: 80px;
}
li:nth-child(3):hover ~ span.border {
  left: 160px;
}
li:nth-child(4):hover ~ span.border {
  left: 240px;
}
<nav>
  <ul>
    <li>one</li>
    <li class="active">two</li>
    <li>three</li>
    <li>four</li>
    <span class="border"></span>
  </ul>
</nav>

【讨论】:

  • 谢谢!但我做错了什么? :hover 事件不起作用。请看that link
  • &lt;li&gt;添加一个宽度,span应该在ul之下
  • 我不能在ul下添加span,因为它是wordpress自动生成的。
  • 好的,所以你需要使用 jquery
  • 多么粗鲁的@KirillDanshin!您之前可能已经提到过 Wordpress。这将节省大量的答案海报时间。在这种情况下,Vitorino 的努力对您没有用(除非您手动自定义 WP)。请考虑下次问更详细的问题,添加适当的标签。
【解决方案2】:

尝试在您的代码中更改此 css 类:

改变这个

#main-nav .current-menu-item a, #main-nav .current_page_item a, .selected{
     border-bottom: 3px solid #f5503b;
     padding-bottom: 72px;
     padding-left: 10px;
     padding-right: 10px;
}

#main-nav .current-menu-item a, #main-nav .current_page_item a, .selected, #main-nav li a:hover {
    border-bottom: 3px solid #f5503b;
}

然后像这样将padding 传递给.#main-nav li a 类:

#main-nav li a {
   border: 0 none;
   color: #111;
   display: block;
   height: 36px;
   line-height: 36px;
   margin: 0 10px;
   padding-bottom: 72px;
   padding-left: 10px;
   padding-right: 10px;
}

【讨论】:

  • 好的,但你没有回答我的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-15
  • 1970-01-01
  • 1970-01-01
  • 2014-11-02
相关资源
最近更新 更多