MediaWiki:Common.css

来自神国反恶俗
七叶​(留言 | 贡献)2026年10月11日 (日) 14:42的版本
跳到导航跳到搜索

注意:在发布之后,您可能需要清除浏览器缓存才能看到所作出的更改的影响。

  • Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5或Ctrl-R(Mac为⌘-R)
  • Google Chrome:按Ctrl-Shift-R(Mac为⌘-Shift-R)
  • Edge:按住Ctrl的同时单击刷新,或按Ctrl-F5。
/* 这里的任何JavaScript将为所有用户在每次页面加载时加载。 */
( function () {

    function moveTOC() {
        var toc = document.getElementById( "toc" );
        if ( !toc ) {
            toc = document.querySelector( ".mw-table-of-contents-container" );
        }
        var sidebar = document.getElementById( "column-one" );
        if ( !toc || !sidebar ) {
            return;
        }
        if ( document.getElementById( "p-toc" ) ) {
            return;
        }
        var box = document.createElement( "div" );
        box.className = "portlet";
        box.id = "p-toc";
        var title = document.createElement( "h3" );
        title.textContent = "目录";
        var inner = document.createElement( "div" );
        inner.className = "pBody";
        inner.appendChild( toc );
        box.appendChild( title );
        box.appendChild( inner );
        sidebar.appendChild( box );
    }

    function pickLinks( portlet ) {
        var out = [];
        if ( !portlet ) {
            return out;
        }
        var links = portlet.querySelectorAll( "ul a" );
        for ( var i = 0; i < links.length; i++ ) {
            out.push( links[ i ] );
        }
        return out;
    }

    function makeSticky() {
        var old = document.getElementById( "sg-topbar" );
        if ( old ) {
            old.parentNode.removeChild( old );
        }

        var leftLinks = pickLinks( document.getElementById( "p-cactions" ) );
        var rightLinks = pickLinks( document.getElementById( "p-personal" ) );

        if ( leftLinks.length === 0 && rightLinks.length === 0 ) {
            return;
        }

        var bar = document.createElement( "div" );
        bar.id = "sg-topbar";
        bar.className = "sg-sticky-bar";

        var left = document.createElement( "div" );
        left.className = "sg-bar-left";
        for ( var i = 0; i < leftLinks.length; i++ ) {
            var a = document.createElement( "a" );
            a.href = leftLinks[ i ].href;
            a.textContent = leftLinks[ i ].textContent;
            left.appendChild( a );
        }

        var right = document.createElement( "div" );
        right.className = "sg-bar-right";
        for ( var j = 0; j < rightLinks.length; j++ ) {
            var b = document.createElement( "a" );
            b.href = rightLinks[ j ].href;
            b.textContent = rightLinks[ j ].textContent;
            right.appendChild( b );
        }

        bar.appendChild( left );
        bar.appendChild( right );
        document.body.appendChild( bar );

        var personal = document.getElementById( "p-personal" );
        var cactions = document.getElementById( "p-cactions" );
        if ( personal ) {
            personal.style.visibility = "hidden";
        }
        if ( cactions ) {
            cactions.style.visibility = "hidden";
        }

        document.body.className += " sg-sticky-on";
    }

    function run() {
        moveTOC();
        makeSticky();
    }

    if ( document.readyState === "loading" ) {
        document.addEventListener( "DOMContentLoaded", run );
    } else {
        run();
    }

}() );