使用JavaScript怎么编写一个页面高亮操作提示功能
创始人
2024-12-27 20:42:54
0次

1、要用 JS 获取目标标签的位置。

el.getBoundingClientRect() 可以获得标签距离窗口的位置。
window.pageXOffset
window.pageYOffset
则是获取页面左,上边滚动出去部分的长度。
利用它们相加,可以得到目标标签在页面中的绝对位置。再把【高亮】标签放在相同位置就可以。

2、要能动态生成提示标签和遮罩层(一般是半透明的黑色)

3、还要用到 CSS 中的定位。

为了更直接的模拟真实情况,我采用了一些标签来模拟页面的结构。

HTML 代码如下:



 模拟头部




 模拟导航





 
  操作第一步
  
  • 操作第二步
  •   
  • 操作第三步
  •       模拟其他部分  

    基本样式如下:

    .posa{
     position: absolute;
    }
    .header{
     height: 200px;
     width: 1200px;
     margin-left: auto;
     margin-right: auto;
     background: #eee;
    }
    .mainNav{
     height: 80px;
     width: 1200px;
     margin-left: auto;
     margin-right: auto;
     background: #5f5fd7;
    }
    .pageMain{
     width: 1200px;
     margin-left: auto;
     margin-right: auto;
     background: #eee;
    }
    .sidebar{
     width: 200px;
     line-height: 50px;
     text-align: center;
     background: #fff;
     border:1px #666 solid;
     border-bottom:none;
    }
    .sidebar a{
     display: block;
     border-bottom:1px #666 solid;
     color: #333;
    }
    
    .other{
     height: 700px;
     background: #708af5;
     font-size: 30px;
     color: #fff;
    }
    
    .mask{
     position: fixed;
     top:0;
     right:0;
     bottom: 0;
     left:0;
     background: rgba(0, 0, 0, 0.48);
    }
    
    .tips{
     background: #fff;
     position: absolute;
     line-height: 50px;
     color: #333;
     display: block;
     text-align: center;
    }
    
    .tipsc_content{
     margin-left: 200px;
     padding-top: 100px;
     margin-right: 80px;
    }
    .tipsc_btn{
     padding-top: 30px;
    }
    
    .tipsc_btn button{
     outline:none;
     width: 100px;
     height: 40px;
     background: #09a366;
     color: #fff;
     border:none;
     cursor: pointer;
    }

    JavaScript 代码如下:

    // 获取目标标签
    let step1 = document.getElementById("step1");
    let body = document.getElementsByTagName("body")[0];
    
    let tips = null,
     mask = null,
     tipsContent= null;
    // 创建标签。默认生成 mask 标签
    let makeElement = function({id="mask",classN="mask",content = ""}={}){
     let eId = document.getElementById(id);
     if( !eId ){ // 判断 mask 是否存在
      eId = document.createElement("div");
      eId.id = id;
      eId.className =classN;
      eId.innerHTML = content;
      body.appendChild( eId );
      return eId ;
     }else{
      return eId; // mask 已经存在,不需要再创建。
     }
    };
    // 去掉遮罩层
    let removeTag = function(tag){
     tag.parentNode.removeChild( tag );
    };
    
    // 获取要提示的内容的位置。这里是 li#step1
    let getPostion = function(tag){
     let x = tag.getBoundingClientRect().x ;
     let y = tag.getBoundingClientRect().y ;
     return {x:x,y:y};
    };
    // 设置tips的位置
    let setPosition = function(tips, {x="0",y="0",w="0",h="0"}={}){
     tips.style.left = x + "px" ;
     tips.style.top = y+ "px" ;
     tips.style.width = w+ "px"
     tips.style.height = h + "px"
     console.info(tagP.x , tagP.y );
    };
    // 获取要提示的内容的标签位置
    let tagP = getPostion(step1);
    // 生成 mask
    mask = makeElement();
    // 生成目标标签的高亮框
    tips = makeElement({
     id:"tips",
     classN:"tips",
     content :"操作第一步" // 伪装原标签的内容
    });
    setPosition(tips, {
     x:tagP.x + window.pageXOffset,
     y:tagP.y + window.pageYOffset,
     w:step1.offsetWidth ,
     h:step1.offsetHeight
    });
    
    
    // 生成提示内容框
    tipsContent = makeElement({
     id:"tipsContent",
     classN:"tipsContent posa",
     content :`
        
         根据项目内容调整样式
         
           确定
         
        
      
    ` }); setPosition(tipsContent, {  x:tagP.x + window.pageXOffset+200,  y:tagP.y + window.pageYOffset-100,  w:490,  h:300 }); // 点击“确定”按钮 let okBtn = document.getElementById("okBtn"); okBtn.addEventListener("click",function(){  removeTag(mask);  removeTag(tips);  removeTag(tipsContent); }); // 当窗口调整大小时候,调整 tips 位置。 window.addEventListener("resize",function(){  tagP = getPostion(step1);  setPosition(tips,tagP); });

    上述就是小编为大家分享的使用JavaScript怎么编写一个页面高亮操作提示功能了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

    相关内容

    热门资讯

    空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
    空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
    格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
    空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
    格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
    品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
    空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
    空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
    中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
    中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...