一款回到顶部的 jQuery 插件,支持 Div 中的滚动条回到顶部
前言
今天在网上搜索“回到顶部”的 jQuery 插件,网上有很多,但是大部分都不支持让 Div 中的滚动条回到顶部。于是乎,不放弃,自己参考 Github 上的一个 jQuery 插件,经过自己的修改,终于让它支持了。
运行效果
口说无凭,写贴效果图:
这是当滚动条处于最顶部时,会自动隐藏“回到顶部”的按钮。

下图是当滚动条往下滚动到一定的距离(PS:这个距离可以配置),会自动出现“回到顶部”的图标。备注:这个图标的地址也可以配置。

下面是带滚动条的 DIV 的效果。

代码
jquery.goup.js 插件代码:
// https://github.com/rogervila/jquery-GoUP-plugin
// 笔者(http://music.cnblogs.com)已经修改了一些代码,和原来的有区别,请注意! (function ($) {
var defaultImgsrc = "http://goo.gl/VDOdQc";
var defaultImgWidth = 72;
if (typeof (document.scripts) != 'undefined') {
var js = document.scripts;
var currentJsPath = js[js.length - 1].src.substring(0, js[js.length - 1].src.lastIndexOf("/") + 1);
defaultImgsrc = currentJsPath + "back_to_top_white.gif";
defaultImgWidth = 38;
}
$.fn.goup = function (options) {
$.fn.goup.defaultOpts = {
alwaysAppear: false,
scrollTopContainner: null,
appearFromTop: 200,
scrollTime: 500,
imgSrc: defaultImgsrc, //it works with short urls
width: defaultImgWidth,
place: "bottom-right",
fadein: 500,
fadeout: 500,
opacity: 0.8,
marginX: 2,
marginY: 2
};
var opts = $.extend({}, $.fn.goup.defaultOpts, options);
return this.each(function () {
var goup = $(this);
goup.html("<a><img /></a>");
//var goupa = $('#goup a'),
// goupimg = $('#goup a img');
var goupa = goup.find("a");
var goupimg = goupa.find("img");
//width
goup.css({
"position": "fixed",
"display": "block",
"width": "'" + opts.width + "px'",
"z-index": "9"
});
//opacity
goupa.css("opacity", opts.opacity);
goupimg.attr("src", opts.imgSrc);
goupimg.width(opts.width);
if (!opts.alwaysAppear) {
goupimg.hide();
}
var jContainner;
var jWinObj;
if (opts.scrollTopContainner) {
jContainner = opts.scrollTopContainner;
jWinObj = jContainner;
}
else {
jContainner = $('body,html');
jWinObj = $(window);
}
//appearFromTop, fadein, fadeout
$(function () {
if (!opts.alwaysAppear) {
jWinObj.scroll(function () {
if ($(this).scrollTop() > opts.appearFromTop) {
goupimg.fadeIn(opts.fadein);
} else {
goupimg.fadeOut(opts.fadeout);
}
});
}
//hover effect
$(goupa).hover(function () {
$(this).css("opacity", "1.0");
$(this).css("cursor", "pointer");
}, function () {
$(this).css("opacity", opts.opacity);
}); //scrollTime
$(goupa).click(function () {
jContainner.animate({
scrollTop: 0
}, opts.scrollTime);
return false;
});
});
//place, marginX, marginY:
if (opts.place === "top-right") {
goup.css({
"top": opts.marginY + "%",
"right": opts.marginX + "%"
});
} else if (opts.place === "top-left") {
goup.css({
"top": opts.marginY + "%",
"left": opts.marginX + "%"
});
} else if (opts.place === "bottom-right") {
goup.css({
"bottom": opts.marginY + "%",
"right": opts.marginX + "%"
});
} else if (opts.place === "bottom-left") {
goup.css({
"bottom": opts.marginY + "%",
"left": opts.marginX + "%"
});
} else {
goup.css({
"bottom": opts.marginY + "%",
"right": opts.marginX + "%"
});
}
});
};
})(jQuery);
简单 Demo 代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script src="resources/scripts/jquery-1.10.1.min.js"></script>
<script src="resources/plugins/jquery-GoUP/jquery.goup.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$('#goup3').goup({
//alwaysAppear: false, /* 是否“回到顶部”图标总是出现,即:不隐藏 */
//scrollTopContainner: null, /* 该滚动条是否是 DIV 中的滚动条,如果是,请传入比如:$("#DivId") */
//appearFromTop: 200, /* 距离顶部多少像素就出现 */
//scrollTime: 500,/* 滚动到顶部花费的时间(毫秒数) */
////imgSrc: 'resources/plugins/jquery-GoUP/back_to_top_white.gif',
//place: "bottom-right",
//fadein: 500,
//fadeout: 500,
//opacity: 0.8,
//marginX: 2,
//marginY: 2
});
});
</script>
</head>
<body>
<div id='goup3'></div>
<h1>文本</h1>
<p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p>
<p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p>
<p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p>
<p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p>
<p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p>
<p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p>
<p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p>
<p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p>
<p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p>
<p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p>
<p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p>
<p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p>
<p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p>
<p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p>
<p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p>
<p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p>
<br /><br /><br /><br /><br /><br /><br />
<p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p>
<p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p>
<p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p>
<br /><br /><br /><br /><br /><br /><br />
<p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p>
<p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p>
<p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p>
<br /><br /><br /><br /><br /><br /><br />
<p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p>
<p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p>
<p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p>
</body>
</html>
带滚动条的 DIV 的 Demo
<script type="text/javascript">
$(document).ready(function () {
$('#goup').goup({
alwaysAppear: false,
scrollTopContainner:$("#reportDiv"),
marginX: 5,
marginY: 15
});
});
</script> <div id="reportDiv" style="overflow-y:scroll; ">
<div id='goup'></div>
<h1>文本</h1>
<p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p>
<p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p>
<p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p>
<p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p>
<p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p>
<p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p>
<p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p>
<p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p>
<p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p>
<p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p>
<p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p>
<p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p>
<p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p>
<p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p>
<p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p>
<p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p>
<br /><br /><br /><br /><br /><br /><br />
<p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p>
<p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p>
<p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p>
<br /><br /><br /><br /><br /><br /><br />
<p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p>
<p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p>
<p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p>
<br /><br /><br /><br /><br /><br /><br />
<p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p>
<p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p>
<p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p><p>水电费收费</p>
</div>
图标(备注:请下载下面这个图标,然后重命名为 back_to_top_white.gif,然后放到和 jquery.goup.js 相同的目录):



