• 解决同层hover事件重叠闪烁问题


    完整代码如下:

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Document</title>
      <script src="js/jquery.min.js"></script>
      <style>
        .smallbox{
          width:20px;
          height:20px;
          text-align: center;
          background:#333;
          /* position:absolute; */
          /* left:25px; */
          /* top:25px; */
          margin:5px;
          display: none;
        }
        .bigbox{
          width:150px;
          height:150px;
          background:#000000;
          margin: 10px;
          opacity: .1;
        }
        .pop{
          width: 150px;
          height: 150px;
          background: red;
          position: absolute;
          right: 0px;
          top: 0px;
          display: none;
        }
        .active{
          display: block;
        }
        .smallbox span{
          display: block;
          width: 100%;
          height: 100%;
          cursor: pointer;
        }
      </style>
    </head>
    <body>
      <div class="pop"></div>
      <div class="bigbox" key='A'></div>
      <div class="bigbox" key='B'></div>
      <div class="bigbox" key='C'></div>
      <div class="smallbox" key="1" style="position: absolute;left: 25px; top: 25px;"><span></span></div>
      <div class="smallbox" key="2" style="position: absolute;left: 50px; top: 40px;"><span></span></div>
      <div class="smallbox" key="3" style="position: absolute;left: 80px; top: 220px;"><span></span></div>
      <div class="smallbox" key="4" style="position: absolute;left: 120px; top: 180px;"><span></span></div>
      <div class="smallbox" key="5" style="position: absolute;left: 80px; top: 80px;"><span></span></div>
      <div class="smallbox" key="6" style="position: absolute;left: 120px; top: 350px;"><span></span></div>
      <div class="smallbox" key="7" style="position: absolute;left: 80px; top: 370px;"><span></span></div>
    
        <script>
              $(document).ready(
            
                      function(){
                          const arceObj={A:['5','1','2'],B:['3','4'],C:['6','7']}
                          let arceDom={}
                          // 当前所在热区
                          let arceKey=''
                          $(".bigbox").mouseover(
                                  function(e){
                                      // 判断是哪个热区
                                      arceKey=$(e.target).attr('key')
                                      arceDom=e.target
                                      const arr =$('.smallbox')
                                      //console.log(arr)
                                      // 遍历这个数组  找出该热区下应该显示的小热区
                                      arr.each(function(item){
                                      const key=$(arr[item]).attr('key')
                                            //console.log(key);
                                          // 找到之后将这些smallbox元素显示
                                          if($.inArray(key,arceObj[arceKey]) !=-1){//判断arceObj数组里是否存在key
                                             $(arr[item]).show()
                                          }
                                      });
                                      $(this).css("opacity","1")
                                  }
                          );
    
                          $(".smallbox").mouseover(
                                  function(e){
                                      $(arceDom).css("opacity","1")
                                      // const arce=$(e.target).attr('key')
                                      // console.log(arce)
                                      // 当前元素的所有兄弟元素  可修改样式
                                      // $(e.target).siblings()
                                      const arr =$('.smallbox')
                                      // 遍历这个数组  找出该热区下应该显示的小热区
                                      arr.each(function(item){
                                          const key=$(arr[item]).attr('key')
                                          // 找到之后将这些smallbox元素显示
                                          if(arceObj[arceKey].indexOf(key)!=-1){
                                             $(arr[item]).show()
                                          }
                                      });
                                 }
                          );
          
                 /*
    // 反向找到当前小热区所在的大热区 key为小热区的key function getArcekey(key){                         for(var akey in arceObj){                           for(var i=0;i<arceObj[akey].length;i++){                             // 如果找到相同的key返回大热区的key                             if(arceObj[akey][i]==key){                               return akey                             }                           }                         }                       }             */

                    $(
    ".bigbox").mouseout(                         function(e){                             $(".smallbox").hide(); $(this).css("opacity",".1")                         }                 ); $(".smallbox span").hover(function(){ $(".pop").addClass("active") },function(){ $(".pop").removeClass("active") });             }     ); </script> </body> </html>

     效果图:

  • 相关阅读:
    16级第三周寒假作业F题
    16级第三周寒假作业E题
    16级第二周寒假作业J题
    16级第二周寒假作业B题
    16级第一周寒假作业D题
    16级第一周寒假作业F题
    Drupal8 社区文档之Drupal的概述
    Drupal 社区文档之一般概念
    Drupal 8 目录结构
    PhpExcel中文帮助手册|PhpExcel使用方法
  • 原文地址:https://www.cnblogs.com/smedas/p/12659035.html
Copyright © 2020-2023  润新知