第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

回到頁(yè)面指定位置的三種方式

標(biāo)簽:
JavaScript

以前大部分时间都是在做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)
    })复制代码

效果如下图所示

https://img3.sycdn.imooc.com/5fd9a29b00012a9800410032.jpg

效果很明显,在事件触发之后,页面立马跑到的顶部,在交互性没啥要求的时候,这种做法确实没啥问题,不过要求高了之后就不行了,会显得有些突兀。 经大佬提示,可以在style中设置 html, body { scroll-behavior:smooth; },可以达到和下面两个api的behavior 参数为 smooth 的效果是一样的

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' })
    })复制代码

效果如下图所示 https://img4.sycdn.imooc.com/5fd9a29d0001d01500490624.jpg

从效果上来看,相较于a标签,该api支持动画,使得页面更丝滑 不过它对iframe的支持度不够,在我所遇到的项目中iframe的占比还不小,还请谨慎使用

Element.scrollIntoView()

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

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

效果如下图所示 https://img1.sycdn.imooc.com/5fd9a29d0001badf00030413.jpg

从效果上来看,该api和scrollTo的作用是一致的,但是从代码结构上来说,scrollIntoView会更加的简洁且在iframe中表现也很优秀,基本上被用到的频率更高


作者:pengpeng


點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消