MediaWiki:Vector.css:修订间差异

来自格里芬Wiki
无编辑摘要
无编辑摘要
第1行: 第1行:
```css
/* =========================================================
/* =========================================================
   Griffin Wiki
   Griffin Wiki
   MediaWiki:Vector.css
   MediaWiki:Vector.css


   Vector 2022 Complete Visual Enhancement
   Vector 2022 Custom Theme
   ---------------------------------------------------------
   Clean Edition
  White UI / Animation / Sidebar / Header / Main Page
   ========================================================= */
   ========================================================= */




/* =========================================================
/* =========================================================
   01. GLOBAL BASE
   01. GLOBAL
   ========================================================= */
   ========================================================= */


第17行: 第15行:
     scroll-behavior: smooth;
     scroll-behavior: smooth;
}
}


body {
body {
     background: #ffffff !important;
     background: #ffffff;
     color: #202122 !important;
     color: #202122;
}
}


```css
/* =========================================================
  Vector 2022 - 功能栏点击上滑效果
  ========================================================= */


/* 右侧功能栏按钮 */
/* 全局过渡 */
.vector-header-end .vector-dropdown-label {
    transition:
        transform 0.16s ease,
        background-color 0.18s ease;
}


/* 鼠标悬停 */
a,
.vector-header-end .vector-dropdown-label:hover {
button,
    transform: translateY(-1px);
input,
}
 
