日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

基于JS实现回到页面顶部的五种写法(从实现到增强)

發布時間:2025/3/17 javascript 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于JS实现回到页面顶部的五种写法(从实现到增强) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

為什么80%的碼農都做不了架構師?>>> ??

寫法

【1】錨點

  使用錨點鏈接是一種簡單的返回頂部的功能實現。該實現主要在頁面頂部放置一個指定名稱的錨點鏈接,然后在頁面下方放置一個返回到該錨點的鏈接,用戶點擊該鏈接即可返回到該錨點所在的頂部位置

  [注意]關于錨點的詳細信息移步至此

1

2

3

4

<body style="height:2000px;">

<div id="topAnchor"></div>

<a href="#topAnchor" style="position:fixed;right:0;bottom:0">回到頂部</a>

</body>

【2】scrollTop

  scrollTop屬性表示被隱藏在內容區域上方的像素數。元素未滾動時,scrollTop的值為0,如果元素被垂直滾動了,scrollTop的值大于0,且表示元素上方不可見內容的像素寬度

  由于scrollTop是可寫的,可以利用scrollTop來實現回到頂部的功能

  [注意]關于頁面的scrollTop的兼容問題詳細內容移步至此

1

2

3

4

5

6

7

8

<body style="height:2000px;">

<button id="test" style="position:fixed;right:0;bottom:0">回到頂部</button>

<script>

test.onclick = function(){

document.body.scrollTop = document.documentElement.scrollTop = 0;

}

</script>

</body>

【3】scrollTo()

  scrollTo(x,y)方法滾動當前window中顯示的文檔,讓文檔中由坐標x和y指定的點位于顯示區域的左上角

  設置scrollTo(0,0)可以實現回到頂部的效果

1

2

3

4

5

6

7

8

<body style="height:2000px;">

<button id="test" style="position:fixed;right:0;bottom:0">回到頂部</button>

<script>

test.onclick = function(){

scrollTo(0,0);

}

</script>

</body>

【4】scrollBy()

  scrollBy(x,y)方法滾動當前window中顯示的文檔,x和y指定滾動的相對量

  只要把當前頁面的滾動長度作為參數,逆向滾動,則可以實現回到頂部的效果

1

2

3

4

5

6

7

8

9

<body style="height:2000px;">

<button id="test" style="position:fixed;right:0;bottom:0">回到頂部</button>

<script>

test.onclick = function(){

var top = document.body.scrollTop || document.documentElement.scrollTop

scrollBy(0,-top);

}

</script>

</body>

【5】scrollIntoView()

  Element.scrollIntoView方法滾動當前元素,進入瀏覽器的可見區域 

  該方法可以接受一個布爾值作為參數。如果為true,表示元素的頂部與當前區域的可見部分的頂部對齊(前提是當前區域可滾動);如果為false,表示元素的底部與當前區域的可見部分的尾部對齊(前提是當前區域可滾動)。如果沒有提供該參數,默認為true

  使用該方法的原理與使用錨點的原理類似,在頁面最上方設置目標元素,當頁面滾動時,目標元素被滾動到頁面區域以外,點擊回到頂部按鈕,使目標元素重新回到原來位置,則達到預期效果

1

2

3

4

5

6

7

8

9

<body style="height:2000px;">

<div id="target"></div>

<button id="test" style="position:fixed;right:0;bottom:0">回到頂部</button>

<script>

test.onclick = function(){

target.scrollIntoView();

}

</script>

</body>

增強

  下面對回到頂部的功能進行增強

【1】顯示增強

  使用CSS畫圖,將“回到頂部”變成可視化的圖形(如果兼容IE8-瀏覽器,則用圖片代替)

  使用CSS偽元素及偽類hover效果,當鼠標移動到該元素上時,顯示回到頂部的文字,移出時不顯示  

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

<style>

.box{

position:fixed;

right:10px;

bottom: 10px;

height:30px;

width: 50px;

text-align:center;

padding-top:20px;

background-color: lightblue;

border-radius: 20%;

overflow: hidden;

}

