使用jquery实现鼠标移入目标框出现悬浮框功能

  • Post author:
  • Post category:其他




项目场景:

项目场景:使用jquery实现鼠标移入目标框出现悬浮框功能




问题描述

类型1:一个目标框和一个悬浮框

 #hoverBox {
  display: none; /* 初始状态隐藏 */
}
#targetElement{
    width: 100px;
    height: 100px;
    border: red solid 1px;
}
   <div id="hoverBox">
        <!-- 悬浮框内容 -->
        <h1>hello world</h1>
      </div>
    <div id="targetElement">
    </div>
 $(document).ready(function() {
  // 当鼠标移入目标元素时显示悬浮框
  $('#targetElement').mouseenter(function() {
    //$('#hoverBox').fadeIn(); // 使用淡入动画显示悬浮框
    // 或使用其他动画效果,例如:
    // $('#hoverBox').slideDown(); // 使用滑动动画显示悬浮框
     $('#hoverBox').show(); // 直接显示悬浮框,无动画效果
     $('#targetElement').hide();
  });

  // 当鼠标移出目标元素时隐藏悬浮框
  $('#targetElement').mouseleave(function() {
    //$('#hoverBox').fadeOut(); // 使用淡出动画隐藏悬浮框
    // 或使用其他动画效果,例如:
    // $('#hoverBox').slideUp(); // 使用滑动动画隐藏悬浮框
     $('#hoverBox').hide(); // 直接隐藏悬浮框,无动画效果
     $('#targetElement').show();
  });
});

类型2:多个目标框和多个悬浮框的场景

    .hoverBox {
  display: none; /* 初始状态隐藏 */
}
.targetElement{
    width: 100px;
    height: 100px;
    border: red solid 1px;
}
 <div class="targetElement" data-hoverbox="#hoverBox1">
        <!-- 目标元素的内容 -->
      </div>
      
      <div class="targetElement" data-hoverbox="#hoverBox2">
        <!-- 目标元素的内容 -->
      </div>
      
      <!-- 悬浮框元素 -->
      <div id="hoverBox1" class="hoverBox">
            <h1>hello1</h1>
      </div>
      
      <div id="hoverBox2" class="hoverBox">
        <!-- 悬浮框2的内容 -->
        <h1>hello2</h1>
      </div>      
 $(document).ready(function() {
  // 共享的事件处理函数
  function showHoverBox() {
    var hoverBoxSelector = $(this).data('hoverbox');
    $(hoverBoxSelector).fadeIn(); // 使用淡入动画显示悬浮框
    // 或使用其他动画效果,例如:
    // $(hoverBoxSelector).slideDown(); // 使用滑动动画显示悬浮框
    // $(hoverBoxSelector).show(); // 直接显示悬浮框,无动画效果
  }

  function hideHoverBox() {
    var hoverBoxSelector = $(this).data('hoverbox');
    $(hoverBoxSelector).fadeOut(); // 使用淡出动画隐藏悬浮框
    // 或使用其他动画效果,例如:
    // $(hoverBoxSelector).slideUp(); // 使用滑动动画隐藏悬浮框
    // $(hoverBoxSelector).hide(); // 直接隐藏悬浮框,无动画效果
  }

  // 为所有目标元素绑定事件处理函数
  $('.targetElement').mouseenter(showHoverBox).mouseleave(hideHoverBox);
});



问题分析:

当有多个目标框和悬浮框时,就需要将目标框和悬浮框对应起来,可以使用自定义属性之后,通过jquery的data()方法来实现该功能。




常见问题:

多个悬浮框出现时需要覆盖原来的目标框

 // 目标框鼠标移入事件
        $('.targetEl').mouseenter(function() {
            var hoverBoxSelector = $(this).data('hoverbox');
            $(hoverBoxSelector).css({
            'position': 'absolute',
            'top': $(this).position().top,
            'left': $(this).position().left,
            'width': $(this).outerWidth(),
            'height': $(this).outerHeight(),
            'display': 'block'
            });
        });
        
        // 目标框鼠标移出事件
        $('.targetEl').mouseleave(function() {
            var hoverBoxSelector = $(this).data('hoverbox');
            //解决悬浮框闪动问题
            hoverTimeout = setTimeout(function(){
                $(hoverBoxSelector).css('display', 'none');
            },200);
        });



版权声明:本文为weixin_59742742原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。