/* 点击 / 选中瞬间 */
.vector-header-end .vector-dropdown-label:active {
    transform: translateY(-3px);
}
 
 
/* 如果菜单处于展开状态,让按钮保持轻微上移 */
.vector-header-end .vector-dropdown[aria-expanded="true"]
.vector-dropdown-label {
.vector-dropdown-label {
     transform: translateY(-2px);
     transition:
        color .2s ease,
        background-color .2s ease,
        transform .15s ease,
        box-shadow .2s ease;
}
}
```






/* =========================================================
/* =========================================================
   02. VECTOR 2022 HEADER
   02. HEADER
   ========================================================= */
   ========================================================= */


.vector-header-container {
.vector-header-container {
     background: #ffffff !important;
 
     border-bottom: 1px solid #eaecf0;
     background:
        #ffffff !important;
 
     border-bottom:
        1px solid #eaecf0;


     transition:
     transition:
         background-color 0.25s ease,
         box-shadow .25s ease,
         border-color 0.25s ease,
         background-color .25s ease;
        box-shadow 0.25s ease;
}
}


.vector-header-container:hover {
.vector-header-container:hover {
     box-shadow:
     box-shadow:
         0 4px 18px rgba(0, 0, 0, 0.055);
         0 3px 15px rgba(0,0,0,.06);
}
}




/* =========================================================
/* =========================================================
   03. PAGE ENTER ANIMATION
   03. LOGO AREA
  ---------------------------------------------------------
  只淡入,不使用 translateY,
  防止页面进入时出现“向下移动”的感觉。
   ========================================================= */
   ========================================================= */


.mw-page-container,
 
.mw-content-container {
.vector-header-start button {
     animation:
 
         griffinPageFade 0.3s ease-out;
     transition:
         transform .15s ease,
        background-color .2s ease;
}
}


@keyframes griffinPageFade {
    from {
        opacity: 0;
    }


     to {
.vector-header-start button:hover {
         opacity: 1;
 
     }
     transform:
         translateY(-1px);
 
    background:
        rgba(51,102,255,.06);
 
     border-radius:
        6px;
}
}




/* 防止动画导致页面整体位移 */
.vector-header-start button:active {


.mw-page-container,
    transform:
.mw-content-container,
        translateY(-2px)
.vector-body {
        scale(.97);
    transform: none;
}
}




/* =========================================================
/* =========================================================
   04. GLOBAL TRANSITIONS
   04. RIGHT HEADER FUNCTIONS
   ========================================================= */
   ========================================================= */


a,
 
button,
/*
input,
  右侧:
select,
  搜索
textarea,
  外观
.mw-ui-button,
  工具
.vector-menu-heading,
  用户菜单
.vector-pinnable-element,
 
.infobox,
  只做轻微交互
.thumbinner {
*/
     transition:
 
         color 0.2s ease,
 
        background-color 0.2s ease,
.vector-header-end .vector-dropdown-label {
        border-color 0.2s ease,
 
         box-shadow 0.25s ease,
     transform:
        transform 0.2s ease,
         translateY(0);
        opacity 0.2s ease;
 
    border-radius:
         6px;
}
}




/* =========================================================
.vector-header-end
  05. LINKS
.vector-dropdown-label:hover {
  ========================================================= */
 
    transform:
        translateY(-1px);


a {
     background:
     color: #3366cc;
        rgba(51,102,255,.05);
}
}


a:visited {
 
     color: #6b5cff;
.vector-header-end
.vector-dropdown-label:active {
 
     transform:
        translateY(-1.5px);
}
}


a:hover {
 
     color: #2956b8;
/* 打开状态 */
 
.vector-header-end
.vector-dropdown[aria-expanded="true"]
.vector-dropdown-label {
 
     transform:
        translateY(-1px);
}
}


.mw-parser-output a:hover {
    text-decoration: underline;
}




/* =========================================================
/* =========================================================
   06. BUTTONS
   05. DROPDOWN ANIMATION
   ========================================================= */
   ========================================================= */


button:hover,
input[type="submit"]:hover,
input[type="button"]:hover,
.mw-ui-button:hover {
    box-shadow:
        0 3px 10px rgba(0, 0, 0, 0.08);
}


button:active,
.vector-header-end
input[type="submit"]:active,
.vector-dropdown-content {
input[type="button"]:active,
 
.mw-ui-button:active {
 
     transform: scale(0.97);
     opacity:
}
        0;




/* =========================================================
    transform:
  07. LEFT SIDEBAR
  ========================================================= */


.vector-sidebar {
        translateY(-4px)
    background: #fbfbfb !important;
        scale(.98);
    border-right: 1px solid #eaecf0;
}




/* Sidebar 模块 */
    transform-origin:
        top right;


.vector-sidebar .vector-pinnable-element {
    border-radius: 8px;


     transition:
     transition:
        background-color 0.2s ease,
 
         box-shadow 0.2s ease,
         opacity .18s ease,
         transform 0.2s ease;
         transform .18s ease;
 
}
}


.vector-sidebar .vector-pinnable-element:hover {
 
     background:
 
         rgba(51, 102, 255, 0.025);
.vector-header-end
.vector-dropdown[aria-expanded="true"]
.vector-dropdown-content {
 
 
    opacity:
        1;
 
 
     transform:
 
         translateY(0)
        scale(1);
 
}
}




/* Sidebar 标题 */


.vector-sidebar .vector-menu-heading {
/* 菜单项目 */
    cursor: pointer;
 
 
.vector-header-end
.vector-dropdown-content
.mw-list-item a {


    border-radius: 6px;


     transition:
     transition:
         background-color 0.2s ease,
 
         color 0.2s ease,
         background-color .15s ease,
        padding-left 0.2s ease;
         transform .15s ease;
 
}
}


.vector-sidebar .vector-menu-heading:hover {
    background:
        rgba(51, 102, 255, 0.06);
}




/* Sidebar 链接 */
.vector-header-end
.vector-dropdown-content
.mw-list-item a:hover {
 
 
    transform:
        translateX(3px);
 
 
    background:
        rgba(51,102,255,.05);


.vector-sidebar a:hover {
    padding-left: 4px;
}
}




/* =========================================================
/* =========================================================
   08. SIDEBAR EXPAND / COLLAPSE
   06. SIDEBAR
   ========================================================= */
   ========================================================= */


/*
 
  不使用 display:none / visibility:hidden,
.vector-sidebar {
  避免破坏 Vector 2022 原本的菜单控制逻辑。
 
*/
    background:
        #fbfbfb !important;
 
    border-right:
        1px solid #eaecf0;
}
 
 


.vector-sidebar
.vector-sidebar
.vector-pinnable-element
.vector-menu-heading {
.vector-menu-content {
 
     overflow: hidden;
 
    border-radius:
        6px;
 
 
     cursor:
        pointer;
 


     transition:
     transition:
         max-height 0.35s ease,
 
         opacity 0.25s ease,
         background-color .2s ease,
        transform 0.25s ease;
         padding-left .2s ease;
 
}
}




/* 展开状态 */


.vector-sidebar
.vector-sidebar
.vector-pinnable-element.vector-menu-open
.vector-menu-heading:hover {
.vector-menu-content {
 
     opacity: 1;
 
     transform: translateY(0);
     background:
 
        rgba(51,102,255,.06);
 
 
     padding-left:
        4px;
 
}
}




/* Sidebar 菜单项目 */
 
/* Sidebar 链接 */
 


.vector-sidebar
.vector-sidebar
.vector-pinnable-element
a {
.vector-menu-content li {
 
 
     transition:
     transition:
         opacity 0.22s ease,
 
         transform 0.22s ease;
         transform .15s ease,
         color .15s ease;
 
}
}




/* 展开后的轻微滑入 */


.vector-sidebar
.vector-sidebar
.vector-pinnable-element.vector-menu-open
a:hover {
.vector-menu-content li {
 
    opacity: 1;
 
     transform: translateX(0);
     transform:
        translateX(3px);
 
}
}




/* Stagger */
 
/* =========================================================
  07. SIDEBAR MENU MOTION
  ========================================================= */
 


.vector-sidebar
.vector-sidebar
.vector-pinnable-element.vector-menu-open
.vector-menu-content {
.vector-menu-content li:nth-child(1) {
 
     transition-delay: 0.02s;
 
     transition:
 
        opacity .25s ease,
        transform .25s ease;
 
}
}
/*
  不改变 display
  避免破坏 Vector JS
*/


.vector-sidebar
.vector-sidebar
.vector-pinnable-element.vector-menu-open
.vector-menu-content {
.vector-menu-content li:nth-child(2) {
 
    transition-delay: 0.04s;
}


.vector-sidebar
    opacity:
.vector-pinnable-element.vector-menu-open
        .98;
.vector-menu-content li:nth-child(3) {
    transition-delay: 0.06s;
}


.vector-sidebar
    transform:
.vector-pinnable-element.vector-menu-open
        translateX(0);
.vector-menu-content li:nth-child(4) {
    transition-delay: 0.08s;
}


.vector-sidebar
.vector-pinnable-element.vector-menu-open
.vector-menu-content li:nth-child(5) {
    transition-delay: 0.10s;
}
}


.vector-sidebar
.vector-pinnable-element.vector-menu-open
.vector-menu-content li:nth-child(6) {
    transition-delay: 0.12s;
}




/* =========================================================
/* =========================================================
   09. LOGO LEFT MAIN MENU
   08. PAGE FADE
   ========================================================= */
   ========================================================= */


/*
  Logo 左侧的主菜单按钮。
  不改变 MediaWiki 原本的显示机制。
*/


.vector-header-start button,
.mw-page-container,
.vector-header-start .mw-ui-icon {
.mw-content-container {
     transition:
 
        transform 0.15s ease,
 
         background-color 0.2s ease,
     animation:
        box-shadow 0.2s ease;
 
}
         griffinFade .3s ease-out;


.vector-header-start button:hover {
    transform: scale(1.04);
}
}


.vector-header-start button:active {
    transform: scale(0.92);
}




/* 主菜单 */
@keyframes griffinFade {


.vector-main-menu,
#vector-main-menu,
#vector-main-menu-dropdown {
    transform-origin: top left;


     transition:
     from {
        opacity 0.22s ease,
        transform 0.22s ease,
        box-shadow 0.22s ease;
}


        opacity:
            0;


/* 已知的打开状态 */
    }


.vector-main-menu--open,
.vector-main-menu.vector-menu-open,
#vector-main-menu-dropdown.vector-menu-open {
    opacity: 1;
    transform:
        translateY(0)
        scale(1);


     box-shadow:
     to {
        0 8px 24px rgba(0, 0, 0, 0.10);
}


        opacity:
            1;


/* 主菜单项目 */
    }


.vector-main-menu a,
#vector-main-menu a {
    transition:
        color 0.18s ease,
        background-color 0.18s ease,
        transform 0.18s ease;
}
}


.vector-main-menu a:hover,
#vector-main-menu a:hover {
    transform: translateX(3px);
}




/* =========================================================
/* =========================================================
   10. RIGHT HEADER CONTROLS
   09. HEADINGS
   ========================================================= */
   ========================================================= */


/*
  Vector 2022 右侧通常包括:
  - 搜索
  - 用户菜单
  - 外观
  - 工具
  - 更多


  这里只做视觉反馈,不接管菜单的 display 状态。
.mw-first-heading {
*/
 
 
    position:
        relative;


    padding-bottom:
        10px;


.vector-header-end button,
.vector-header-end .vector-dropdown-label {
    transition:
        transform 0.12s ease,
        background-color 0.18s ease,
        box-shadow 0.18s ease,
        color 0.18s ease;
}
}




/* Hover */


.vector-header-end button:hover,
.mw-first-heading::after {
.vector-header-end .vector-dropdown-label:hover {
 
 
    content:
        "";
 
    display:
        block;
 
 
    width:
        60px;
 
 
    height:
        3px;
 
 
    margin-top:
        8px;
 
 
    border-radius:
        3px;
 
 
     background:
     background:
        rgba(51, 102, 255, 0.055);


    border-radius: 6px;
        linear-gradient(
            90deg,
            #3366cc,
            #6f7cff,
            #ff4fa3
        );
 
}
}




/* 点击 */


.vector-header-end button:active,
.mw-parser-output h2 {
.vector-header-end .vector-dropdown-label:active {
 
    transform: scale(0.94);
 
}
    border-bottom:
        1px solid #eaecf0;


    padding-bottom:
        6px;


}
/* =========================================================
/* =========================================================
   11. RIGHT DROPDOWN MENUS
   10. INFOBOX
   ========================================================= */
   ========================================================= */


/*
  重点:
  不使用 opacity:0 或 pointer-events:none
  去强制隐藏菜单。


  MediaWiki 自己负责打开 / 关闭。
.infobox {
  CSS 只负责打开后的视觉动画。
 
*/
    background:
        #f8f9fa !important;


.vector-dropdown-content {
    transform-origin: top right;


     transition:
     border:
         transform 0.18s ease,
         1px solid #c8ccd1;
        opacity 0.18s ease,
        box-shadow 0.2s ease;
}




/* Vector Dropdown 打开 */
    border-radius:
        8px;


.vector-dropdown.vector-dropdown--open
.vector-dropdown-content {
    transform:
        translateY(0)
        scale(1);


     box-shadow:
     box-shadow:
        0 8px 24px rgba(0, 0, 0, 0.12);
}


        0 2px 8px rgba(0,0,0,.05);
    overflow:
        hidden;


/* Dropdown 内容 */


.vector-dropdown-content .mw-list-item a {
     transition:
     transition:
         background-color 0.16s ease,
 
         color 0.16s ease,
         transform .25s ease,
         padding-left 0.16s ease;
         box-shadow .25s ease,
         border-color .25s ease;
 
}
}




/* Dropdown Hover */


.vector-dropdown-content .mw-list-item a:hover {
.infobox:hover {
    background:
 
        rgba(51, 102, 255, 0.06);


     padding-left: 4px;
     transform:
}


        translateY(-2px);


/* =========================================================
  12. VECTOR POPUPS
  ========================================================= */


.vector-popup {
    border-color:
    transition:
        opacity 0.18s ease,
        transform 0.18s ease,
        box-shadow 0.2s ease;
}


        #b8c2d9;


/* =========================================================
  13. MAIN HEADING
  ========================================================= */


.mw-first-heading {
    box-shadow:
    position: relative;


    padding-bottom: 10px;
        0 8px 22px rgba(0,0,0,.10);


    animation:
        griffinTitleFade 0.45s ease-out;
}
}


@keyframes griffinTitleFade {
    from {
        opacity: 0;
    }


    to {
 
        opacity: 1;
/* Infobox 顶部装饰线 */
    }
 
}
 
.infobox::before {




/* 标题底部渐变线 */
    content:
        "";


.mw-first-heading::after {
    content: "";


     display: block;
     display:
        block;


    width: 60px;
    height: 3px;


     margin-top: 8px;
     height:
        3px;


    border-radius: 3px;


     background:
     background:
         linear-gradient(
         linear-gradient(
             90deg,
             90deg,
             #3366ff,
             #3366cc,
             #6f7cff,
             #6f7cff,
             #ff4fa3
             #ff4fa3
         );
         );


    transform-origin: left;
    animation:
        griffinTitleLine 0.55s ease-out;
}
}


@keyframes griffinTitleLine {
    from {
        width: 0;
        opacity: 0;
    }


    to {
        width: 60px;
        opacity: 1;
    }
}




/* =========================================================
/* =========================================================
   14. SECTION HEADINGS
   11. TABLE
   ========================================================= */
   ========================================================= */


.mw-parser-output h2 {
    position: relative;


    animation:
.wikitable {
        griffinSectionFade 0.3s ease-out;
}


@keyframes griffinSectionFade {
    from {
        opacity: 0;
    }


     to {
     border:
        opacity: 1;
    }
}


        1px solid #c8ccd1;


/* H2 左侧装饰条 */


.mw-parser-output h2::before {
    border-radius:
    content: "";


    position: absolute;
        8px;


    left: -10px;
    top: 50%;


     width: 3px;
     overflow:
    height: 16px;


    border-radius: 3px;
        hidden;


    background: #3366ff;


     transform:
     box-shadow:
        translateY(-50%)
        scaleY(0);


    transform-origin: center;
        0 2px 8px rgba(0,0,0,.04);


    animation:
        griffinHeadingBar 0.4s ease-out forwards;
}
}


@keyframes griffinHeadingBar {
    to {
        transform:
            translateY(-50%)
            scaleY(1);
    }
}




/* =========================================================
.wikitable th {
  15. INFOBOX
 
  ========================================================= */
 
    background:


.infobox {
        #f8f9fa;
    position: relative;


    overflow: hidden;


     background: #f8f9fa !important;
     font-weight:


    border: 1px solid #c8ccd1;
        600;


    transition:
        transform 0.25s ease,
        box-shadow 0.25s ease,
        border-color 0.25s ease;
}
}




/* Hover */


.infobox:hover {
.wikitable tr {
    transform: translateY(-2px);


    border-color:
        #b8c2d9;


     box-shadow:
     transition:
        0 8px 22px rgba(0, 0, 0, 0.10);
}


        background-color .15s ease;


/* 顶部扫描线 */
}


.infobox::before {
    content: "";


    position: absolute;


    top: 0;
.wikitable tr:hover {
    left: -50%;


    width: 200%;
    height: 2px;


     background:
     background:
        linear-gradient(
            90deg,
            transparent,
            rgba(51, 102, 255, 0.25),
            rgba(255, 79, 163, 0.25),
            transparent
        );


    animation:
         rgba(51,102,255,.035);
         griffinScanline 5s linear infinite;
 
}
}


@keyframes griffinScanline {
    from {
        transform: translateX(0);
    }


    to {
        transform: translateX(50%);
    }
}




/* =========================================================
/* =========================================================
   16. IMAGES
   12. IMAGES
   ========================================================= */
   ========================================================= */


.thumbinner {
.thumbinner {
    background:
        #ffffff;
    border:
        1px solid #eaecf0;
    border-radius:
        8px;
    box-shadow:
        0 2px 8px rgba(0,0,0,.05);
     transition:
     transition:
         transform 0.25s ease,
 
         box-shadow 0.25s ease;
         transform .25s ease,
         box-shadow .25s ease;
 
}
}


.thumbinner:hover {
.thumbinner:hover {
    transform:
        translateY(-3px);
     box-shadow:
     box-shadow:
         0 6px 18px rgba(0, 0, 0, 0.08);
 
         0 8px 20px rgba(0,0,0,.10);
 
}
}


.thumbinner img {
.thumbinner img {
     transition:
     transition:
         transform 0.25s ease;
 
         transform .25s ease;
 
}
}


.thumbinner img:hover {
 
     transform: scale(1.02);
 
.thumbinner:hover img {
 
 
     transform:
 
        scale(1.02);
 
}
}




/* =========================================================
/* =========================================================
   17. LIST INTERACTION
   13. TOC
   ========================================================= */
   ========================================================= */


.mw-parser-output li {
 
     transition:
.toc {
         transform 0.15s ease;
 
 
    background:
 
        #f8f9fa;
 
 
    border:
 
        1px solid #eaecf0;
 
 
    border-radius:
 
        8px;
 
 
     box-shadow:
 
         0 2px 8px rgba(0,0,0,.04);
 
}
}


.mw-parser-output li:hover {
 
     transform:
 
         translateX(2px);
.toc a:hover {
 
 
     color:
 
         #3366cc;
 
}
}




/* =========================================================
/* =========================================================
   18. INPUT / SEARCH
   14. CODE BLOCK
   ========================================================= */
   ========================================================= */


input,
 
textarea,
pre,
select {
.mw-code {
     transition:
 
         border-color 0.2s ease,
 
         box-shadow 0.2s ease,
    background:
         background-color 0.2s ease;
 
        #f8f9fa;
 
 
     border:
 
         1px solid #eaecf0;
 
 
    border-radius:
 
         8px;
 
 
    padding:
 
         12px;
 
}
}


input:focus,
textarea:focus,
select:focus {
    border-color:
        #3366cc;


    box-shadow:
        0 0 0 2px rgba(51, 102, 204, 0.12);


     outline: none;
 
code {
 
 
     background:
 
        #f8f9fa;
 
 
    border:
 
        1px solid #eaecf0;
 
 
    border-radius:
 
        4px;
 
 
    padding:
 
        2px 5px;
 
}
}




/* =========================================================
/* =========================================================
   19. MAIN PAGE
   15. MAIN PAGE BANNER
   ========================================================= */
   ========================================================= */


/*
/*
   以下仅作用于:
   使用方法:
  Main Page
 
  配合主页中的:


   <div class="mainpage-banner">
   <div class="mainpage-banner">
       ...
       <h1>标题</h1>
      <p>介绍</p>
   </div>
   </div>
  修改下面 URL 为你的图片
*/
*/




body.page-Main_Page .mw-body {
.mainpage-banner {
     max-width: 1200px;
 
}
 
     position:
 
        relative;
 
 
    overflow:
 
        hidden;




/* =========================================================
    min-height:
  20. MAIN PAGE HERO BANNER
  ========================================================= */


body.page-Main_Page .mainpage-banner {
        220px;
    position: relative;


    overflow: hidden;


     margin:
     margin:
         10px 0 30px;
 
         20px 0;
 


     padding:
     padding:
        70px 30px;


    min-height:
         60px 30px;
         220px;
 


     display:
     display:
         flex;
         flex;


     flex-direction:
     flex-direction:
         column;
         column;


     justify-content:
     justify-content:
         center;
         center;


     align-items:
     align-items:
         center;
         center;


     text-align:
     text-align:
         center;
         center;


     color:
     color:
         #ffffff !important;
 
         white;
 


     border-radius:
     border-radius:
         12px;
 
         14px;
 


     background:
     background:
         #1f2a44;
         #1f2a44;


     box-shadow:
     box-shadow:
         0 8px 28px rgba(0, 0, 0, 0.12);
 
         0 8px 28px rgba(0,0,0,.12);
 
}
}




/* =========================================================
  21. MAIN PAGE HERO IMAGE
  ========================================================= */


/*
  ========================================================
  请修改这里
  ========================================================


  将下面:
.mainpage-banner::before {
 
 
    content:
 
        "";
 


  https://example.com/your-banner.jpg
    position:


  换成你的 Wiki 横幅图片 URL。
        absolute;
*/


body.page-Main_Page .mainpage-banner::before {
    content: "";


     position: absolute;
     inset:


    inset: 0;
        0;


    z-index: 0;


     background-image:
     background-image:
         url("https://example.com/your-banner.jpg");
 
 
         url("https://example.com/banner.jpg");
 
 


     background-size:
     background-size:
         cover;
         cover;


     background-position:
     background-position:
         center;
         center;


    background-repeat:
        no-repeat;


     filter:
     filter:
        brightness(0.72);


    transform:
         brightness(.65);
         scale(1.03);
 


     transition:
     transition:
         transform 8s ease;
         transform 8s ease;
}
}




/* Banner Hover */


body.page-Main_Page .mainpage-banner:hover::before {
.mainpage-banner:hover::before {
 
 
     transform:
     transform:
        scale(1.07);
}


        scale(1.06);


/* =========================================================
}
  22. HERO DARK OVERLAY
  ========================================================= */


body.page-Main_Page .mainpage-banner::after {
    content: "";


    position: absolute;


    inset: 0;


    z-index: 1;
.mainpage-banner::after {


    background:
        linear-gradient(
            180deg,
            rgba(15, 25, 55, 0.28),
            rgba(15, 25, 55, 0.62)
        );


     pointer-events:
     content:
        none;
}


        "";


/* Hero 内容位于图片上方 */


body.page-Main_Page .mainpage-banner > * {
     position:
     position:
        relative;


    z-index:
         absolute;
         2;
}




/* =========================================================
    inset:
  23. HERO TITLE
  ========================================================= */


body.page-Main_Page .mainpage-banner h1 {
         0;
    margin:
         0 0 12px;


    font-size:
        2.8em;


     font-weight:
     background:
        700;


    letter-spacing:
        linear-gradient(
        1px;


    color:
            180deg,
        #ffffff !important;


    text-shadow:
            rgba(0,0,0,.2),
        0 2px 12px rgba(0, 0, 0, 0.55);


    animation:
            rgba(0,0,0,.6)
        griffinHeroTitle 0.7s ease-out;
}


@keyframes griffinHeroTitle {
         );
    from {
         opacity: 0;
    }


    to {
        opacity: 1;
    }
}
}




/* Hero 副标题 */


body.page-Main_Page .mainpage-banner em,
body.page-Main_Page .mainpage-banner p {
    color:
        rgba(255, 255, 255, 0.90) !important;


    text-shadow:
.mainpage-banner > * {
        0 1px 8px rgba(0, 0, 0, 0.4);
}




/* =========================================================
    position:
  24. MAIN PAGE INTRO
  ========================================================= */


body.page-Main_Page .mainpage-intro {
         relative;
    max-width:
         900px;


    margin:
        0 auto 30px;


     padding:
     z-index:
        20px 24px;


    background:
         2;
         #f8f9fa;


    border:
}
        1px solid #eaecf0;


    border-radius:
        10px;


    line-height:
        1.8;


    box-shadow:
        0 2px 8px rgba(0, 0, 0, 0.04);


    animation:
.mainpage-banner h1 {
        griffinIntroFade 0.5s ease-out;
}


@keyframes griffinIntroFade {
    from {
        opacity: 0;
    }


     to {
     font-size:
        opacity: 1;
    }
}


        2.8em;


/* =========================================================
  25. MAIN PAGE MODULES
  ========================================================= */


body.page-Main_Page .mainpage-module {
     margin:
     background:
        #ffffff;


    border:
         0 0 10px;
         1px solid #eaecf0;


    border-radius:
        10px;


     padding:
     color:
        18px 20px;


    margin-bottom:
         #ffffff;
         18px;


    box-shadow:
        0 2px 8px rgba(0, 0, 0, 0.035);


     transition:
     text-shadow:
        transform 0.25s ease,
        box-shadow 0.25s ease,
        border-color 0.25s ease;
}
 
 
/* Module Hover */
 
body.page-Main_Page .mainpage-module:hover {
    transform:
        translateY(-3px);


    border-color:
         0 3px 12px rgba(0,0,0,.5);
         #d5daf0;


    box-shadow:
        0 8px 22px rgba(0, 0, 0, 0.08);
}
}




/* Module 标题 */
body.page-Main_Page .mainpage-module h2 {
    margin-top:
        0;
    padding-bottom:
        8px;


    border-bottom:
        1px solid #eaecf0;
}




/* =========================================================
/* =========================================================
   26. MAIN PAGE TWO COLUMNS
   16. MAIN PAGE MODULE
   ========================================================= */
   ========================================================= */


body.page-Main_Page .mainpage-columns {
    display:
        flex;


    align-items:
.mainpage-module {
        flex-start;


    gap:
        18px;
}


body.page-Main_Page .mainpage-left {
     background:
     flex:
        2;


    min-width:
         #ffffff;
         0;
}


body.page-Main_Page .mainpage-right {
    flex:
        1;


     min-width:
     border:
        0;
}


        1px solid #eaecf0;


/* =========================================================
  27. MAIN PAGE LIST
  ========================================================= */


body.page-Main_Page .mainpage-module li {
     border-radius:
     margin-bottom:
        6px;


    transition:
         10px;
         transform 0.15s ease;
}


body.page-Main_Page .mainpage-module li:hover {
    transform:
        translateX(3px);
}


    padding:


/* =========================================================
        18px;
  28. MAIN PAGE LINKS
  ========================================================= */


body.page-Main_Page a {
    color:
        #3366cc;
}


body.page-Main_Page a:hover {
    margin-bottom:
    color:
        #2956b8;


    text-decoration:
         18px;
         underline;
}




/* =========================================================
    box-shadow:
  29. RESPONSIVE - TABLET
  ========================================================= */


@media (max-width: 900px) {
        0 2px 8px rgba(0,0,0,.04);


    body.page-Main_Page .mainpage-columns {
        flex-direction:
            column;
    }


     body.page-Main_Page .mainpage-left,
     transition:
    body.page-Main_Page .mainpage-right {
        width:
            100%;
    }


    body.page-Main_Page .mainpage-banner {
        transform .25s ease,
         min-height:
         box-shadow .25s ease;
            180px;
 
        padding:
            50px 20px;
    }


    body.page-Main_Page .mainpage-banner h1 {
        font-size:
            2.2em;
    }
}
}




/* =========================================================
  30. RESPONSIVE - MOBILE
  ========================================================= */


@media (max-width: 640px) {
.mainpage-module:hover {


    .mw-content-container {
        padding-left:
            12px;


        padding-right:
    transform:
            12px;
    }


    body.page-Main_Page .mainpage-banner {
        translateY(-3px);
        margin:
            5px 0 20px;


        border-radius:
            8px;


        min-height:
    box-shadow:
            160px;


         padding:
         0 8px 22px rgba(0,0,0,.08);
            40px 15px;
    }


    body.page-Main_Page .mainpage-banner h1 {
}
        font-size:
            1.9em;


        letter-spacing:
            0.5px;
    }


    body.page-Main_Page .mainpage-module {
        padding:
            15px;
    }
}




/* =========================================================
/* =========================================================
   31. ACCESSIBILITY / REDUCED MOTION
   17. CATEGORY / NOTICE
   ========================================================= */
   ========================================================= */


@media (prefers-reduced-motion: reduce) {


    html {
.catlinks {
        scroll-behavior:
            auto;
    }


    *,
    *::before,
    *::after {
        animation-duration:
            0.001ms !important;


        animation-iteration-count:
    background:
            1 !important;


         transition-duration:
         #f8f9fa;
            0.001ms !important;
    }
}




/* =========================================================
    border:
  END OF GRIFFIN WIKI VECTOR.CSS
  ========================================================= */
```
```css
/* =========================================================
  Griffin Wiki
  Vector 2022 - Subtle UI Motion
  ========================================================= */


        1px solid #eaecf0;


/* =========================================================
  01. 右上角功能栏按钮
  ---------------------------------------------------------
  非常轻微的上移效果
  ========================================================= */


.vector-header-end .vector-dropdown-label {
    border-radius:
    transform: translateY(0);


    transition:
         8px;
         transform 0.14s ease,
        background-color 0.18s ease,
        box-shadow 0.18s ease;
}




/* 鼠标悬停:仅上移 1px */
    padding:


.vector-header-end .vector-dropdown-label:hover {
        8px 12px;
    transform: translateY(-1px);
}


/* 点击:仅上移 1.5px */
.vector-header-end .vector-dropdown-label:active {
    transform: translateY(-1.5px);
}
}




/* 菜单打开时保持轻微上移 */


.vector-header-end
.vector-dropdown[aria-expanded="true"]
.vector-dropdown-label {
    transform: translateY(-1px);
}




/* =========================================================
/* =========================================================
   02. 右上角下拉菜单
   18. SCROLLBAR
  ---------------------------------------------------------
  柔和的淡入 + 极小幅度上移
   ========================================================= */
   ========================================================= */


.vector-header-end .vector-dropdown-content {
    transform-origin: top right;


    opacity: 0;
::-webkit-scrollbar {


    transform:
        translateY(-3px)
        scale(0.99);


     transition:
     width:
        opacity 0.16s ease,
        transform 0.16s ease;
}


        9px;


/* 打开 */
}


.vector-header-end
.vector-dropdown[aria-expanded="true"]
.vector-dropdown-content {


    opacity: 1;


    transform:
::-webkit-scrollbar-track {
        translateY(0)
        scale(1);
}




/* =========================================================
    background:
  03. 下拉菜单内部项目
  ========================================================= */


.vector-header-end
        #f8f9fa;
.vector-dropdown-content
.mw-list-item {


    transition:
        transform 0.14s ease,
        background-color 0.14s ease;
}
}




/* Hover 时只移动 2px */


.vector-header-end
::-webkit-scrollbar-thumb {
.vector-dropdown-content
.mw-list-item:hover {


    transform:
        translateX(2px);
}


    background:


/* =========================================================
        #c8ccd1;
  04. 页面操作栏
  ---------------------------------------------------------
  对应:


  首页
  讨论
  阅读
  编辑
  编辑源代码
  查看历史
  ========================================================= */


    border-radius:


/* 操作栏中的链接 */
        10px;


#p-views a,
}
#p-cactions a,
.vector-menu-tabs a {


    position:
        relative;


    transform:
        translateY(0);


    transition:
::-webkit-scrollbar-thumb:hover {
        transform 0.14s ease,
        color 0.16s ease,
        background-color 0.16s ease,
        border-color 0.16s ease;
}




/* 鼠标悬停:轻微上移 */
    background:


#p-views a:hover,
        #a2a9b1;
#p-cactions a:hover,
.vector-menu-tabs a:hover {


    transform:
        translateY(-1px);
}
}




/* 点击 */


#p-views a:active,
#p-cactions a:active,
.vector-menu-tabs a:active {
    transform:
        translateY(-1px);
}




/* =========================================================
/* =========================================================
   05. 当前选中的页面操作
   19. RESPONSIVE
  ---------------------------------------------------------
  阅读 / 当前页面等选中状态
   ========================================================= */
   ========================================================= */


#p-views .selected a,
#p-cactions .selected a,
.vector-menu-tabs .selected a {


    transform:
@media(max-width:900px){
        translateY(-1px);


    transition:
        transform 0.16s ease,
        background-color 0.16s ease;
}


    .mainpage-banner {


/* =========================================================
  06. 页面操作栏下划线动画
  ---------------------------------------------------------
  鼠标经过时从中间向两侧展开
  ========================================================= */


#p-views a::after,
        padding:
#p-cactions a::after,
.vector-menu-tabs a::after {


    content:
            45px 20px;
        "";


     position:
     }
        absolute;


    left:
        50%;


     bottom:
     .mainpage-banner h1 {
        -1px;


    width:
        0;


    height:
        font-size:
        2px;


    border-radius:
            2.2em;
        2px;


     background:
     }
        linear-gradient(
            90deg,
            #3366cc,
            #6f7cff
        );
 
    transform:
        translateX(-50%);
 
    opacity:
        0;


    transition:
        width 0.18s ease,
        opacity 0.18s ease;
}
}




/* Hover */


#p-views a:hover::after,
#p-cactions a:hover::after,
.vector-menu-tabs a:hover::after {


    width:
        70%;
    opacity:
        1;
}


@media(max-width:640px){


/* 当前选中状态 */


#p-views .selected a::after,
    .infobox {
#p-cactions .selected a::after,
.vector-menu-tabs .selected a::after {


    width:
        70%;


    opacity:
        max-width:
        1;
}


            100%;


/* =========================================================
    }
  07. 页面操作栏整体
  ========================================================= */


#p-views,
#p-cactions,
.vector-menu-tabs {


    transition:
        opacity 0.2s ease;
}


    .mainpage-banner {


/* =========================================================
  08. “更多”/操作菜单展开
  ========================================================= */


#p-cactions .vector-menu-content,
        min-height:
#p-views .vector-menu-content {


    transform-origin:
            160px;
        top left;


    opacity:
        0;


    transform:
        padding:
        translateY(-3px)
        scale(0.99);


    transition:
            35px 15px;
        opacity 0.16s ease,
        transform 0.16s ease;
}


    }


/* 打开状态 */


#p-cactions.vector-menu-open .vector-menu-content,
#p-views.vector-menu-open .vector-menu-content {


     opacity:
     .mainpage-banner h1 {
        1;


    transform:
        translateY(0)
        scale(1);
}


        font-size:


/* =========================================================
            1.8em;
  09. 操作栏菜单项目
  ========================================================= */


#p-cactions .vector-menu-content li,
    }
#p-views .vector-menu-content li {


    transition:
        transform 0.13s ease,
        background-color 0.13s ease;
}
}




#p-cactions .vector-menu-content li:hover,
#p-views .vector-menu-content li:hover {
    transform:
        translateX(2px);
}




/* =========================================================
/* =========================================================
   10. 防止过大的动画
   20. REDUCED MOTION
   ========================================================= */
   ========================================================= */


#p-views *,
#p-cactions *,
.vector-menu-tabs *,
.vector-header-end .vector-dropdown-content * {


    animation-timing-function:
@media(prefers-reduced-motion:reduce){
        ease-out;
 
}
 
    *,
    *::before,
    *::after {




/* =========================================================
        animation:
  11. Reduced Motion
  ========================================================= */


@media (prefers-reduced-motion: reduce) {
            none !important;


    #p-views *,
    #p-cactions *,
    .vector-menu-tabs *,
    .vector-header-end * {


         transition:
         transition:
             none !important;
             none !important;


        animation:
            none !important;
     }
     }
}
}
```
 
 
/* =========================================================
  END OF VECTOR.CSS
  ========================================================= */

