欢迎访问宙启技术站
智能推送

jquery怎么实现鼠标悬停导航下划线滑出效果

发布时间:2023-05-18 01:35:11

在网页设计中,常见的导航条都会有一些效果来增强用户的体验。其中最常见的一种效果就是鼠标悬停的导航下划线滑出效果。这种效果可以让用户更清晰、明确地知道自己所处于哪个导航选项上,进一步提升了用户体验。jquery是前端开发常用的框架,它可以帮助我们快速实现这一效果。在这里,我们就来详细讲述下jquery如何实现鼠标悬停导航下划线滑出效果。

一、HTML结构

在实现这个效果前,我们先来安排一下HTML的结构,将导航栏的每一项都用li标签写成一个列表。如下所示:

<ul class="nav">
  <li><a href="#">Home</a></li>
  <li><a href="#">About Us</a></li>
  <li><a href="#">Services</a></li>
  <li><a href="#">Contact Us</a></li>
</ul>

二、CSS样式

然后我们需要对导航条进行一定的样式设定。可以设置每一个li标签的宽度、高度、背景等等。可以根据实际设计需求进行设定。在这里,我们将导航条的下划线颜色设定成红色,并隐藏在导航栏下面。

.nav {
  list-style: none;
  margin: 0;
  padding: 0;
}

.nav li {
  display: inline-block;
  position: relative;
  margin: 0 20px;
}

.nav li a {
  display: block;
  position: relative;
  z-index: 1;
  text-decoration: none;
}

.nav li:before {
  content: "";
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 2px;
  background-color: red;
  visibility: hidden;
  transform: scaleX(0);
  transition: all 0.3s ease-in-out;
  z-index: -1;
}

.nav li:hover:before {
  visibility: visible;
  transform: scaleX(1);
}

三、jquery实现

在CSS中,我们已经设置好了导航栏下划线的颜色、宽度和隐藏方式。现在我们需要使用jquery来动态控制导航条的下划线滑出效果。

1. 首先,我们在文件头部引入jquery库。

<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>

2. 然后,我们使用jquery的hover()函数来实现效果。

$("li").hover(
  //当鼠标进入时,添加hover类名
  function () {
    $(this).addClass("hover");
  },
  //当鼠标离开时,删除hover类名
  function () {
    $(this).removeClass("hover");
  }
);

3. 我们使用jquery的offset()函数和width()函数计算出当前鼠标所在的导航栏项的起始位置和长度,然后将这个长度值和起始位置在CSS中进行设定,在hover类名下设置下划线的宽度和位置,实现下划线滑出效果。

$("li").hover(
  function () {
    //获取当前元素的位置和宽度
    var left = $(this).offset().left;
    var width = $(this).width();
    //设置下划线宽度和位置
    $(".underline").css({
      "width": width + "px",
      "left": left + "px"
    });
    //在当前元素上添加hover类名
    $(this).addClass("hover");
  },
  function () {
    //移除元素上的hover类名
    $(this).removeClass("hover");
  }
);

四、完整代码

HTML结构:

<ul class="nav">
  <li><a href="#">Home</a></li>
  <li><a href="#">About Us</a></li>
  <li><a href="#">Services</a></li>
  <li><a href="#">Contact Us</a></li>
</ul>
<div class="underline"></div>

CSS样式:

.nav {
  list-style: none;
  margin: 0;
  padding: 0;
}

.nav li {
  display: inline-block;
  position: relative;
  margin: 0 20px;
}

.nav li a {
  display: block;
  position: relative;
  z-index: 1;
  text-decoration: none;
}

.nav li:before {
  content: "";
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 2px;
  background-color: red;
  visibility: hidden;
  transform: scaleX(0);
  transition: all 0.3s ease-in-out;
  z-index: -1;
}

.nav li.hover:before {
  visibility: visible;
  transform: scaleX(1);
}

.underline {
  position: absolute;
  bottom: -2px;
  left: 0;
  height: 2px;
  background-color: red;
  transition: all 0.3s ease-in-out;
  z-index: -1;
}

jquery实现:

$(document).ready(function () {
  $("li").hover(
    function () {
      //获取当前元素的位置和宽度
      var left = $(this).offset().left;
      var width = $(this).width();
      //设置下划线宽度和位置
      $(".underline").css({
        "width": width + "px",
        "left": left + "px"
      });
      //在当前元素上添加hover类名
      $(this).addClass("hover");
    },
    function () {
      //移除元素上的hover类名
      $(this).removeClass("hover");
    }
  );
});

五、总结

通过上面的演示可以看到,实现鼠标悬停导航下划线滑出效果的方法非常简单,只需要使用jquery的hover()函数和offset()函数、width()函数来动态计算设置下划线的宽度和位置即可。这种效果能够加强网页的用户体验,使用户更加清晰地知道所处的导航选项,可以帮助你的网站更加地流行和受欢迎。