站长资源网络编程

jquery+css3实现熊猫tv导航代码分享

整理:jimmy2026/7/31浏览2
简介实现原理请看以下源代码
  • jquery+css3实现熊猫tv导航代码分享

    实现原理

    请看以下源代码

    <div class="ph-nav" data-pdt-block="pheader-n">
          <div class="ph-nav_shadow" style="left: 0px; width: 62px;"></div>
          <ul>
            <li class="ph-nav_item ph-nav_item--current">
              <a href="/" rel="external nofollow" >
              首页
              
              </a>
            </li>
            <li class="ph-nav_item">
              <a href="/all" rel="external nofollow" >
              全部
              </a>
            </li>
            ...
          </ul>
    </div>

    绿色的框对应的代码是class为ph-nav_shadow的div。

    通过jquery来改变遮罩层(.ph-nav_shadow)的left与width值,css3加上动画效果实现绿色框的动画。

    通话jquery对li标签类的添加与删除实现文字颜色的变化。(.ph-nav_item--current)。

    具体实现

    编写html代码

     <header>
        <div class="w">
          <div class="header_logo l"><img src="/UploadFiles/2021-04-02/logo.png">
    
    

    编写css代码

    .header_nav{
      width: 592px;
      height: 50px;
      position: relative;
    }
    .header_nav_shadow{
      position: absolute;
      top: 0;
      left: 0;
      bottom: 0;
      width: 72px;
      background: #F29400;
      transition: all ease-in-out .3s;
      z-index: 1;
    }
    .header_nav ul li{
      display: block;
      float: left;
      overflow: hidden;
      height: 50px;
      line-height: 50px;
      transition: all ease-in-out .3s;
      position: relative;
      z-index: 2;
    }
    .header_nav_li-hover a{
      color: #fff;
    }
    .header_nav ul li a{
      display: block;
      padding: 0 20px;
      height: 50px;
      line-height: 50px;
      transition: all ease-in-out .3s;
    }

    编写js代码(主要)

    $(document).ready(function() { 
      $(".header_nav ul li").hover(function() { 
    
        var change = getLiData($(this));
        $(".header_nav_shadow").css('left',change[0]).width(change[1]);
        $(".header_nav ul").children("li:first-child").removeClass("header_nav_li-hover"); 
        $(this).addClass("header_nav_li-hover"); 
      }, function() { 
        $(".header_nav_shadow").css('left',0).width('72');
        $(this).removeClass("header_nav_li-hover"); 
        $(".header_nav ul").children("li:first-child").addClass("header_nav_li-hover");
      }); 
    });
    // 根据this li 获取需要改变的长度和偏移量
    function getLiData(li){
      var left = 0;
      for(let i=0;i<li.index();i++){
        left+=$(".header_nav ul li:eq("+i+")").width();
      }
      var change=[left,li.width()];
      return change;
    }