2026年8月7日 (五) 05:51的版本

/* =========================================================
   Griffin Wiki
   MediaWiki:Vector.css

   Vector 2022 Custom Theme
   Clean Edition
   ========================================================= */


/* =========================================================
   01. GLOBAL
   ========================================================= */

html {
    scroll-behavior: smooth;
}


body {
    background: #ffffff;
    color: #202122;
}


/* 全局过渡 */

a,
button,
input,
.vector-dropdown-label {
    transition:
        color .2s ease,
        background-color .2s ease,
        transform .15s ease,
        box-shadow .2s ease;
}



/* =========================================================
   02. HEADER
   ========================================================= */


.vector-header-container {

    background:
        #ffffff !important;

    border-bottom:
        1px solid #eaecf0;

    transition:
        box-shadow .25s ease,
        background-color .25s ease;
}


.vector-header-container:hover {

    box-shadow:
        0 3px 15px rgba(0,0,0,.06);
}



/* =========================================================
   03. LOGO AREA
   ========================================================= */


.vector-header-start button {

    transition:
        transform .15s ease,
        background-color .2s ease;
}


.vector-header-start button:hover {

    transform:
        translateY(-1px);

    background:
        rgba(51,102,255,.06);

    border-radius:
        6px;
}


.vector-header-start button:active {

    transform:
        translateY(-2px)
        scale(.97);
}



