图片来源:Inspiring Wallpapers

就像上图中的超人一样,你的读者也想要一飞冲天的感觉。

没错,你的网站需要一个 “回到顶部” 的按钮。

每当你的文章写得很长,或者评论盖了好几十层楼的时候,用户想要回到顶部就成了一件折磨的事情,鼠标滚轮滚得要烧起来有木有?即便是直接拖动滚动条,多少还是有点不痛快。正因如此,有时你觉得碍手碍脚的一个小按钮,此时却显得那么贴心。

我知道对很多人来说,上面都是废话。好的,废话少说,讲正经的。这篇文章是跟大家分享一下我自己写的一个超简单的 “回到顶部” 按钮——就是右下角那个箭头。

不嫌弃它简陋的话,欢迎右键另存为:完整带注释版 /压缩版(文件全部是 UTF-8 编码,如果浏览器默认 GBK 编码,你直接打开可能会看到乱码)。在网站的模板里引用这个文件,网站的每一个页面就都有 “回到顶部” 按钮了。

更多精彩文章,请访问作者博客-胡作菲为

简单说下制作过程
1. 用 SVG 画出箭头

默认状态的箭头

<?xml version="1.0" ?>
<!DOCTYPE svg  PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'>
<svg enable-background="new 0 0 50 50" width="50px" height="50px" x="0px" y="0px" id="Layer_1" version="1.1" viewBox="0 0 50 50" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><polyline points="0,25 25,5 50,25" style="fill:transparent;stroke:black;stroke-width:3;"/>
</svg>

鼠标移上去之后的箭头

<?xml version="1.0" ?>
<!DOCTYPE svg  PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'>
<svg enable-background="new 0 0 50 50" width="50px" height="50px" x="0px" y="0px" id="Layer_1" version="1.1" viewBox="0 0 50 50" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><polyline points="0,25 25,5 50,25" style="fill:transparent;stroke:#999;stroke-width:3;"/>
</svg>

两者区别只在颜色——倒数第二行polyline的style里面的stroke属性。

2. 用工具把 SVG 转换成 dataURI(可选)

为了节省 HTTP 请求,这么小而简单的 SVG 图形,我决定把它转换成 dataURI。 Google 了一下,果然有现成的工具。于是,上面的两个图标分别被转换成了下面的两串字符。

// 默认状态下的箭头
"data:p_w_picpath/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/PjwhRE9DVFlQRSBzdmcgIFBVQkxJQyAnLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4nICdodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQnPjxzdmcgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgNTAgNTAiIHdpZHRoPSI1MHB4IiBoZWlnaHQ9IjUwcHgiIHg9IjBweCIgeT0iMHB4IiBpZD0iTGF5ZXJfMSIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgNTAgNTAiIHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxwb2x5bGluZSBwb2ludHM9IjAsMjUgMjUsNSA1MCwyNSIgc3R5bGU9ImZpbGw6dHJhbnNwYXJlbnQ7c3Ryb2tlOmJsYWNrO3N0cm9rZS13aWR0aDozOyIvPjwvc3ZnPg=="
// 鼠标移上去之后的箭头
"data:p_w_picpath/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/PjwhRE9DVFlQRSBzdmcgIFBVQkxJQyAnLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4nICdodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQnPjxzdmcgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgNTAgNTAiIHdpZHRoPSI1MHB4IiBoZWlnaHQ9IjUwcHgiIHg9IjBweCIgeT0iMHB4IiBpZD0iTGF5ZXJfMSIgdmVyc2lvbj0iMS4xIiB2aWV3Qm94PSIwIDAgNTAgNTAiIHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxwb2x5bGluZSBwb2ludHM9IjAsMjUgMjUsNSA1MCwyNSIgc3R5bGU9ImZpbGw6dHJhbnNwYXJlbnQ7c3Ryb2tlOiM5OTk7c3Ryb2tlLXdpZHRoOjM7Ii8+PC9zdmc+"

接下来那段比较枯燥,给大家插播一张南京鸡鸣寺的照片。

图片来源:自己以前拿OPPO手机拍的……

更多精彩文章,请访问作者博客-胡作菲为

3. JavaScript:把箭头放到合适的位置,在合适的时候出现

2013.10.23上午更新:IE8和Firefox里不能显示的问题已修复,虽然IE8以下的浏览器里面很丑。。。修改后的代码有点长,就不贴在文章里了,有兴趣的朋友可以点此查看,或者右键另存到本地。代码里有很详细的注释。

这里要插一句:通常是很不推荐在 JavaScript 里面设置、修改元素的样式的,这里我这样做是因为不想再另外写一个 CSS 文件,又要多一个 HTTP 请求,让这个超简单的东西变复杂。

2013.10.23下午更新:你可以选择是否平滑滚动,默认是平滑的。喜欢摆弄代码的朋友,可以对 backToTop.js(或 backToTop.min.js,取决于你引用的是哪一个)末尾的 backToTop() 做如下设置:

