JavaScript实现博客园页面右下角返回顶部按钮
本文介绍如何在博客园中通过JavaScript和CSS实现一个始终固定在页面右下角的返回顶部按钮。利用CSS的fixed属性实现图标固定,结合window.scrollBy与setInterval方法实现平滑滚动至页面顶部的功能,并提供相关DOM属性参考。
博客园右下角返回顶部按钮实现原理
许多博客园博主的博客页面右下角都有一个图标,无论屏幕如何拉伸,该图标始终固定在右下角位置。点击该图标后,页面会自动滚动至顶部。受此启发,这里编写一个示例Demo来实现这一效果。
图标右下角固定
一、图标固定在右下角
CSS中提供了4种布局方式,其中fixed表示绝对定位元素。因此,我们选择使用fixed属性来实现图标的固定定位。
| absolute |
生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。 元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。 |
| fixed |
生成绝对定位的元素,相对于浏览器窗口进行定位。 元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。 |
| relative |
生成相对定位的元素,相对于其正常位置进行定位。 因此,"left:20" 会向元素的 LEFT 位置添加 20 像素。 |
| static | 默认值。没有定位,元素出现在正常的流中(忽略 top, bottom, left, right 或者 z-index 声明)。 |
| inherit | 规定应该从父元素继承 position 属性的值。 |
定义相关CSS代码后,按钮将始终位于屏幕右下角,无论是拖动滚动条还是拉伸浏览器窗口大小,位置均保持不变。
CSS代码如下:
#myTopBtn{
bottom: 5px;
right: 5px;
position:fixed;
}
实现点击后回到页面最上角
二、实现点击后回到页面最上角
要实现回到屏幕最上方,需要了解如何通过JavaScript操作滚动条的上下移动。JavaScript提供了scrollBy和scroll方法。
相关JavaScript代码如下:
window.scrollBy(0,-30) //屏幕上移30像素点
window.scroll(0,0) // 屏幕回到最上角
上述方法提到了如何移动滚动条,那么如何实现以一定速度移动到页面顶部的效果呢?这需要借助setInterval和clearInterval方法,实现每10毫秒屏幕上移30个像素点。
HTML结构代码如下:
<body>
<div id="myDiv" >
</div>
<button id="myTopBtn" onclick="TopFunc()">To Top</button>
</body>
JavaScript逻辑代码如下:
var myVar;
function TopFunc(){
myVar=setInterval(EachScrollBy,10);
}
function EachScrollBy(eachHeight){
if(document.documentElement.scrollTop<=0){
clearInterval(myVar);
}else{
window.scrollBy(0,-30);
}
}
扩展:相关DOM属性参考
三、扩展
实现了置顶按钮后,如何实现点击按钮使屏幕置底呢?原理类似,此处不再提供Demo,但提供一些相关属性供参考。
相关DOM属性代码如下:
网页可见区域宽:document.body.clientWidth
网页可见区域高:document.body.clientHeight
网页可见区域宽:document.body.offsetWidth (包括边线的宽)
网页可见区域高:document.body.offsetHeight (包括边线的宽)
网页正文全文宽:document.body.scrollWidth
网页正文全文高:document.body.scrollHeight
网页被卷去的高:document.body.scrollTop
网页被卷去的左:document.body.scrollLeft
网页正文部分上:window.screenTop
网页正文部分左:window.screenLeft
屏幕分辨率的高:window.screen.height
屏幕分辨率的宽:window.screen.width
屏幕可用工作区高度:window.screen.availHeight
屏幕可用工作区宽度:window.screen.availWidth
以上就是本文的全部内容,希望喜欢折腾博客的读者能够喜欢。
网页开发三者分工:HTML结构、CSS样式与JavaScript交互怎么协作
2026-11-05 12:51:22
JS解析URL参数时怎么处理中文乱码和特殊字符
2026-11-05 12:47:23
js-cookie 存储 JSON 对象:自动序列化与反序列化技巧
2026-11-05 12:36:26
marked.js 快速上手:安装与基础 Markdown 转 HTML 示例
2026-11-05 09:32:53
Phaser.js 与 PixiJS、Cocos Creator 的技术选型对比
2026-11-05 08:36:30