/* =========================================================
   04. RIGHT HEADER FUNCTIONS
   ========================================================= */


/*
  右侧:
  搜索
  外观
  工具
  用户菜单

  只做轻微交互
*/


.vector-header-end .vector-dropdown-label {

    transform:
        translateY(0);

    border-radius:
        6px;
}


.vector-header-end
.vector-dropdown-label:hover {

    transform:
        translateY(-1px);

    background:
        rgba(51,102,255,.05);
}


.vector-header-end
.vector-dropdown-label:active {

    transform:
        translateY(-1.5px);
}


/* 打开状态 */

.vector-header-end
.vector-dropdown[aria-expanded="true"]
.vector-dropdown-label {

    transform:
        translateY(-1px);
}



/* =========================================================
   05. DROPDOWN ANIMATION
   ========================================================= */


.vector-header-end
.vector-dropdown-content {


    opacity:
        0;


    transform:

        translateY(-4px)
        scale(.98);


    transform-origin:
        top right;


    transition:

        opacity .18s ease,
        transform .18s ease;

}



.vector-header-end
.vector-dropdown[aria-expanded="true"]
.vector-dropdown-content {


    opacity:
        1;


    transform:

        translateY(0)
        scale(1);

}



/* 菜单项目 */


.vector-header-end
.vector-dropdown-content
.mw-list-item a {


    transition:

        background-color .15s ease,
        transform .15s ease;

}