.box:hover:before{

top:50%

}

.box:hover .box-in{

visibility: hidden;

}

.box:before{

position: absolute;

top: -50%;

left: 50%;

transform: translate(-50%,-50%);

content:'回到頂部';

width: 40px;

color:peru;

font-weight:bold;

}

.box-in{

visibility: visible;

display:inline-block;

height:20px;

width: 20px;

border: 3px solid black;

border-color: white transparent transparent white;

transform:rotate(45deg);

}

</style>

<body style="height:2000px;">

<div id="box" class="box">

<div class="box-in"></div>

</div>

</body>

【2】動畫增強

  為回到頂部增加動畫效果,滾動條以一定的速度回滾到頂部

  動畫有兩種:一種是CSS動畫,需要有樣式變化配合transition;一種是javascript動畫,使用定時器來實現  

  在上面的5種實現中,scrollTop、scrollTo()和scrollBy()方法可以增加動畫,且由于無樣式變化,只能增加javascript動畫

  定時器又有setInterval、setTimeout和requestAnimationFrame這三種可以使用,下面使用性能最好的定時器requestAnimationFrame來實現

  [注意]IE9-瀏覽器不支持該方法,可以使用setTimeout來兼容

  1、增加scrollTop的動畫效果

  使用定時器,將scrollTop的值每次減少50,直到減少到0,則動畫完畢

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

<script>

var timer = null;

box.onclick = function(){

cancelAnimationFrame(timer);

timer = requestAnimationFrame(function fn(){

var oTop = document.body.scrollTop || document.documentElement.scrollTop;

if(oTop > 0){

document.body.scrollTop = document.documentElement.scrollTop = oTop - 50;

timer = requestAnimationFrame(fn);

}else{

cancelAnimationFrame(timer);

}

});

}

</script>

  2、增加scrollTo()動畫效果

  將scrollTo(x,y)中的y參數通過scrollTop值獲取,每次減少50,直到減少到0,則動畫完畢

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

<script>

var timer = null;

box.onclick = function(){

cancelAnimationFrame(timer);

timer = requestAnimationFrame(function fn(){

var oTop = document.body.scrollTop || document.documentElement.scrollTop;

if(oTop > 0){

scrollTo(0,oTop-50);

timer = requestAnimationFrame(fn);

}else{

cancelAnimationFrame(timer);

}

});

}

</script>

  3、增加scrollBy()動畫效果

  將scrollBy(x,y)中的y參數設置為-50,直到scrollTop為0,則回滾停止

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

<script>

var timer = null;

box.onclick = function(){

cancelAnimationFrame(timer);

timer = requestAnimationFrame(function fn(){

var oTop = document.body.scrollTop || document.documentElement.scrollTop;

if(oTop > 0){

scrollBy(0,-50);

timer = requestAnimationFrame(fn);

}else{

cancelAnimationFrame(timer);

}

});

}

</script>

實現

  由于scrollTop、scrollBy()和scrollTo()方法,都以scrollTop值是否減少為0作為動畫停止的參照,且三個動畫的原理和實現都基本相似,性能也相似。最終,以最常用的scrollTop屬性實現動畫增強效果

  當然,如果覺得50的速度不合適,可以根據實際情況進行調整

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

<style>

.box{

position:fixed;

right:10px;

bottom: 10px;

height:30px;

width: 50px;

text-align:center;

padding-top:20px;

background-color: lightblue;

border-radius: 20%;

overflow: hidden;

}

.box:hover:before{

top:50%

}

.box:hover .box-in{

visibility: hidden;

}

.box:before{

position: absolute;

top: -50%;

left: 50%;

transform: translate(-50%,-50%);

content:'回到頂部';

width: 40px;

color:peru;

font-weight:bold;

}

.box-in{

visibility: visible;

display:inline-block;

height:20px;

width: 20px;

border: 3px solid black;

border-color: white transparent transparent white;

transform:rotate(45deg);

}

