【问题标题】:CSS navbar slider highlight animation?CSS导航栏滑块突出显示动画?
【发布时间】:2017-03-17 17:18:51
【问题描述】:

我正在尝试创建一个带有下划线的顶部导航栏,该下划线在悬停时在每个链接/按钮下方滑动。我猜转换或关键帧会起作用,但我似乎无法让它起作用。

这是我最好的镜头,但我只能让父导航或 div 成为触发器,而不是实际的链接本身,而且我无法让栏滑动到相对于链接的位置(现在它只是向右平移 500px)。

任何帮助将不胜感激!

#header {
	position: fixed;
	background-color: rgba(255, 255, 255, 0.7);
	width: 100%;
	top: 0px;
	left: 0px;
  z-index: 1;
  text-align: center;
  padding: 15px;
}

.nav ul li {
  font-family: 'Exo', sans-serif;
  text-transform: uppercase;
  list-style-type: none;
  display: inline;
  padding: 11px;
}

.slider {
	position: absolute;
	bottom: 0px;
	left: -50px;
	width: 50px;
	height: 5px;
	background-color: rgba(52, 152, 219, 0.3);
	transition-property: transform;
	transition-duration: 300ms;
	transition-timing-function: ease-in-out;
	transition-delay: 0s;
}

.nav:hover .slider {
	  transform: translate(500px);
}

.nav ul li a {
  text-decoration: none;
  margin: 0px 30px 0px 30px;
  color: rgba(0, 0, 0, 0.5);
<header id="header">
    			<nav class="nav">
    				<ul class="list">
              <div class="slider"></div>
    					<li class="btn"><a href="#home">Home</a></li>
    					<li class="btn"><a href="#about">About</a></li>
    					<li class="btn"><a href="#portfolio">Portfolio</a></li>
    					<li class="btn"><a href="#contact">Contact</a></li>
    				</ul>
    			</nav>
  	    </header>

【问题讨论】:

    标签: html css animation css-animations navbar


    【解决方案1】:

    你可能会去这样的事情吗?

    $('li').on('click', function() {
      $('.current').removeClass('current');
      $(this).addClass('current');
    }).has("a[href*='" + location.pathname + "']").addClass("current");
      .nav {
        width: 50%;
        margin: 0 auto;
        font-family: 'Exo', sans-serif;
        text-transform: uppercase;
        list-style-type: none;
        display: inline;
        padding: 11px;
      }
    
    ul li {
        display: inline;
        text-align: center;
      }
    
      a {
      display: inline-block;
      width: 25%;
      margin: 0;
      text-decoration: none;
      color: black;
     }
    
     .home.current ~ hr,
       ul li.home:hover ~ hr {
       margin-left: 0%;
     }
       
      .about.current ~ hr,
       li.about:hover ~ hr {
          margin-left: 25%;
       }
      
      .portfolio.current ~ hr,
       li.portfolio:hover ~ hr {
        margin-left: 50%;
       }
    
      .contact.current ~ hr,
       li.contact:hover ~ hr {
       margin-left: 75%;
       }
    
    hr {
     height: 3px;
     width: 25%;
     margin: 0;
     background-color: rgba(52, 152, 219, 0.3);
     transition-property: transform;
     transition: .3s ease-in-out;
       }
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
    <header id="header">
      <div class="nav">
        <ul>
          <li class="home"><a href="#home">Home</a></li><!--
       --><li class="about"><a href="#about">About</a></li><!--
       --><li class="portfolio"><a href="#portfolio">Portfolio</a></li><!--
       --><li class="contact"><a href="#contact">Contact</a></li>
         <hr />
        </ul>
     </div>
    </header>

    或者你想让下划线从屏幕的一侧出来?

    编辑:添加了 js/jQuery,使菜单项在点击时保持不变。

    【讨论】:

    • 很好,谢谢!我在考虑将下划线粘贴到选择的任何链接上,但是我认为这使得它更难滑动到正确的位置,因为默认位置会根据您所在的页面而有所不同。此解决方案的唯一问题是边距相对于屏幕尺寸(而不是实际链接)发生变化,因此当我缩小屏幕尺寸时,栏滑到错误的位置。
    • @Sean 嘿伙计,刚刚添加了一些 js/jQuery 以使下划线粘在当前选定的链接上。不过,我对您的其他问题有些困惑(屏幕宽度的变化)。你能详细说明一下吗?
    • 太棒了,伙计。正是我想要做的。谢谢你的帮助。试图避免使用 JavaScript(因为我还没有真正学会它),但我想有时你只是需要它!
    • 没问题。如果您想学习 JavaScript,我建议您阅读 freecodecamp.com 教程。在所有自学网站中,在我看来,这个是最好的。
    猜你喜欢
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-19
    • 2020-06-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多