Scroll to Bottom and Top Button

Add buttons to scroll to the bottom and top of the website

目前為 2025-03-17 提交的版本,檢視 最新版本

// ==UserScript==
// @name         Scroll to Bottom and Top Button
// @name:zh      底部和顶部按钮
// @namespace    https://gf.qytechs.cn/
// @version      0.91
// @description  Add buttons to scroll to the bottom and top of the website
// @description:zh
// @author       ghzxs
// @match        *://*/*
// @license     MIT
// @grant        none
// @run-at       document-end
// ==/UserScript==

(function() {
    'use strict';
    if (window !== window.top) {
        return;
    }

    // Base64-encoded SVG data for bottom icon
    const base64BottomIcon = 'PHN2ZyBzdHJva2U9ImN1cnJlbnRDb2xvciIgZmlsbD0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIyIiB2aWV3Qm94PSIwIDAgMjQgMjQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgY2xhc3M9Imljb24tc20gbS0xIiBoZWlnaHQ9IjFlbSIgd2lkdGg9IjFlbSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48bGluZSB4MT0iMTIiIHkxPSI1IiB4Mj0iMTIiIHkyPSIxOSI+PC9saW5lPjxwb2x5bGluZSBwb2ludHM9IjE5IDEyIDEyIDE5IDUgMTIiPjwvcG9seWxpbmU+PC9zdmc+';

    // Base64-encoded SVG data for top icon
    const base64TopIcon = 'PHN2ZyBzdHJva2U9ImN1cnJlbnRDb2xvciIgZmlsbD0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIyIiB2aWV3Qm94PSIwIDAgMjQgMjQiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgY2xhc3M9Imljb24tc20gbS0xIiBoZWlnaHQ9IjFlbSIgd2lkdGg9IjFlbSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48bGluZSB4MT0iMTIiIHkxPSIxOSIgeDI9IjEyIiB5Mj0iNSI+PC9saW5lPjxwb2x5bGluZSBwb2ludHM9IjUgMTIgMTIgNSAxOSAxMiI+PC9wb2x5bGluZT48L3N2Zz4=';

    // Create the bottom button
    const bottomButton = document.createElement('button');
    const bottomImg = document.createElement('img');
    bottomImg.src = `data:image/svg+xml;base64,${base64BottomIcon}`;
    bottomImg.alt = 'Scroll to Bottom';
    bottomImg.style.width = '16px';
    bottomImg.style.height = '16px';
    bottomImg.style.display = 'block';
    bottomButton.appendChild(bottomImg);

    // Apply styles to the bottom button
    bottomButton.style.position = 'fixed';
    bottomButton.style.bottom = '14px';
    bottomButton.style.right = '14px';
    bottomButton.style.zIndex = '1';
    bottomButton.style.backgroundColor = 'none';
    bottomButton.style.border = '0.5px solid transparent';
    bottomButton.style.borderRadius = '50%';
    bottomButton.style.padding = '4px';
    bottomButton.style.cursor = 'pointer';
    bottomButton.style.display = 'flex';
    bottomButton.style.alignItems = 'center';
    bottomButton.style.justifyContent = 'center';

    // Add click event listener to scroll to the bottom
    bottomButton.addEventListener('click', function() {
        window.scrollTo({
            top: document.body.scrollHeight,
            behavior: 'smooth'
        });
    });

    // Append the bottom button to the body
    document.body.appendChild(bottomButton);

    // Create the top button
    const topButton = document.createElement('button');
    const topImg = document.createElement('img');
    topImg.src = `data:image/svg+xml;base64,${base64TopIcon}`;
    topImg.alt = 'Scroll to Top';
    topImg.style.width = '16px';
    topImg.style.height = '16px';
    topImg.style.display = 'block';
    topButton.appendChild(topImg);

    // Apply styles to the top button
    topButton.style.position = 'fixed';
    topButton.style.bottom = '50px';
    topButton.style.right = '14px';
    topButton.style.zIndex = '1';
    topButton.style.backgroundColor = 'none';
    topButton.style.border = '0.5px solid transparent';
    topButton.style.borderRadius = '50%';
    topButton.style.padding = '4px';
    topButton.style.cursor = 'pointer';
    topButton.style.display = 'flex';
    topButton.style.alignItems = 'center';
    topButton.style.justifyContent = 'center';

    // Add click event listener to scroll to the top
    topButton.addEventListener('click', function() {
        window.scrollTo({
            top: 0,
            behavior: 'smooth'
        });
    });

    // Append the top button to the body
    document.body.appendChild(topButton);

    // Function to toggle the visibility of the top button
    function toggleTopButton() {
        if (window.scrollY === 0) {
            topButton.style.display = 'none';
        } else {
            topButton.style.display = 'flex';
        }
    }

    // Initial check
    toggleTopButton();

    // Add scroll event listener to toggle the top button
    window.addEventListener('scroll', toggleTopButton);
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址