// ==UserScript==
// @name 返回顶部和底部-美化版
// @version 1.0.0
// @description 在网页生成返回顶部和底部按钮,点击按钮即可返回顶部或底部。管鞋原作者
// @author 沐雨
// @license MIT
// @match *://*/*
// @grant GM_info
// @grant GM_addStyle
// @grant GM_setValue
// @grant GM_getValue
// @grant GM_getResourceText
// @resource css https://at.alicdn.com/t/c/font_3835736_lb5n0dgzerl.css
// @require http://code.jquery.com/jquery-1.11.0.min.js
// @require https://cdn.bootcdn.net/ajax/libs/interact.js/1.10.17/interact.min.js
// @namespace https://www.yuxi.com/
// @downloadURL none
// ==/UserScript==
;(function () {
'use strict'
var TBLink = function () {
var $ = $ || window.$
var $doc = $(document)
var $win = $(window)
const iconFont = GM_getResourceText('css')
var CreateHtml = function () {
var html = `
`
$('html body').append(html)
}
var CreateStyle = function () {
var style =
'#goTopBottom {position: fixed;bottom: 75px;right: 15px;z-index: 999999;display: flex;flex-direction: column;row-gap: 5px; }#goTopBottom .top {opacity: 0;}#goTopBottom .t-btn {display: flex;justify-content: center;align-items: center;width: 40px;height: 40px;cursor: pointer;color: #fff;border-radius: 4px;background-image: linear-gradient(to top right,#6966ff,#37e2d3);background-size: 100% 100%;}#goTopBottom .bottom {opacity: 0;transform: rotateX(180deg);}'
GM_addStyle(iconFont)
GM_addStyle(style)
}
var GoTB = function () {
var upperLimit = 100
var scrollSpeed = 500
var fadeSpeed = 300
var $top = $('#goTopBottom .gotop')
var $bottom = $('#goTopBottom .bottom')
if (getScrollTop() > upperLimit) {
$top.stop().fadeTo(0, 1, function () {
$top.show()
})
}
if (getScrollTop() + $(window).height() < $doc.height() - upperLimit) {
$bottom.stop().fadeTo(0, 1, function () {
$bottom.show()
})
}
$doc.scroll(function () {
if (getScrollTop() > upperLimit) {
$top.stop().fadeTo(fadeSpeed, 1, function () {
$top.css('visibility', 'visible')
})
} else {
$top.stop().fadeTo(fadeSpeed, 0, function () {
$top.css('visibility', 'hidden')
})
}
if (getScrollTop() + $(window).height() < $doc.height() - upperLimit) {
$bottom.stop().fadeTo(fadeSpeed, 1, function () {
$bottom.css('visibility', 'visible')
})
} else {
$bottom.stop().fadeTo(fadeSpeed, 0, function () {
$bottom.css('visibility', 'hidden')
})
}
})
$('#goTopBottom span').click(function () {
var $this = $(this)
var clsName = $this.attr('class')
const scrollHeight = clsName.includes('gotop') ? 0 : $doc.height()
$('html, body').animate({
scrollTop: scrollHeight
},scrollSpeed)
return false
})
}
var getScrollTop = function () {
var scrollTop = $doc.scrollTop() || $('html,body').scrollTop()
return scrollTop
}
/**
* 拖拽
*/
function dragging() {
var position = GM_getValue('gtb_pos') || {}
$('#goTopBottom span')
.off('.gtb')
.on({
'mouseover.gtb': function () {
//$(this).css("cursor","move");
},
'mousedown.gtb': function (el) {
var move = true
var $gtbBox = $('#goTopBottom')
var x = el.pageX - $gtbBox.offset().left
var y = el.pageY - $gtbBox.offset().top
$doc.on({
'mousemove.gtb': function (docEl) {
if (move) {
var x1 = docEl.pageX - x
var y1 = docEl.pageY - y
$gtbBox.offset({
left: x1,
top: y1
})
}
},
'mouseup.gtb': function () {
move = false
$doc.off('.gtb')
}
})
}
})
}
this.init = function () {
CreateStyle()
CreateHtml()
dragging()
GoTB()
}
}
var tbl = new TBLink()
tbl.init()
})()