</style>

<body style="height:2000px;">

<div id="box" class="box">

<div class="box-in"></div>

</div>

</body>

<script>

var timer = null;

box.onclick = function(){

cancelAnimationFrame(timer);

timer = requestAnimationFrame(function fn(){

var oTop = document.body.scrollTop || document.documentElement.scrollTop;

if(oTop > 0){

document.body.scrollTop = document.documentElement.scrollTop = oTop - 50;

timer = requestAnimationFrame(fn);

}else{

cancelAnimationFrame(timer);

}

});

}

</script>

以上所述是小編給大家介紹的基于JS實現回到頁面頂部的五種寫法(從實現到增強)的全部敘述,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的,在此也非常感謝大家對腳本之家網站的支持!

原文鏈接:http://www.cnblogs.com/xiaohuochai/archive/2016/09/03/5836179.html

轉載于:https://my.oschina.net/fcweb/blog/1579428

總結

以上是生活随笔為你收集整理的基于JS实现回到页面顶部的五种写法(从实现到增强)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产人人插 | 成人在线免费网址 | 亚洲一区第一页 | 国产日 | 麻豆视频国产精品 | 久久97精品| 免费av网址在线观看 | 男女日屁视频 | 亚洲免费av网 | 日韩中文字幕精品 | 中文字幕无码人妻少妇免费 | 国产精品久久视频 | 久久久男人的天堂 | 一级做a爱片性色毛片 | 国产黄色免费看 | 欧美一线天 | 亚洲一区二区日韩欧美 | 国产乱欲视频 | 亚洲综合一区在线 | av狠狠| 偷拍超碰 | 骚黄网站| 黄色一大片 | 人妻洗澡被强公日日澡 | 视频一区三区 | 欧美7777| 另类亚洲色图 | 中文字幕视频二区 | 五月导航 | 男女性杂交内射妇女bbwxz | 超碰在线视屏 | 国产精品99视频 | www.999热| 午夜影音 | 欧美黄色免费看 | 亚洲成人高清 | 毛片福利| 国产色在线,com | 欧美女优在线 | 日本a级c片免费看三区 | 日本成人激情视频 | 男人懂得网站 | 亚洲熟妇av日韩熟妇在线 | 伊人草草 | 久久不射网站 | 香蕉国产999 | 日本不卡高清视频 | 农村偷人一级超爽毛片 | 日韩图色 | 国产精品亚洲AV色欲三区不卡 | 国产成人高清在线 | 日韩中文字幕视频 | 国产精品一区二区三区免费在线观看 | 日韩在线观看你懂的 | 精品成人国产 | 一区二区福利视频 | 色呦呦中文字幕 | 美女久久久 | 免费av网址在线观看 | 久久精品久久国产 | 激情av中文字幕 | 色 综合 欧美 亚洲 国产 | 色涩色 | 亚洲欧美综合色 | 国产主播一区二区三区 | 97超级碰碰碰 | 精品一二三四 | 美腿丝袜亚洲综合 | 一个色综合网 | 亚洲aaaa级特黄毛片 | 成人深夜影院 | 在线观看免费黄网站 | 涩视频在线观看 | 在线午夜av | 日韩精品一卡二卡 | 丁香激情小说 | 国产成人在线免费视频 | 蜜臀va | 国产超碰人人模人人爽人人添 | 欧美日韩一区二区三区在线视频 | 精品动漫一区二区三区在线观看 | 国产麻豆电影在线观看 | 欧美中文字幕一区二区 | 福利片网址 | 日本高清三区 | 人妻精品一区二区三区 | 日韩少妇裸体做爰视频 | 神马影院一区二区三区 | 亚洲一区欧美激情 | 四川丰满少妇被弄到高潮 | 偷偷在线观看免费高清av | 一起射导航 | 富二代成人短视频 | 伊人天堂网 | 999国产精品视频免费 | 高清在线一区二区 | 日韩色资源 | 成年人在线视频观看 | 久久久久国色av免费观看性色 |