沃梦达 / IT编程 / 前端开发 / 正文

jquery实现带渐变淡入淡出并向右依次展开的多级菜单效果实例

要实现带渐变淡入淡出并向右依次展开的多级菜单效果,我们需要用到jQuery库的一些函数和特性。下面,我将会提供一个详细的攻略,使您可以轻松地实现菜单效果。

要实现带渐变淡入淡出并向右依次展开的多级菜单效果,我们需要用到jQuery库的一些函数和特性。下面,我将会提供一个详细的攻略,使您可以轻松地实现菜单效果。

步骤一:创建HTML结构

首先,我们需要创建一个HTML结构来存储菜单内容。假设我们有一个三级菜单,下面是一个典型的HTML结构:

<div class="menu">
  <ul>
    <li><a href="#">一级菜单1</a>
      <ul>
        <li><a href="#">二级菜单1</a>
          <ul>
            <li><a href="#">三级菜单1</a></li>
            <li><a href="#">三级菜单2</a></li>
          </ul>
        </li>
        <li><a href="#">二级菜单2</a></li>
        <li><a href="#">二级菜单3</a></li>
      </ul>
    </li>
    <li><a href="#">一级菜单2</a></li>
    <li><a href="#">一级菜单3</a></li>
  </ul>
</div>

注意,每个菜单项都有一个嵌套的列表,以便存储它的子菜单。另外,您可以使用CSS样式对菜单进行样式化。

步骤二:处理菜单项

之后,我们需要编写代码来处理菜单项。为了实现带渐变淡入淡出并向右依次展开的多级菜单效果,我们需要使用jQuery的动画函数。下面是代码示例:

$(document).ready(function(){
  $('ul li').hover(function(){
    $(this).children('ul').stop(true, true).fadeIn(200);
  }, function(){
    $(this).children('ul').stop(true, true).fadeOut(200);
  });
});

这段代码将在文档加载完成后运行,当鼠标悬停在菜单项上时,它将选择该项的子菜单并使用动画函数fadeIn()向右依次展开。当鼠标离开菜单项时,它将使用fadeOut()函数淡出子菜单。

步骤三:添加动态效果

此时,菜单已经可以显示出来,但是还没有任何动态效果。为了给它添加动态效果,我们需要使用jQuery队列函数。下面是代码示例:

$(document).ready(function(){
  $('ul li').hover(function(){
    $(this).children('ul').stop(true, true).fadeIn(200);
    $(this).children('ul').find('li').each(function(i){
      $(this).delay(100 * i).animate({opacity: '1', left: '0'}, 200);
    });
  }, function(){
    $(this).children('ul').stop(true, true).fadeOut(200);
    $(this).children('ul').find('li').each(function(i){
      $(this).delay(100 * i).animate({opacity: '0', left: '20px'}, 200);
    });
  });
});

这段代码添加了一个each()函数,使得每个菜单项都可以逐个淡入淡出并向右依次展开。具体来说,它将使用delay()函数为每个菜单项添加了一个延迟(100 * i),使得每个菜单项都能以顺序进行动画效果,然后使用animate()函数来定义菜单项的透明度和左侧的位置。当鼠标移动到其他菜单项上时,它将使用fadeOut()函数将菜单项从右依次收起。

至此,我们已经完成了带渐变淡入淡出并向右依次展开的多级菜单效果的实现。

示例说明

下面是两个具体的代码示例,您可以在实现过程中参考它们。

示例一:创建基本结构

<!DOCTYPE html>
<html>
<head>
  <title>jQuery多级菜单效果</title>
  <meta charset="UTF-8">
  <style>
    * { margin: 0; padding: 0; }
    html, body { height: 100%; }
    ul, li, a { display: block; }
    .menu { position: relative; }
    ul { position: absolute; top: 0; left: 0; }
    ul ul { top: 0; left: 100%; }
    ul li { position: relative; }
    ul li ul { display: none; }
    a { color: #333; padding: 10px; }
  </style>
</head>
<body>
  <div class="menu">
    <ul>
      <li><a href="#">一级菜单1</a>
        <ul>
          <li><a href="#">二级菜单1</a>
            <ul>
              <li><a href="#">三级菜单1</a></li>
              <li><a href="#">三级菜单2</a></li>
            </ul>
          </li>
          <li><a href="#">二级菜单2</a></li>
          <li><a href="#">二级菜单3</a></li>
        </ul>
      </li>
      <li><a href="#">一级菜单2</a></li>
      <li><a href="#">一级菜单3</a></li>
    </ul>
  </div>
  <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
  <script>
    $(document).ready(function(){
      $('ul li').hover(function(){
        $(this).children('ul').stop(true, true).fadeIn(200);
        $(this).children('ul').find('li').each(function(i){
          $(this).delay(100 * i).animate({opacity: '1', left: '0'}, 200);
        });
      }, function(){
        $(this).children('ul').stop(true, true).fadeOut(200);
        $(this).children('ul').find('li').each(function(i){
          $(this).delay(100 * i).animate({opacity: '0', left: '20px'}, 200);
        });
      });
    });
  </script>
</body>
</html>

示例二:增加鼠标进入效果

<!DOCTYPE html>
<html>
<head>
  <title>jQuery多级菜单效果</title>
  <meta charset="UTF-8">
  <style>
    * { margin: 0; padding: 0; }
    html, body { height: 100%; }
    ul, li, a { display: block; }
    .menu { position: relative; }
    ul { position: absolute; top: 0; left: 0; background-color: #f2f2f2; }
    ul ul { top: 0; left: 100%; background-color: #ddd; }
    ul li { position: relative; }
    ul li ul { display: none; }
    a { color: #333; padding: 10px 20px; }
    a:hover { background-color: #666; color: #fff; }
  </style>
</head>
<body>
  <div class="menu">
    <ul>
      <li><a href="#">一级菜单1</a>
        <ul>
          <li><a href="#">二级菜单1</a>
            <ul>
              <li><a href="#">三级菜单1</a></li>
              <li><a href="#">三级菜单2</a></li>
            </ul>
          </li>
          <li><a href="#">二级菜单2</a></li>
          <li><a href="#">二级菜单3</a></li>
        </ul>
      </li>
      <li><a href="#">一级菜单2</a></li>
      <li><a href="#">一级菜单3</a></li>
    </ul>
  </div>
  <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
  <script>
    $(document).ready(function(){
      $('ul li').hover(function(){
        $(this).children('ul').stop(true, true).fadeIn(200);
        $(this).children('a').css('background-color', '#666').css('color', '#fff');
        $(this).children('ul').find('li').each(function(i){
          $(this).delay(100 * i).animate({opacity: '1', left: '0'}, 200);
        });
      }, function(){
        $(this).children('ul').stop(true, true).fadeOut(200);
        $(this).children('a').css('background-color', 'transparent').css('color', '#333');
        $(this).children('ul').find('li').each(function(i){
          $(this).delay(100 * i).animate({opacity: '0', left: '20px'}, 200);
        });
      });
    });
  </script>
</body>
</html>

这个示例添加了一个hover()函数,为鼠标移动到菜单项上时添加了背景颜色和字体颜色的变化效果。您可以根据实际情况修改样式。

本文标题为:jquery实现带渐变淡入淡出并向右依次展开的多级菜单效果实例