谢谢浏览!
一款回到顶部的 jQuery 插件,支持 Div 中的滚动条回到顶部的更多相关文章
- 40款非常棒的 jQuery 插件和制作教程(系列一)
jQuery 在现在的 Web 开发项目中扮演着重要角色,jQuery 让网站有更好的可用性和用户体验,让访问者对网站留下非常好的印象.jQuery以其插件众多.独特.轻量以及支持大规模的网站开发闻名 ...
- 10款最新流行的 jQuery 插件,值得你收藏
10款最新流行的 jQuery 插件,值得你收藏 http://www.cnblogs.com/lhb25/p/10-new-popular-jquery-plugins-check.html 你应该 ...
- 过去几个月出炉的30款最喜欢的 jQuery 插件
在这篇文章中,我们收集了一些在过去的几个月里最喜欢的 jQuery 插件.为了使您更容易搜索到自己喜欢的 jQuery 插件,我们已经对插件进行了分类: 页面布局插件,图片和视频插件,滑块和画廊,排版 ...
- 7 款超炫的 jQuery 插件
jQuery大大简化了我们的前端代码,因为jQuery的简单和开源,也涌现出了层出不穷的jQuery插件,这些实用的jQuery插件也不断推动着jQuery开源社区的发展.下面精选了几款让人跃跃欲试的 ...
- div产生的滚动条返回顶部
div产生的滚动条返回顶部 1.获取div js: let initialNode = document.getElementById("content") react: let ...
- vue 中<vue-scroll >滚动条回到顶部
今天项目碰到一个<vue-scroll >滚动条要回到顶部的需求,查询了好久终于解决了,这里记录一下: 其实就是scrollIntoView()方法的使用(官方文档): 需要注意的是要求页 ...
- jQuery插件编写学习中遇见的问题--attr prop
个人博客: https://chenjiahao.xyz 最近在学习jQuery的插件的编写,有两种方式,$.fn.extend以及$.extend,一种是作用于对象原型上,一种是直接作用于jQuer ...
- jQuery实现将div中滚动条滚动到指定位置的方法
1.JS代码: onload = function () { //初始化 scrollToLocation(); }; function scrollToLocation() { var mainCo ...
- 2014优秀的好用的20款免费jQuery插件推荐
2013 年最好的 20 款免费 jQuery 插件,世界买家网 www.buyerinfo.biz在这里分享给大家 这些插件对设计者和开发者都有很大的帮助,希望大家能够喜欢:) 现 今互联网市场上提 ...
随机推荐
- LOJ #6050. 「雅礼集训 2017 Day11」TRI
完全不会的数学神题,正解留着以后填坑 将一个口胡的部分分做法,我们考虑计算格点多边形(包括三角形)面积的皮克公式: \[S=a+\frac{1}{2}b-1\text({a为图形内部节点个数,b为边界 ...
- oracle无法插入数据
最近遇到一个问题,本来插入数据好好的,突然都不能插入了. 报错------------------->ora-01653:表无法通过128(在表空间)扩展 原因是表满了!!! 解决方案: 1. ...
- 万能的Python,还能用来制作高大上的进度条?
对于开发或者运维来说,使用Python去完成一些跑批任务,或者做一些监控事件是非常正常的情况.那么如何有效的监控任务的进度,除了在任务中加上log外,还能不能有另一种方式来了解任务进展到哪一步了呢? ...
- android学习---下拉刷新组建
Google官方的下拉刷新组建 activity代码实现: /** * The SwipeRefreshLayout should be used whenever the user * can re ...
- Ocelot.JwtAuthorize:一个基于网关的Jwt验证包
Ocelot作为基于.net core的API方关,有一个功能是统一验证,它的作用是把没有访问权限的请求挡在API网关外面,而不是到达API网关事端的API时才去验证:之前我有一篇博文https:// ...
- 【工利其器】必会工具之(三)systrace篇(1)官网翻译
前言 Android 开发者官网中对systrace(Android System Trace)有专门的介绍,本篇文章作为systrace系列的开头,笔者先不做任何介绍,仅仅翻译一下官网的介绍.在后续 ...
- Sentinel 流程分析
最近公司开始做新的项目.新项目准备用点新的技术.之前我们采用的是spring cloud的那一套.之前几个月看到阿里开始拥抱springcloud,推出好几个组件无缝兼容现有springcloud.我 ...
- vue-cli项目使用mock数据的方法(借助express)
前言 现如今前后端分离开发越来越普遍,前端人员写好页面后可以自己模拟一些数据进行代码测试,这样就不必等后端接口,提高了我们开发效率.今天就来分析下前端常用的mock数据的方式是如何实现的. 主体 项目 ...
- Java多线程打辅助的三个小伙子
前言 之前学多线程的时候没有学习线程的同步工具类(辅助类).ps:当时觉得暂时用不上,认为是挺高深的知识点就没去管了.. 在前几天,朋友发了一篇比较好的Semaphore文章过来,然后在浏览博客的时候 ...
- Springboot 系列(十一)使用 Mybatis(自动生成插件) 访问数据库
1. Springboot mybatis 介绍 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数获取 ...