最新公告
  • 欢迎您光临网站无忧模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 回到页面指定位置的三种方式

    正文概述 掘金(pengpeng)   2020-12-15   430

    以前大部分时间都是在做b端相关的项目,在实现此类需求时,通常都是直接借助a标签搞定,现在做c端了,对交互性的要求一下就提升了,此时a标签就远远不能满足要求了,需要借助js来实现此类需求,特此记录。

    a 标签

    首先放出html

    <body>
        <contain class="test1">
            <a name="topAnchor"></a>
            <div id="top">我是顶部</div>
            <div></div>
            <div></div>
            <div></div>
            <div></div>
            <div></div>
        </contain>
        <footer>
            <button id="backTop1">第一种方式回到顶部</button>
            <button id="backTop2">第二种方式回到顶部</button>
            <button id="backTop3">第三种方式回到顶部</button>
        </footer>
    </body>
    

    然后具体操作步骤如下

    1. 将a标签放到指定元素的附近
    2. 然后通过点击事件生成 a 标签
    3. 触发a标签事件
    4. 删除a标签

    代码如下

        const backTop1 = document.getElementById("backTop1")
    
        backTop1.addEventListener("click", function (e) {
            let a = document.createElement("a")
            a.href = "#topAnchor"
            e.target.appendChild(a)
            a.onclick = function (e) {
                e.stopPropagation()
            }
            a.click()
            e.target.removeChild(a)
        })
    

    效果如下图所示

    回到页面指定位置的三种方式

    效果很明显,在事件触发之后,页面立马跑到的顶部,在交互性没啥要求的时候,这种做法确实没啥问题,不过要求高了之后就不行了,会显得有些突兀。

    scrollTo()

    此 api 需要传递 DOM元素相对于window的 left 和 top 的距离,此例子仅展示简单demo,只考虑 top 坐标
    当然它还有一个 behavior 参数,将其设置为 smooth 后,将会出现滑动效果 步骤如下:

    1. 计算目标元素距离顶部的距离
    2. 通过事件触发

    代码如下:

        const backTop2 = document.getElementById("backTop2")
        const TOP = document.getElementById("top")
        const y = TOP.offsetTop
        const backTop3 = document.getElementById("backTop3")
        backTop3.addEventListener("click", function (e) {
            window.scrollTo({ top: y, left: 0, behavior: 'smooth' })
        })
    
    

    效果如下图所示 回到页面指定位置的三种方式

    从效果上来看,相较于a标签,该api支持动画,使得页面更丝滑

    Element.scrollIntoView()

    该 api 相较于上一个,节点信息更加的明确,操作方法也更加的简洁,更利于后续的维护
    代码如下

        const backTop2 = document.getElementById("backTop2")
        const TOP = document.getElementById("top")
        backTop2.addEventListener("click", function (e) {
            TOP.scrollIntoView({ behavior: "smooth" })
        })
    

    效果如下图所示 回到页面指定位置的三种方式

    从效果上来看,该api和scrollTo的作用是一致的,但是从代码结构上来说,scrollIntoView会更加的简洁

    以上三种方法是我目前比较常用的,如有不同之处,还望诸君不吝赐教!


    下载网 » 回到页面指定位置的三种方式

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元