backToTop({

backToTop({// 不想要平滑的滚动,就像下面这样设置为 falsesmooth: false,// 滚动的时长,以毫秒为单位time: 300
});

最后

backToTop.js

在改进代码的时候,下面几篇文章给了我很大帮助:

  • 火狐、谷歌、IE关于document.body.scrollTop和document.documentElement.scrollTop 以及值为0的问题

  • Detect IE

  • smoothscroll

我知道肯定有大大在嘲讽我:“这么简单的玩意儿也拿出来说。”

是的,我很享受这个分享的过程,并且会更享受之后的交流和讨论,哈哈!

更多精彩文章,请访问作者博客-胡作菲为

转载于:https://blog.51cto.com/hudidit/1322375

BackToTop.js 为你的网站添加“回到顶部”按钮相关推荐

  1. 超好用的移动端布局自适应大小rem判断js文件及超过一定高度回到顶部按钮代码...

    //以下代码放到一个adapt.js文件当中 (function (doc, win) {var docEl = doc.documentElement,resizeEvt = 'orientatio ...

  2. css 回到首页按钮,js+css实现回到顶部按钮(back to top)

    本文实例介绍了js+css实现回到顶部按钮的方法,分享给大家供大家参考,具体内容如下 效果 html css p#back-to-top{ position:fixed; bottom:100px; ...

  3. Vue+element UI实现“回到顶部”按钮组件

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/caomage/article/details/85006973 背景 开发框架是vue+webpac ...

  4. 小程序制作回到顶部按钮

    我们先看一下效果吧,直接上图. 第一种情况,当页面在顶部的时候,回到顶部按钮是不会出现的. 第二种情况,当页面在离开顶部一定距离的时候,回到顶部按钮出现 接下就是对代码的分析了: 在这里我们如果要使用 ...

  5. better-scroll的封装实现回到顶部按钮

    better-scroll的封装实现回到顶部按钮 话不多说先上效果: 实现better-scroll封装之前,先了解better-scroll的使用初始化等操作[better-scroll初始化] b ...

  6. VUE3中关于通栏和回到顶部按钮的实现

    <template><div id="demo"><transition name="top"><div id=&qu ...

  7. html5 按钮回到顶部,html页面添加返回顶部按钮

    html:css:.box {width: 100%;height: 100px;background: skyblue;}.box1 {width: 100% 利用 jQuery 中的 animat ...

  8. 2022最新可用网页百度分享按钮安装教程【网站添加百度分享按钮代码】

    简介: 2022最新可用百度分享是一个提供网页地址收藏.分享及发送的WEB2.0按钮工具,借助百度分享按钮,网站的浏览者可以方便的分享内容到人人网.开心网.QQ空间.新浪微博等一系列SNS站点. 网站 ...

  9. html5 回到顶部按钮,“返回顶部”按钮效果

    "返回顶部"按钮效果 pc端: 返回顶部 .wrapper { width: 1150px; height: 3582px; border: 2px solid black; } ...

最新文章

  1. HwServiceManager篇-Android10.0 HwBinder通信原理(五)
  2. GDI绘图基本步骤总结(经典)
  3. Ubuntu NFS搭建过程
  4. html加载js文件失败,firefox/chrome动态设置script加载js文件失败
  5. uboot源码——C阶段的start_armboot函数
  6. qwebkit 服务器调用本地html方法,用qt的QWebkit类调用谷歌地图
  7. 一篇博客读懂设计模式之---委派模式
  8. tag 和branch的区别
  9. matlab 函数教程,MATLAB函数 - Matlab教程
  10. 全国各地将推广电子证照,取代一证通
  11. 华为推送服务(Push)
  12. Goolgle Analytics
  13. Python核心编程 课后习题 第一部分
  14. android禁用传感器,Android 系统 强制 禁用 距离传感器 方法
  15. 如何画出美丽漂亮的三维立体图——Mathematica的快速上手
  16. B/S结构和C/S结构详细介绍
  17. rails 创建_使用Rails和Icecast创建在线流媒体广播
  18. java 四舍六入五成双_显示格式的四舍六入五成双
  19. 这几招对博勒飞粘度计检测精度的提升有很大帮助
  20. KISSY基础篇乄KISSY之DOM(2)

热门文章

  1. php为首字母的词语,PHP提取中英文词语及数字首字母的简单示例
  2. matlab 图像分割
  3. 2021芜湖高考成绩查询,2021芜湖市地区高考成绩排名查询,芜湖市高考各高中成绩喜报榜单...
  4. uc3842改可调电源教程_《学习笔记》--DC/DC电源电路设计实例
  5. cgi php是什么意思,cgi,fastcgi,php-cgi,php-fpm 是什么
  6. ue4蓝图碰撞检测的类型_UE4_自定义相机碰撞组件
  7. 倒计时几秒_电影《时间规划局》时间就是货币,每天看着自己的生命在倒计时...
  8. oracle的表空间的检查,oracle数据库检查所有表空间使用率的脚本
  9. 智能一代云平台(三十八):单元测试推动开发,如何避免服务之间依赖拖了工期
  10. 2年20亿搞自动驾驶+环卫,酷哇和中联环境成立合资子公司