js實(shí)現(xiàn)帶有動(dòng)畫的返回頂部
本文實(shí)例為大家分享了js實(shí)現(xiàn)帶有動(dòng)畫返回頂部的具體代碼,供大家參考,具體內(nèi)容如下
1、滑動(dòng)鼠標(biāo)往下滑動(dòng),側(cè)邊欄跟著往上移動(dòng),當(dāng)?shù)竭_(dá)某一個(gè)位置的時(shí)候,側(cè)邊欄停止移動(dòng);鼠標(biāo)往上,則側(cè)邊欄往下-停止
2、當(dāng)鼠標(biāo)繼續(xù)下滑到某一個(gè)位置,“返回頂部”幾個(gè)字會(huì)彈出此處如果點(diǎn)擊“返回頂部”,則立刻到了頂部
3、到達(dá)頂部位置效果
4、源代碼
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> * { margin: 0; padding: 0; } /* 版心 */ .w { width: 980px; margin: 0 auto; } /* 頭部樣式 */ .head { height: 200px; background-color: teal; } /* 內(nèi)容區(qū)域樣式 */ .banner { height: 450px; background-color: red } /* sidebar是側(cè)邊欄 */ .sidebar { position: absolute; top: 300px; right: 250px; display: inline-block; width: 40px; height: 80px; background-color: cyan; text-align: center; } /* 側(cè)邊欄 “返回頂部”字體 */ .sidebar span { display: none; font-size: 14px; cursor: pointer; } /* 主體div樣式 */ .zhuti { height: 300px; background-color: violet; } /* 底部樣式 */ .footer { height: 700px; background-color: yellow; } </style> </head> <body> <div class="sidebar">廣告<br><br> <span id="returns">返回頂部</span> </div> <div class="head w">頭部區(qū)域</div> <div class="banner w">banner區(qū)域</div> <div class="zhuti w">主體區(qū)域</div> <div class="footer w">尾部區(qū)域</div> <script> // Js代碼部分 var sidebar = document.querySelector('.sidebar') var banner = document.querySelector('.banner') var bannerTop = banner.offsetTop; // 獲取 主體 區(qū)域的事件源 var zhuti = document.querySelector('.zhuti'); var span = document.querySelector('span'); var zhutiTop = zhuti.offsetTop; // console.log(bannerTop) // 200 // banner.offestTop 就是被卷去頭部的大小 一定要寫到滾動(dòng)的外面 // 當(dāng)我們側(cè)邊欄固定定位之后應(yīng)該變化的數(shù)值 var sidebarTop = sidebar.offsetTop - bannerTop; document.addEventListener('scroll', function () { // console.log(window.pageYOffset) if (window.pageYOffset >= bannerTop) { sidebar.style.position = 'fixed'; sidebar.style.top = sidebarTop + 'px'; } else { sidebar.style.position = 'absolute'; sidebar.style.top = 300 + 'px'; } // 當(dāng)?shù)降字黝}區(qū)域的時(shí)候,顯示span的內(nèi)容 if (window.pageYOffset >= zhutiTop) { span.style.display = 'block'; } else { span.style.display = 'none'; } }) // 封裝了一個(gè)動(dòng)畫js文件 function animation(obj, target, fn1) { // console.log(fn1); // fn是一個(gè)回調(diào)函數(shù),在定時(shí)器結(jié)束的時(shí)候添加 // 每次開定時(shí)器之前先清除掉定時(shí)器 clearInterval(obj.timer); obj.timer = setInterval(function () { // 步長(zhǎng)計(jì)算公式 越來(lái)越小 // 步長(zhǎng)取整 var step = (target - obj.pageYOffset) / 10; step = step > 0 ? Math.ceil(step) : Math.floor(step); if (obj.pageYOffset == target) { clearInterval(obj.timer); // 如果fn1存在,調(diào)用fn if (fn1) { fn1(); } } else { // 每30毫秒就將新的值給obj.left window.scroll(0, obj.pageYOffset + step); } }, 30) } // 獲取返回頂部的事件 點(diǎn)擊觸發(fā) var returns = document.querySelector('#returns'); returns.addEventListener('click', function () { // alert(111); // window.scroll(x,y) 可以返回頂部 // window.scroll(0,0); animation(window, 0) }) </script> </body> </html>
5、喜歡記得點(diǎn)擊,關(guān)注,收藏噢,不喜勿噴~
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 一個(gè)簡(jiǎn)單的彈性返回頂部JS代碼實(shí)現(xiàn)介紹
- js+JQuery返回頂部功能如何實(shí)現(xiàn)
- javascript返回頂部效果(自寫代碼)
- js簡(jiǎn)單的點(diǎn)擊返回頂部效果實(shí)現(xiàn)方法
- JS返回頂部實(shí)例代碼
- javascript簡(jiǎn)單實(shí)現(xiàn)跟隨滾動(dòng)條漂浮的返回頂部按鈕效果
- javascript實(shí)現(xiàn)博客園頁(yè)面右下角返回頂部按鈕
- js實(shí)現(xiàn)返回頂部效果
- jQuery實(shí)現(xiàn)返回頂部功能適合不支持js的瀏覽器
- 原生js實(shí)現(xiàn)返回頂部緩沖效果
相關(guān)文章
js+HTML5實(shí)現(xiàn)canvas多種顏色漸變效果的方法
這篇文章主要介紹了js+HTML5實(shí)現(xiàn)canvas多種顏色漸變效果的方法,涉及html5屬性的相關(guān)技巧,需要的朋友可以參考下2015-06-06微信小程序授權(quán)獲取用戶詳細(xì)信息openid的實(shí)例詳解
這篇文章主要介紹了微信小程序授權(quán)獲取用戶詳細(xì)信息openid的實(shí)例詳解的相關(guān)資料,希望通過(guò)本文能幫助到大家,需要的朋友可以參考下2017-09-09關(guān)于layui導(dǎo)航欄不展示下拉列表的解決方法
今天小編就為大家分享一篇關(guān)于layui導(dǎo)航欄不展示下拉列表的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-09-09微信小程序中使用ECharts 異步加載數(shù)據(jù)的方法
這篇文章主要介紹了微信小程序中使用ECharts 異步加載數(shù)據(jù)的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-06-06JavaScript中sharedWorker 實(shí)現(xiàn)多頁(yè)面通信的實(shí)例詳解
這篇文章主要介紹了JavaScript中sharedWorker 實(shí)現(xiàn)多頁(yè)面通信,通過(guò)給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04使用openSpeDiv方法實(shí)現(xiàn)Ecshop登錄彈窗框效果
在ECSHOP的目錄/JS/common.js中有一個(gè)openSpeDiv方法是實(shí)現(xiàn)ECSHOP的彈窗效果的。接下來(lái)通過(guò)本文給大家分享使用openSpeDiv方法實(shí)現(xiàn)Ecshop登錄彈窗框效果,需要的朋友參考下2017-03-03JS正則表達(dá)式常見(jiàn)用法實(shí)例詳解
這篇文章主要介紹了JS正則表達(dá)式常見(jiàn)用法,結(jié)合實(shí)例形式分析了javascript元字符、分組符、修飾符、量詞基本含義,并結(jié)合具體案例形式分析了javascript正則基本使用技巧,需要的朋友可以參考下2018-06-06JS獲取url參數(shù),JS發(fā)送json格式的POST請(qǐng)求方法
下面小編就為大家分享一篇JS獲取url參數(shù),JS發(fā)送json格式的POST請(qǐng)求方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-03-03JavaScript實(shí)現(xiàn)簡(jiǎn)單的Markdown語(yǔ)法解析器
Markdown 是一種輕量級(jí)標(biāo)記語(yǔ)言, 它允許人們使用易讀易寫的純文本格式編寫文檔,然后轉(zhuǎn)換成有效的 XHTML(或者HTML)文檔。本文將利用JavaScript實(shí)現(xiàn)簡(jiǎn)單的Markdown語(yǔ)法解析器,感興趣的可以了解一下2023-03-03JavaScript實(shí)現(xiàn)滑塊補(bǔ)圖驗(yàn)證碼效果
這篇文章主要給大家介紹了JavaScript如何實(shí)現(xiàn)滑塊補(bǔ)圖驗(yàn)證碼效果,文章通過(guò)代碼示例介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴可以參考閱讀下2023-07-07