Greasy Fork 支持简体中文。

36rain-layout-nightly

改变36雨布局的脚本文件,夜间模式

// ==UserScript==
// @name                36rain-layout-nightly
// @name:zh-CN          36rain页面适配插件
// @namespace           http://36rain.com
// @version             1.0.0
// @description         改变36雨布局的脚本文件,夜间模式
// @description:zh-CN   改变36雨布局的脚本文件,夜间模式
// @match               http://36rain.com/*
// @match               http://www.36rain.com/*
// @match               https://36rain.me/*
// @match               https://www.36rain.me/*
// @match               https://36rain.me/*
// @match               https://www.36rain.me/*
// @run-at              document-start
// @license             MIT
// @grant               GM_info
// @grant               GM_getValue
// @grant               GM_setValue
// @grant               GM_deleteValue
// @grant               GM_xmlhttpRequest
// @grant               GM_registerMenuCommand
// @grant               GM_openInTab
// @grant               GM_notification
// @grant               GM_addStyle
// @grant               GM_log
// @grant               GM_getResourceText
// @grant               GM_getResourceURL
// @grant               GM_listValues
// @grant               GM_addValueChangeListener
// @grant               GM_removeValueChangeListener
// @grant               GM_setClipboard
// @grant               GM_getTab
// @grant               GM_saveTab
// @grant               GM_getTabs
// @grant               GM_download
// ==/UserScript==



/*
    Author: 无名布女 
    Greasyfork: Put your Greasyfork profile page URL here.
*/


