zoukankan      html  css  js  c++  java
  • 实现锚点跳转的两种方式及注意事项

    1、使用纯html方式实现锚点跳转

    1、设置锚点:添加锚点id demoAnchor
    <div>
        <div id="demoAnchor">视频内容。。。</div>
    </div>
    
    
    2、设置锚点跳转点击链接 #demoAnchor
    <div>
        <a href="#demoAnchor">点我跳转</a>
    </div>
    
    
    
    缺点:
    1、此方式跳转后会替换路由里#后面的部分。网站用hash路由的请避免使用此方式,网站用history路由的可使用
    2、不可控制展示位置,此方式跳转锚点后,锚点元素的顶部与浏览器窗口顶部是齐平的(如图)
    

    2、使用js方式实现锚点跳转

    1、设置锚点(同上):添加锚点id demoAnchor
    <div>
        <div id="demoAnchor">视频内容。。。</div>
    </div>
    
    
    2、设置锚点跳转点击事件,并传入锚点id
    <div>
        <div @click="goAnchorPoint('demoAnchor')">点我跳转</div>
    </div>
    
    
    goAnchorPoint(elemId){
        let anchorH = document.getElementById(elemId).offsetTop
    
        if(document.documentElement.scrollTop){
            document.documentElement.scrollTop=anchorH
        }else if(document.body.scrollTop){
            document.body.scrollTop=anchorH
        }else{  //二者均为0状态,有一者恒为0,另一者可能因为回到顶部等操作被置为0,便会出现这种状况
            document.documentElement.scrollTop=anchorH
            document.body.scrollTop=anchorH
        }
    
        //window.scrollTo(0,anchorH)  //若以上scrollTop方式不生效,可使用此scrollTo方式,但注意scrollTo在安卓手机上存在兼容性问题
    }
    
    
    
    优点:
    1、无hash路由#后面内容被替换的问题
    2、可通过如 anchorH = document.getElementById(elemId).offsetTop - 50 设置展示位置,以使得跳转锚点后,锚点元素位于浏览器窗口中间,提高用户体验(如图)
    
    了解scrollTo和scrollTop:  https://www.cnblogs.com/huihuihero/p/12092038.html
    

  • 相关阅读:
    oracle over 函数几个例子
    securecrt 方向键乱码解决
    windows 8.1 启用hyper-v导致vmware 无法使用的问题解决方案(兼顾WP8.1模拟器和vmware)
    oracle 查询所有约束
    home条 防止误碰
    导航栏相关知识
    报错Domain=NSCocoaErrorDomain Code=3840 "Garbage at end."
    H5混合开发问题总结
    适配iOS11
    网络
  • 原文地址:https://www.cnblogs.com/huihuihero/p/14210230.html
Copyright © 2011-2022 走看看