MediaWiki:Common.js:修订间差异
来自神国反恶俗
跳到导航跳到搜索
无编辑摘要 |
无编辑摘要 |
||
| 第34行: | 第34行: | ||
/* ========================================================== | /* ========================================================== | ||
二、吸顶样式 | 二、吸顶样式 | ||
顶部一条通栏(左:编辑标签 / 右:账号) | |||
左侧栏吸顶并带上下滑动条 | |||
========================================================== */ | ========================================================== */ | ||
var STICKY_CSS = [ | var STICKY_CSS = [ | ||
'.sg-sticky-bar{', | '.sg-sticky-bar{', | ||
' position:fixed;left:0;right:0;top:0;z-index:401;', | ' position:fixed;left:0;right:0;top:0;z-index:401;', | ||
' display:flex;align-items:center;justify-content:space-between;', | |||
' background:#fff;box-shadow:0 1px 4px rgba(0,0,0,.18);', | ' background:#fff;box-shadow:0 1px 4px rgba(0,0,0,.18);', | ||
' padding:3px | ' padding:3px 12px;font-size:87%;line-height:1.3;', | ||
' white-space:nowrap;overflow:hidden;', | |||
'}', | '}', | ||
'.sg-bar-left{flex:0 1 auto;overflow:hidden;}', | |||
'.sg-bar-right{flex:0 0 auto;margin-left:auto;}', | |||
'.sg-sticky-bar a{', | '.sg-sticky-bar a{', | ||
' color:#36c;text-decoration:none;padding:2px | ' color:#36c;text-decoration:none;padding:2px 7px;', | ||
' display:inline-block;', | ' display:inline-block;', | ||
'}', | '}', | ||
'.sg-sticky-bar a:hover{text-decoration:underline;}', | '.sg-sticky-bar a:hover{text-decoration:underline;}', | ||
/* 左侧栏:吸顶 + 上下滑动条 */ | |||
'#column-one{', | '#column-one{', | ||
' position:sticky;top:var(--sg-top-offset,0px);', | ' position:sticky;top:var(--sg-top-offset,0px);', | ||
' align-self:flex-start;', | ' align-self:flex-start;', | ||
' max-height:calc(100vh - var(--sg-top-offset,0px) - 8px);', | |||
' overflow-y:auto;', | |||
' overflow-x:hidden;', | |||
'}', | '}', | ||
'body.sg-sticky-on #content{', | 'body.sg-sticky-on #content{', | ||
| 第63行: | 第72行: | ||
s.textContent = STICKY_CSS; | s.textContent = STICKY_CSS; | ||
document.head.appendChild( s ); | document.head.appendChild( s ); | ||
} | } | ||
| 第95行: | 第80行: | ||
var cactions = document.getElementById( 'p-cactions' ); /* 编辑标签那排 */ | var cactions = document.getElementById( 'p-cactions' ); /* 编辑标签那排 */ | ||
/* 先把上一条固定栏清掉 */ | |||
var old = document.getElementById( 'sg-topbar' ); | |||
/* | if ( old && old.parentNode ) { old.parentNode.removeChild( old ); } | ||
var | |||
if ( | |||
/* | /* 收集链接:编辑标签在左,账号在右 */ | ||
var | function pick( portlet ) { | ||
var out = []; | |||
if ( !portlet ) { return out; } | |||
Array.prototype.forEach.call( | |||
portlet.querySelectorAll( 'ul a' ), | |||
function ( a ) { | |||
out.push( { href: a.href, text: a.textContent } ); | |||
} | |||
); | |||
return out; | |||
} | } | ||
var leftLinks = pick( cactions ); | |||
var rightLinks = pick( personal ); | |||
if ( | /* 两边都空 → 不做固定栏,也不留白 */ | ||
if ( !leftLinks.length && !rightLinks.length ) { | |||
document.body.classList.remove( 'sg-sticky-on' ); | document.body.classList.remove( 'sg-sticky-on' ); | ||
document.documentElement.style.setProperty( '--sg-top-offset', '0px' ); | |||
return | |||
2026年10月11日 (日) 14:38的版本
/* 这里的任何JavaScript将为所有用户在每次页面加载时加载。 */
( function () {
/* ==========================================================
一、把页面里的目录(TOC)搬到左侧栏
========================================================== */
function moveTOC() {
var toc = document.getElementById( 'toc' )
|| document.querySelector( '.mw-table-of-contents-container' )
|| document.querySelector( '.mw-table-of-contents' );
var sidebar = document.getElementById( 'column-one' )
|| document.getElementById( 'mw-panel' );
if ( !toc || !sidebar || 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 );
}
/* ==========================================================
二、吸顶样式
顶部一条通栏(左:编辑标签 / 右:账号)
左侧栏吸顶并带上下滑动条
========================================================== */
var STICKY_CSS = [
'.sg-sticky-bar{',
' position:fixed;left:0;right:0;top:0;z-index:401;',
' display:flex;align-items:center;justify-content:space-between;',
' background:#fff;box-shadow:0 1px 4px rgba(0,0,0,.18);',
' padding:3px 12px;font-size:87%;line-height:1.3;',
' white-space:nowrap;overflow:hidden;',
'}',
'.sg-bar-left{flex:0 1 auto;overflow:hidden;}',
'.sg-bar-right{flex:0 0 auto;margin-left:auto;}',
'.sg-sticky-bar a{',
' color:#36c;text-decoration:none;padding:2px 7px;',
' display:inline-block;',
'}',
'.sg-sticky-bar a:hover{text-decoration:underline;}',
/* 左侧栏:吸顶 + 上下滑动条 */
'#column-one{',
' position:sticky;top:var(--sg-top-offset,0px);',
' align-self:flex-start;',
' max-height:calc(100vh - var(--sg-top-offset,0px) - 8px);',
' overflow-y:auto;',
' overflow-x:hidden;',
'}',
'body.sg-sticky-on #content{',
' padding-top:var(--sg-top-offset,0px) !important;',
'}'
].join( '\n' );
function injectCSS() {
if ( document.getElementById( 'sg-sticky-style' ) ) { return; }
var s = document.createElement( 'style' );
s.id = 'sg-sticky-style';
s.type = 'text/css';
s.textContent = STICKY_CSS;
document.head.appendChild( s );
}
function makeSticky() {
injectCSS();
var personal = document.getElementById( 'p-personal' ); /* 账号那排 */
var cactions = document.getElementById( 'p-cactions' ); /* 编辑标签那排 */
/* 先把上一条固定栏清掉 */
var old = document.getElementById( 'sg-topbar' );
if ( old && old.parentNode ) { old.parentNode.removeChild( old ); }
/* 收集链接:编辑标签在左,账号在右 */
function pick( portlet ) {
var out = [];
if ( !portlet ) { return out; }
Array.prototype.forEach.call(
portlet.querySelectorAll( 'ul a' ),
function ( a ) {
out.push( { href: a.href, text: a.textContent } );
}
);
return out;
}
var leftLinks = pick( cactions );
var rightLinks = pick( personal );
/* 两边都空 → 不做固定栏,也不留白 */
if ( !leftLinks.length && !rightLinks.length ) {
document.body.classList.remove( 'sg-sticky-on' );
document.documentElement.style.setProperty( '--sg-top-offset', '0px' );
return