.vector-header-end
.vector-dropdown-content
.mw-list-item a:hover {


    transform:
        translateX(3px);


    background:
        rgba(51,102,255,.05);

}



/* =========================================================
   06. SIDEBAR
   ========================================================= */


.vector-sidebar {

    background:
        #fbfbfb !important;

    border-right:
        1px solid #eaecf0;
}



.vector-sidebar
.vector-menu-heading {


    border-radius:
        6px;


    cursor:
        pointer;


    transition:

        background-color .2s ease,
        padding-left .2s ease;

}



.vector-sidebar
.vector-menu-heading:hover {


    background:

        rgba(51,102,255,.06);


    padding-left:
        4px;

}



/* Sidebar 链接 */


.vector-sidebar
a {


    transition:

        transform .15s ease,
        color .15s ease;

}



.vector-sidebar
a:hover {


    transform:
        translateX(3px);

}



/* =========================================================
   07. SIDEBAR MENU MOTION
   ========================================================= */


.vector-sidebar
.vector-menu-content {


    transition:

        opacity .25s ease,
        transform .25s ease;

}



/*
   不改变 display
   避免破坏 Vector JS
*/


.vector-sidebar
.vector-menu-content {


    opacity:
        .98;

    transform:
        translateX(0);

}



/* =========================================================
   08. PAGE FADE
   ========================================================= */


