国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

用原生js做個簡單的滑動效果的回到頂部

2024-05-06 16:09:41
字體:
來源:轉載
供稿:網友

很多網頁在下方都會放置一個“返回頂部”按鈕,尤其是頁面底部沒有導航的網頁,這樣可以幫助訪客重新找到導航或者重溫一遍廣告(想得真美)。隨著近幾年來 JavaScript 的應用日漸廣泛,滑動效果無處不在,于是我也跟跟風,將返回頂部功能做成了滑動效果。后來為了更貼合物理特征, 改造做成了減速的滑動效果。

首先說一下原理吧,我們會獲取滾動條到頁面頂部的距離,然后上移一定的距離;再獲取滾動條到頁面頂部的距離,上移一定的距離(比上一次小一點);以此類推 ...
 

  1. <script type="text/javascript">  
  2. /**  
  3. * 回到頁面頂部  
  4. * @param acceleration 加速度  
  5. * @param time 時間間隔 (毫秒)  
  6. **/ 
  7. function goTop(acceleration, time) {  
  8. acceleration = acceleration || 0.1;  
  9. time = time || 16;  
  10.  
  11. var x1 = 0;  
  12. var y1 = 0;  
  13. var x2 = 0;  
  14. var y2 = 0;  
  15. var x3 = 0;  
  16. var y3 = 0;  
  17.  
  18. if (document.documentElement) {  
  19. x1 = document.documentElement.scrollLeft || 0;  
  20. y1 = document.documentElement.scrollTop || 0;  
  21. }  
  22. if (document.body) {  
  23. x2 = document.body.scrollLeft || 0;  
  24. y2 = document.body.scrollTop || 0;  
  25. }  
  26. var x3 = window.scrollX || 0;  
  27. var y3 = window.scrollY || 0;  
  28.  
  29. // 滾動條到頁面頂部的水平距離  
  30. var x = Math.max(x1, Math.max(x2, x3));  
  31. // 滾動條到頁面頂部的垂直距離  
  32. var y = Math.max(y1, Math.max(y2, y3));  
  33.  
  34. // 滾動距離 = 目前距離 / 速度, 因為距離原來越小, 速度是大于 1 的數, 所以滾動距離會越來越小  
  35. var speed = 1 + acceleration;  
  36. window.scrollTo(Math.floor(x / speed), Math.floor(y / speed));  
  37.  
  38. // 如果距離不為零, 繼續調用迭代本函數  
  39. if(x > 0 || y > 0) {  
  40. var invokeFunction = "goTop(" + acceleration + ", " + time + ")";  
  41. window.setTimeout(invokeFunction, time);  
  42. }  
  43. }  
  44. </script> 
?
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宣城市| 兴城市| 祁门县| 上高县| 宁夏| 菏泽市| 枣庄市| 周至县| 前郭尔| 门源| 威海市| 大荔县| 禄丰县| 南部县| 安龙县| 年辖:市辖区| 兴隆县| 宁河县| 孝昌县| 阿城市| 建德市| 景宁| 阳东县| 兰坪| 渭源县| 贵定县| 故城县| 武冈市| 南靖县| 新源县| 菏泽市| 焦作市| 故城县| 澄迈县| 乐亭县| 凤庆县| 阳西县| 华阴市| 孙吴县| 北安市| 松溪县|