(function() {
    'use strict';

    const customCSS = `
    	body, html {
      	    font-size: 36px !important;
      	    line-height: 150% !important;
            color: #ffffff;
    	}

        html {
            background: radial-gradient(#333333 15%, transparent 16%), linear-gradient(45deg, transparent 49%, #333333 49% 51%, transparent 51%), linear-gradient(-45deg, transparent 49%, #333333 49% 51%, transparent 51%);
            background-size: 6em 6em;
            background-color: #252525;
            opacity: 1
        }
        #header {
            width: 60%; /* By default (for laptop and larger), width is 60% */
        }
        #user-login {
            width: 100% !important;
            display: block !important;
            font-size: 36px !important;
        }
        /* For mobile and tablets */
        @media screen and (max-width: 1024px) {
            #header {
                width: 96%; /* On screens smaller than 1024px wide, width becomes 100% */
            }
        }
        body {
            background: none !important;
        }
        #main {
            width: 100% !important;
        }
        #header > div:nth-child(3) {
            background: rgba(0,0,0,0.1) !important;
            color: #ffffff !important;
        }
        #guide {
            padding-right: 0px !important;
            color: #ffffff !important;
        }

        .guide li {
            margin: 10px 0px 10px 30px !important;
            float: right;
            color: #ffffff !important;
        }
        #wrapA {
            background: none !important;
            color: #ffffff !important;
        }
        #infobox {
            margin-top: 0px !important;
            padding-top: 40px !important;
            color: #ffffff !important;
            /* border-top: 1px dashed #ccc !important; */
        }

        #mainNav {
            margin-bottom: 0 !important;
            padding-bottom: 40px !important;
            color: #ffffff !important;
            /* border-bottom: 1px dashed #ccc !important; */
        }
        .input {
            font-size: 36px !important;
            height: 60px !important;
            margin-bottom: 40px !important;
        }
        .user-infoWrap2, .user-infoWrap2 * {
          line-height: 100% !important;
          font-size: 24px !important;
          color: #ffffff !important;
        }
    	.tr3 * {
            line-height: 150% !important;
            color: #ffffff !important;
        }
        .f10, .f10 * {
            font-size: 30px !important;
            color: #ffffff !important;
        }
        .tiptop, .tiptop * {
            font-size: 32px !important;
            line-height: 100% !important;
            margin-top: 20px !important;
            margin-bottom: 30px !important;
            border: 0px !important;
            color: #ffffff !important;
        }
        .listinline {
            display: none !important;
        }
        .t3 {
            margin-bottom: 20px !important;
            font-size: 40px !important;
            color: #ffffff !important;
        }
        .h {
            background: none !important;
            color: #ffffff !important;
        }
        #main > div.h2 {
            display: none !important;
        }
        .user-pic {
            margin-top: 10px !important;
            margin-bottom: 10px !important;
            margin-right: auto !important;
            margin-left: auto !important;
        }
        .pages {
            height: auto;
            line-height: 150% !important;
            width: 100% !important;
            margin-bottom: 40px;
            padding-top: 5px;
            padding-bottom: 5px;
            border: none !important;
            color: #ffffff !important;
        }
        .hthread {
            height: 36px !important;
            color: #ffffff !important;
        }
        .fl .threadlist {
            height: 100% !important;
            color: #ffffff !important;
        }
        .pages ul li {
            margin-right: 30px !important;
            color: #ffffff !important;
        }
        .pages ul .pagesone {
            background: none !important;
            border: none !important;
            color: #ffffff !important;
        }
        .pages input {
            font-size: 36px !important;
            height: auto !important;
        }
        .tpc_content, tpc_content * {
            border-top: 2px dashed #ccc !important;
            padding: 1em 0.5em 0.5em 0.5em !important;
            font-size: 40px !important;
            color: #ffffff !important;
        }
        .tr2, .tr2 * {
            height: auto;
            line-height: 150% !important;
            margin-bottom: 20px;
            background: rgba(252,250,242, 0.3) !important;
            color: #ffffff !important;
        }
        .f14 * {
            font-size: 40px !important;
            letter-spacing: normal !important;
            line-height: 200% !important;
            color: #ffffff !important;
        }
        .f14 h6, .f14 h6 * {
            font-size: inherit !important;
            color: #ffffff !important;
        }
        .f14 blockquote, .f14 blockquote3, .f14 blockquote2 {
            font-size: inherent !important;
            width: 100% !important;
            letter-spacing: normal !important;
            line-height: 200% !important;
            background: rgba(255, 255, 255, 0.2) !important;
            color: #ffffff !important;
        }
        .f10, .f10 * {
            font-size: 30px !important;
            color: #ffffff !important;
        }
        .h2, .h2 * {
            height: 40px !important;
            background: none !important;
            color: #ffffff !important;
        }
	    .guide {
            line-height: 150% !important;
            color: #ffffff !important;
        }
        .btn {
            font-size: 30px !important;
            color: #ffffff !important;
        }
        #post-option span { 
            width: 100% !important;
        }
        .tipad, .signature, .tipad *, .signature * {
            font-size: 32px !important;
        }     
        // #breadcrumbs, #breadcrumbs * {
        //     padding: 1em 3em 1em 7px !important;
        //     margin-right: 0px !important;
        //     background: none !important;
        //     border: none !important;
        // }
        .f_one, .t_one, .r_one {
            background: none !important;
            color: #ffffff !important;
        }
        tr > td.f_one:nth-child(1), tr > td.f_one:nth-child(3) {
            display: none !important;
        }
        #footer {
            background: none !important;
            color: #ffffff !important;
        }
        #smiliebox {
            background: none !important;
            border: none !important;
        }
        #one-key {
            display: none !important;
        }
        #shortcutforum li {
            float: right !important;
            color: #ffffff !important;
        }
        tr.tr1 th.r_two {
            background: none !important;
            color: #ffffff !important;
        }
        #user_info {
            width: 70% !important;
            color: #ffffff !important;
        }
        // remove user info
        #user_info > div:nth-child(3) > div > div > div {
            display: none !important;
        }
        .gonggao {
            display: none !important;
            color: #ffffff !important;
        }

        /// breadcrumbs
        #main > div.bdbA {
            height: auto !important;
            display: flex !important;
            align-items: center !important;
            padding: 0px !important;
        }
        #breadcrumbs {
            margin: 0px !important;
            display: flex !important;
            align-items: center !important;
            height: auto !important;
            overflow: visible !important;
            opacity: 0.8 !important;
        }
        #breadcrumbs .crumbs-item, #breadcrumbs .crumbs-item * {
            height: auto !important;
            overflow: visible !important;
            line-height: 150% !important;
        } 
        #breadcrumbs > span.fr.gray3 {
            line-height: 150% !important;
        }
        #notice {
            padding: 0px !important;
            height: auto !important;
            display: flex !important;
            align-items: center !important;
        }
        #notice0, #notice0 * {
            height: auto !important;
            width: 100% !important;
            overflow-y: visible !important;
            line-height: 150% !important;
        }
        div.tiptop > div.fr {
            visibility: hidden;
        }
        #td_tpc > div.tiptop > div.fr > input, #td_tpc > div.tiptop > div.fr > a[title="只看樓主的所有帖子"]  {
            visibility: visible !important;
        }
        div.tiptop > div.fr > input, div.tiptop > div.fr > a[title="只看該作者的所有回復"]  {
            visibility: visible !important;
        }
        // re-arrange fast0reply box
        div .t5 {
            width: 100% !important;
            overflow: scroll !important;
        }
        #r_dig {
            display: none !important;
        }
    `;

    // Function to replace img elements within specified anchors with text
    function replaceImageWithText(selector, newText) {
        var targetLinks = document.querySelectorAll(selector);
        targetLinks.forEach(function(anchor) {
            var img = anchor.querySelector('img');
            if (img) {
                img.remove(); // Remove the img element
                anchor.appendChild(document.createTextNode(newText)); // Add the text node
            }
        });
    }
    // function to replace img elements with font awesome icons
    function replaceImageWithIcon(selector, iconClass) {
        var targetLinks = document.querySelectorAll(selector);
        targetLinks.forEach(function(anchor) {
            var img = anchor.querySelector('img');
            if (img) {
                img.remove(); // Remove the img element
                var icon = document.createElement('i');
                icon.className = `${iconClass} fa-2x`; // Set the class name
                anchor.appendChild(icon); // Add the icon
            }
        });
    }
 
    // function to load progress bar
    function addProgressBar() {
        // add progress bar
        addScript('https://cdn.jsdelivr.net/npm/[email protected]/pace.min.js');
        addStylesheet('https://cdn.jsdelivr.net/npm/[email protected]/themes/silver/pace-theme-barber-shop.css');
    }
    // create and append links
    function createLink(div, url, text) {
        var link = document.createElement('a');
        link.href = url;
        link.target = "_blank";
        link.textContent = text;
        div.appendChild(link);
    }

    // function to add new script to <head>
    function addScript(url) {
        var head = document.head;
        var script = document.createElement('script');
        script.src = url;
        head.appendChild(script);
    }
    
    // function to add new stylesheet to <head>
    function addStylesheet(url) {
        var head = document.head;
        var link = document.createElement('link');
        link.rel = 'stylesheet';
        link.href = url;
        head.appendChild(link);
    }

    // function to center content
    function centerContent(element) {
        element.style.display = 'flex';
        element.style.justifyContent = 'center';
        element.style.alignItems = 'center';
        element.style.textAlign = 'center';
    }

    function centerContentVertical(element) {
        element.style.display = 'flex';
        element.style.justifyContent = 'center';
        element.style.alignItems = 'center';
        element.style.flexDirection = 'column';
        element.style.height = '100%';
    }
    

    // Function to apply styles to elements
    function applyStyles() {
        // replay reply and new post with f
        var ReplaySelectors = [
            '#main > div:nth-child(5) > span:nth-child(2) > a',
            '#main > div:nth-child(13) > span:nth-child(2) > a'
        ];
        ReplaySelectors.forEach(function(selector) {
            replaceImageWithIcon(selector, 'fas fa-reply');
        });
        var PostSelectors = [
            '#main > div:nth-child(5) > span:nth-child(1) > a',
            '#main > div:nth-child(13) > span:nth-child(1) > a',
            '#main > div:nth-child(9) > span.fr > a',
            '#main > div:nth-child(8) > span.fr > a',
            '#main > div:nth-child(14) > span.fr > a',
        ];
        PostSelectors.forEach(function(selector) {
            replaceImageWithIcon(selector, 'fas fa-file');
        });  

        var f10elements = document.querySelectorAll('.f10 *');
        f10elements.forEach(function(el) {
            el.style.setProperty('font-size', '30px', 'important');
        });

        // remove fast reply title
        var h2elements = document.querySelectorAll('.h2, .h2 *');
        h2elements.forEach(function(el) {
        //     el.style.setProperty('height', '36px', 'important');
             el.style.setProperty('background', 'none', 'important');
        });

        var h1elements = document.querySelectorAll('.h1, .h1 *');
        h1elements.forEach(function(el) {
            el.style.setProperty('font-size', '42px', 'important');
            el.style.setProperty('letter-spacing', 'normal', 'important');
            el.style.setProperty('line-height', '150%', 'important');
        });

        // Apply styles to user-infoWrap2 elements
        var userInfoElements = document.querySelectorAll('.user-infoWrap2, .user-infoWrap2 *');
        userInfoElements.forEach(function(el) {
            el.style.setProperty('font-size', '24px', 'important');
            el.style.setProperty('line-height', '150%', 'important');
        });

        // rearrange user login element
        var userLogin = document.querySelector('#mainNav > div:nth-child(2)');
        if (userLogin) {
            userLogin.style.setProperty('bottom', 'auto', 'important');
        }

        // Change width of the specified <td> element
        var tdToChangeWidth = document.querySelector('#main > form:nth-child(21) > div > table > tbody > tr:nth-child(3) > td:nth-child(2)');
        if (tdToChangeWidth) {
            tdToChangeWidth.style.setProperty('width', '100%', 'important'); // Change width to 70%
        } else {
            console.error("Target TD element to change width was not found.");
        }

        // Remove all <img> elements inside <th> elements
        var thElements = document.querySelectorAll('.tr3 th');
        thElements.forEach(function(th) {
            var imgElement = th.querySelector('img');
            if (imgElement) {
                console.log("IMG element found and will be removed:", imgElement.outerHTML);
                imgElement.style.setProperty('display', 'none', 'important');
                console.log("IMG element removed.");
            }
        });

        // Change the margin of the specified element
        var divToChangeMargin = document.querySelector('#main > form:nth-child(5) > div > div:nth-child(4) > div:nth-child(1)');
        if (divToChangeMargin) {
            divToChangeMargin.style.setProperty('margin', '20px', 'important'); // Change margin to desired value
            console.log("Changed margin of the element.");
        } else {
            console.error("Target element to change margin was not found.");
        }

        // Change the width of the specified element
        var divToChangeWidth = document.querySelector('#main > form:nth-child(5) > div > div:nth-child(4) > div:nth-child(1) > div');
        if (divToChangeWidth) {
            divToChangeWidth.style.setProperty('width', '100%', 'important'); // Change margin to desired value
            console.log("Changed margin of the element.");
        } else {
            console.error("Target element to change margin was not found.");
        }

        // Change the width of the specified element
        var divToChangeWidthInput = document.querySelector('#main > form:nth-child(5) > div > div:nth-child(4) > div:nth-child(1) > div > input');
        if (divToChangeWidthInput) {
            divToChangeWidthInput.style.setProperty('width', '75%', 'important'); // Change margin to desired value
            divToChangeWidthInput.style.setProperty('float', 'right', 'important'); // Change margin to desired value
            console.log("Changed margin of the element.");
        } else {
            console.error("Target element to change margin was not found.");
        }

        var spanToChangeFloat = document.querySelector('#main > form:nth-child(5) > div > div:nth-child(4) > div:nth-child(1) > div > span.fr.gray');
        if (spanToChangeFloat) {
            spanToChangeFloat.style.setProperty('float', 'left', 'important'); // Change margin to desired value
            console.log("Changed margin of the element.");
        } else {
            console.error("Target element to change margin was not found.");
        }

        // Combine styles for #editor-tab and #editor-tool
        var editorElements = ['#editor-tab', '#editor-tool', 
            '#editor-button > div:nth-child(3) > div'];
        editorElements.forEach(function(selector) {
            var element = document.querySelector(selector);
            if (element) {
                element.style.setProperty('font-size', '16px', 'important');
                // element.style.setProperty('height', '150%', 'important');
            } else {
                console.error(`Element with selector ${selector} was not found.`);
            }
        });
        var editorFooterElements = ['#main > form:nth-child(5) > div > table:nth-child(9) > tbody > tr:nth-child(2) > th > div > div', '#post-option > div > div'];
        editorFooterElements.forEach(function(selector) {
            var element = document.querySelector(selector);
            if (element) {
                element.style.setProperty('margin-left', '0px', 'important');
            } else {
                console.error(`Element with selector ${selector} was not found.`);
            }
        });

        var inputElements = document.querySelectorAll('textarea, input, select');
        inputElements.forEach(function(input) {
            if (input) {
                input.style.setProperty('font', '30px Arial', 'important');
            }
        });

        var ChangePtypeWidth = document.querySelector('#main > form:nth-child(5) > div > div:nth-child(4) > div:nth-child(1) > div > span.fr.gray > select');
        if (ChangePtypeWidth) {
            ChangePtypeWidth.style.setProperty('width', 'auto', 'important');
        }

        // Change width of <td> elements with width 25% to 33%, under .tr3 class
        var tdElements = document.querySelectorAll('.tr3 td[width="25%"]');
        tdElements.forEach(function(td) {
            td.style.setProperty('width', '33%', 'important'); // Change width to 33%
            var col2 = td.querySelector('table > tbody > tr > td:nth-child(2)');
            if (col2) {
                col2.style.setProperty('border', '0px', 'important');
                col2.style.setProperty('background', 'none', 'important');
            }
            var col1 = td.querySelector('table > tbody > tr > td:nth-child(1)');
            if (col1) {
                col1.style.setProperty('display', 'none', 'important');
            }
        });
        // remove the last column in headline
        var headlineElements = ['#main > div.t > table > tbody > tr.tr3.tac.h > td[width="25%"]:nth-child(4)', 
            '#main > div.t > table > tbody > tr:nth-child(2) > td[width="25%"]:nth-child(4)'
        ];
        headlineElements.forEach(function(selector) {
            var element = document.querySelector(selector);
            if (element) {
                element.style.setProperty('display', 'none', 'important');
            } 
        });  

        // var ItoRemove = document.querySelectorAll('#breadcrumbs .crumbs-item i');
        // ItoRemove.forEach(function(i) {
        //     i.style.setProperty('display', 'none', 'important');
        // });

        // Tr to be removed
        var trToRemove = ['#cate_info > tr:nth-child(1)', '#cate_info > tr:nth-child(2)', 
            '#cate_info > tr:nth-child(3)', '#cate_info > tr:nth-child(4)'
        ];
        trToRemove.forEach(function(selector) {
            var element = document.querySelector(selector);
            if (element) {
                element.style.setProperty('display', 'none', 'important');
            }
        });

        // change height of #ajaxtable > tbody:nth-child(1) > tr > th
        var thHeight = document.querySelectorAll('#ajaxtable > tbody > tr > th');
        thHeight.forEach(function(th) {
            th.style.setProperty('font-size', '24px', 'important');
        });

    }

    // Create and append style element
    var style = document.createElement('style');
    style.textContent = customCSS;
    document.head.appendChild(style);

    // add font awesome
    addStylesheet('https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css');
    
    // add progress bar
    addProgressBar();

    // Apply styles immediately
    applyStyles();

    // Apply styles to dynamically loaded content
    var observer = new MutationObserver(function(mutations) {
        applyStyles();
    });
    observer.observe(document.body, { childList: true, subtree: true });
    observer.disconnect();

    // just in case some contents are not loaded
    document.addEventListener('DOMContentLoaded', function() {
        applyStyles();
    });

    // Force a repaint
    document.body.style.display='none';
    document.body.offsetHeight;
    document.body.style.display='';

})();