.mw-page-container,
.mw-content-container {


    animation:

        griffinFade .3s ease-out;

}



@keyframes griffinFade {


    from {

        opacity:
            0;

    }


    to {

        opacity:
            1;

    }

}



/* =========================================================
   09. HEADINGS
   ========================================================= */


.mw-first-heading {


    position:
        relative;

    padding-bottom:
        10px;

}



.mw-first-heading::after {


    content:
        "";

    display:
        block;


    width:
        60px;


    height:
        3px;


    margin-top:
        8px;


    border-radius:
        3px;


    background:

        linear-gradient(
            90deg,
            #3366cc,
            #6f7cff,
            #ff4fa3
        );

}



.mw-parser-output h2 {


    border-bottom:
        1px solid #eaecf0;

    padding-bottom:
        6px;

}
/* =========================================================
   10. INFOBOX
   ========================================================= */


.infobox {

    background:
        #f8f9fa !important;


    border:
        1px solid #c8ccd1;


    border-radius:
        8px;


    box-shadow:

        0 2px 8px rgba(0,0,0,.05);


    overflow:
        hidden;


    transition:

        transform .25s ease,
        box-shadow .25s ease,
        border-color .25s ease;

}



.infobox:hover {


    transform:

        translateY(-2px);


    border-color:

        #b8c2d9;


    box-shadow:

        0 8px 22px rgba(0,0,0,.10);

}



/* Infobox 顶部装饰线 */


.infobox::before {


    content:
        "";


    display:
        block;


    height:
        3px;


    background:

        linear-gradient(
            90deg,
            #3366cc,
            #6f7cff,
            #ff4fa3
        );

}




/* =========================================================
   11. TABLE
   ========================================================= */


.wikitable {


    border:

        1px solid #c8ccd1;


    border-radius:

        8px;


    overflow:

        hidden;


    box-shadow:

        0 2px 8px rgba(0,0,0,.04);

}



.wikitable th {


    background:

        #f8f9fa;


    font-weight:

        600;

}



.wikitable tr {


    transition:

        background-color .15s ease;

}



.wikitable tr:hover {


    background:

        rgba(51,102,255,.035);

}




/* =========================================================
   12. IMAGES
   ========================================================= */


.thumbinner {


    background:

        #ffffff;


    border:

        1px solid #eaecf0;


    border-radius:

        8px;


    box-shadow:

        0 2px 8px rgba(0,0,0,.05);


    transition:

        transform .25s ease,
        box-shadow .25s ease;

}



.thumbinner:hover {


    transform:

        translateY(-3px);


    box-shadow:

        0 8px 20px rgba(0,0,0,.10);

}



.thumbinner img {


    transition:

        transform .25s ease;

}



.thumbinner:hover img {


    transform:

        scale(1.02);

}




/* =========================================================
   13. TOC
   ========================================================= */


.toc {


    background:

        #f8f9fa;


    border:

        1px solid #eaecf0;


    border-radius:

        8px;


    box-shadow:

        0 2px 8px rgba(0,0,0,.04);

}



.toc a:hover {


    color:

        #3366cc;

}




/* =========================================================
   14. CODE BLOCK
   ========================================================= */


pre,
.mw-code {


    background:

        #f8f9fa;


    border:

        1px solid #eaecf0;


    border-radius:

        8px;


    padding:

        12px;

}




code {


    background:

        #f8f9fa;


    border:

        1px solid #eaecf0;


    border-radius:

        4px;


    padding:

        2px 5px;

}




/* =========================================================
   15. MAIN PAGE BANNER
   ========================================================= */


/*
   使用方法:

   <div class="mainpage-banner">
       <h1>标题</h1>
       <p>介绍</p>
   </div>


   修改下面 URL 为你的图片
*/


.mainpage-banner {


    position:

        relative;


    overflow:

        hidden;


    min-height:

        220px;


    margin:

        20px 0;


    padding:

        60px 30px;


    display:

        flex;


    flex-direction:

        column;


    justify-content:

        center;


    align-items:

        center;


    text-align:

        center;


    color:

        white;


    border-radius:

        14px;


    background:

        #1f2a44;


    box-shadow:

        0 8px 28px rgba(0,0,0,.12);

}




.mainpage-banner::before {


    content:

        "";


    position:

        absolute;


    inset:

        0;


    background-image:


        url("https://example.com/banner.jpg");



    background-size:

        cover;


    background-position:

        center;


    filter:

        brightness(.65);


    transition:

        transform 8s ease;

}



.mainpage-banner:hover::before {


    transform:

        scale(1.06);

}




.mainpage-banner::after {


    content:

        "";


    position:

        absolute;


    inset:

        0;


    background:

        linear-gradient(

            180deg,

            rgba(0,0,0,.2),

            rgba(0,0,0,.6)

        );

}




.mainpage-banner > * {


    position:

        relative;


    z-index:

        2;

}




.mainpage-banner h1 {


    font-size:

        2.8em;


    margin:

        0 0 10px;


    color:

        #ffffff;


    text-shadow:

        0 3px 12px rgba(0,0,0,.5);

}





/* =========================================================
   16. MAIN PAGE MODULE
   ========================================================= */


.mainpage-module {


    background:

        #ffffff;


    border:

        1px solid #eaecf0;


    border-radius:

        10px;


    padding:

        18px;


    margin-bottom:

        18px;


    box-shadow:

        0 2px 8px rgba(0,0,0,.04);


    transition:

        transform .25s ease,
        box-shadow .25s ease;

}



.mainpage-module:hover {


    transform:

        translateY(-3px);


    box-shadow:

        0 8px 22px rgba(0,0,0,.08);

}




/* =========================================================
   17. CATEGORY / NOTICE
   ========================================================= */


.catlinks {


    background:

        #f8f9fa;


    border:

        1px solid #eaecf0;


    border-radius:

        8px;


    padding:

        8px 12px;

}





/* =========================================================
   18. SCROLLBAR
   ========================================================= */


::-webkit-scrollbar {


    width:

        9px;

}



::-webkit-scrollbar-track {


    background:

        #f8f9fa;

}



::-webkit-scrollbar-thumb {


    background:

        #c8ccd1;


    border-radius:

        10px;

}



::-webkit-scrollbar-thumb:hover {


    background:

        #a2a9b1;

}





/* =========================================================
   19. RESPONSIVE
   ========================================================= */


@media(max-width:900px){


    .mainpage-banner {


        padding:

            45px 20px;

    }


    .mainpage-banner h1 {


        font-size:

            2.2em;

    }

}





@media(max-width:640px){


    .infobox {


        max-width:

            100%;

    }



    .mainpage-banner {


        min-height:

            160px;


        padding:

            35px 15px;

    }



    .mainpage-banner h1 {


        font-size:

            1.8em;

    }

}




/* =========================================================
   20. REDUCED MOTION
   ========================================================= */


@media(prefers-reduced-motion:reduce){


    *,
    *::before,
    *::after {


        animation:

            none !important;


        transition:

            none !important;

    }

}


/* =========================================================
   END OF VECTOR.CSS
   ========================================================= */