|
|
| 第1行: |
第1行: |
| | | local p = {} |
|
| |
|
| /* 这里放置的CSS将应用于所有皮肤 */
| | function p.renderSidebar(frame) |
| /* 桌面版网页所有皮肤的公共CSS */
| | local extData = mw.ext.externalData |
| | if not extData or not extData.getDbData then |
| | return "错误:未找到 External Data 接口" |
| | end |
|
| |
|
| /* 界面管理员注意!任何对Common.css的改变必须先在技术客栈讨论,谢谢。 */
| | -- 1. 获取最新期数 |
| /* .mw-parser-output内的样式调整请使用TemplateStyles */
| | local latest_data = extData.getDbData{ |
| | | db = 'wp_db', |
| /* Default styling for HTML elements */
| | from = 'wp_owmc_currency_rates', |
| cite,
| | ['order by'] = 'year DESC, month DESC', |
| dfn {
| | limit = 1, |
| font-style: inherit; /* Reset default styling for <dfn> */
| | data = 'year=year, month=month' |
| }
| | } |
| | |
| /*
| |
| == 参考区 ==
| |
| */
| |
| /* --- 彻底锁死图片缩放 --- */
| |
| | |
| /* 1. 针对 Citizen 皮肤特有的 figure 结构 */
| |
| .mw-parser-output figure[typeof*="mw:File/Thumb"] img,
| |
| .mw-parser-output figure[typeof*="mw:File/Thumb"] .mw-file-element,
| |
| .mw-parser-output .thumbinner img {
| |
| transform: none !important;
| |
| transition: none !important;
| |
| }
| |
| | |
| /* 2. 针对普通链接图片和描述符图片 */
| |
| .mw-parser-output .mw-file-description img,
| |
| .mw-parser-output .mw-file-element {
| |
| transform: none !important;
| |
| transition: none !important;
| |
| }
| |
| | |
| /* 3. 强制取消任何悬停状态下的缩放 */
| |
| .mw-parser-output a:hover img,
| |
| .mw-parser-output a:focus img,
| |
| .mw-parser-output figure:hover img,
| |
| .mw-parser-output .thumbinner:hover img {
| |
| transform: none !important;
| |
| }
| |
| /* Make the list of references smaller
| |
| * Keep in sync with Template:Refbegin/styles.css
| |
| * And Template:Reflist/styles.css
| |
| */
| |
| ol.references,
| |
| div.reflist {
| |
| font-size: 90%; /* Default font-size */
| |
| margin-bottom: 0.5em;
| |
| }
| |
| div.reflist ol.references {
| |
| font-size: 100%; /* Reset font-size when nested in div.reflist */
| |
| }
| |
| div.reflist ol.references,
| |
| div.notelist ol.references {
| |
| list-style-type: inherit; /* Enable custom list style types */
| |
| }
| |
| | |
| /* .references-2column b/c */
| |
| div.references-2column {
| |
| -moz-column-count: 2;
| |
| column-count: 2;
| |
| font-size: 90%;
| |
| }
| |
| div.references-2column ol.references,
| |
| div.references-2column div.reflist {
| |
| font-size: 100%;
| |
| }
| |
| | |
| /* T156351: Support for Parsoid's Cite implementation */
| |
| a[rel="mw:referencedBy"]::before {
| |
| font-weight: bold;
| |
| content: "^";
| |
| }
| |
| span[rel="mw:referencedBy"] > a::before {
| |
| font-weight: bold;
| |
| content: counter(mw-references, decimal) "." counter(mw-ref-linkback, decimal);
| |
| }
| |
| span[rel="mw:referencedBy"]::before {
| |
| content: "^ ";
| |
| }
| |
| | |
| /* Reduce page jumps by hiding collapsed/dismissed content */
| |
| .client-js .mw-special-Watchlist #watchlist-message,
| |
| .client-js .collapsible:not( .mw-made-collapsible).collapsed > tbody > tr:not(:first-child),
| |
| | |
| /* Avoid FOUC/reflows on collapsed elements. */
| |
| /* This copies MediaWiki's solution for T42812 to apply to innercollapse/outercollapse (T325115). */
| |
| /* TODO: Use :is() selector at some reasonable future when support is good for Most Clients */
| |
| /* Reference: https://gerrit.wikimedia.org/g/mediawiki/core/+/ecda06cb2aef55b77c4b4d7ecda492d634419ead/resources/src/jquery/jquery.makeCollapsible.styles.less#75 */
| |
| .client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) > p,
| |
| .client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) > table,
| |
| .client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) > thead + tbody,
| |
| .client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) tr:not( :first-child ),
| |
| .client-js .outercollapse .innercollapse.mw-collapsible:not( .mw-made-collapsible ) .mw-collapsible-content,
| |
| | |
| /* Reset top margin for lists embedded in columns */
| |
| div.columns {
| |
| margin-top: 0.3em;
| |
| }
| |
| div.columns dl,
| |
| div.columns ol,
| |
| div.columns ul {
| |
| margin-top: 0;
| |
| }
| |
| | |
| /* Avoid list items from breaking between columns */
| |
| div.columns li,
| |
| div.columns dd dd {
| |
| -webkit-column-break-inside: avoid;
| |
| page-break-inside: avoid;
| |
| break-inside: avoid-column;
| |
| }
| |
| | |
| /* Prevent line breaks in silly places:
| |
| 1) Where desired
| |
| 2) Links when we don't want them to
| |
| 3) Bold "links" to the page itself
| |
| 4) HTML formulae
| |
| 5) Ref tags with group names <ref group="Note"> --> "[Note 1]"
| |
| */
| |
| .nowrap,
| |
| .nowraplinks a,
| |
| .nowraplinks .selflink,
| |
| span.texhtml,
| |
| sup.reference a {
| |
| white-space: nowrap;
| |
| }
| |
| | |
| /* But allow wrapping where desired: */
| |
| .wrap,
| |
| .wraplinks a {
| |
| white-space: normal;
| |
| }
| |
| | |
| /* Style for horizontal lists (separator following item) */
| |
| | |
| .hlist dl,
| |
| .hlist ol,
| |
| .hlist ul {
| |
| margin: 0;
| |
| }
| |
| .hlist dd,
| |
| .hlist dt,
| |
| .hlist li {
| |
| display: inline;
| |
| margin: 0;
| |
| }
| |
| /* Display nested lists inline */
| |
| .hlist.inline,
| |
| .hlist.inline dl,
| |
| .hlist.inline ol,
| |
| .hlist.inline ul,
| |
| .hlist dl dl,
| |
| .hlist dl ol,
| |
| .hlist dl ul,
| |
| .hlist ol dl,
| |
| .hlist ol ol,
| |
| .hlist ol ul,
| |
| .hlist ul dl,
| |
| .hlist ul ol,
| |
| .hlist ul ul {
| |
| display: inline;
| |
| }
| |
| /* Generate interpuncts */
| |
| .hlist dt:after {
| |
| content: " :";
| |
| }
| |
| .hlist dd:after,
| |
| .hlist li:after {
| |
| content: " · ";
| |
| font-weight: bold;
| |
| }
| |
| .hlist dd:last-child:after,
| |
| .hlist dt:last-child:after,
| |
| .hlist li:last-child:after {
| |
| content: none;
| |
| }
| |
| | |
| /* Add parens around nested lists */
| |
| .hlist dl dl:before,
| |
| .hlist ol ol:before,
| |
| .hlist ul ul:before {
| |
| content: "(";
| |
| }
| |
| .hlist dl dl:after,
| |
| .hlist ol ol:after,
| |
| .hlist ul ul:after {
| |
| content: ")";
| |
| }
| |
| /* Put numbers in ordered lists */
| |
| .hlist.hnum ol li {
| |
| counter-increment: level1;
| |
| }
| |
| .hlist.hnum ol li:before {
| |
| content: counter(level1) " ";
| |
| }
| |
| .hlist.hnum ol ol li {
| |
| counter-increment: level2;
| |
| }
| |
| .hlist.hnum ol ol li:before {
| |
| content: counter(level2) " ";
| |
| }
| |
| | |
| /* Unbulleted lists */
| |
| .plainlist ul {
| |
| line-height: inherit;
| |
| list-style: none none;
| |
| margin: 0;
| |
| }
| |
| .plainlist ul li {
| |
| margin-bottom: 0;
| |
| }
| |
| | |
| .same-bg {
| |
| background: none;
| |
| }
| |
| | |
| /*
| |
| | |
| == 提示 ==
| |
| | |
| */
| |
| /* Style for "notices" */
| |
| .notice {
| |
| text-align: justify;
| |
| margin: 1em;
| |
| padding: 0.2em;
| |
| }
| |
| | |
| #disambig {
| |
| border-top: 3px double var(--border-color-base, #a2a9b1);
| |
| border-bottom: 3px double var(--border-color-base, #a2a9b1);
| |
| }
| |
| | |
| #spoiler {
| |
| border-top: 2px solid var(--border-color-base, #a2a9b1);
| |
| border-bottom: 2px solid var(--border-color-base, #a2a9b1);
| |
| }
| |
| | |
| /*
| |
| == 未归类 ==
| |
| | |
| */
| |
| | |
| /* Infobox template style */
| |
| | |
| .infobox {
| |
| border: 1px solid #a2a9b1;
| |
| border-spacing: 3px;
| |
| background-color: #f8f9fa;
| |
| color: inherit;
| |
| /* @noflip */
| |
| margin: 0.5em 0 0.5em 1em;
| |
| padding: 0.2em;
| |
| /* @noflip */
| |
| float: right;
| |
| /* @noflip */
| |
| clear: right;
| |
| font-size: 88%;
| |
| line-height: 1.5em;
| |
| width: 22em;
| |
| }
| |
| | |
| .infobox-header,
| |
| .infobox-label,
| |
| .infobox-above,
| |
| .infobox-full-data,
| |
| .infobox-data,
| |
| .infobox-below,
| |
| .infobox-subheader,
| |
| .infobox-image,
| |
| /* Remove element selector when every .infobox thing is using the standard module/templates */
| |
| .infobox th,
| |
| .infobox td {
| |
| vertical-align: top;
| |
| }
| |
| | |
| .infobox-label,
| |
| .infobox-data,
| |
| /* Remove element selector when every .infobox thing is using the standard module/templates */
| |
| .infobox th,
| |
| .infobox td {
| |
| /* @noflip */
| |
| text-align: left;
| |
| }
| |
| | |
| /* Remove .infobox when element selectors above are removed */
| |
| .infobox .infobox-above,
| |
| .infobox .infobox-title,
| |
| /* Remove element selector when every .infobox thing is using the standard module/templates */
| |
| .infobox caption {
| |
| font-size: 125%;
| |
| font-weight: bold;
| |
| text-align: center;
| |
| }
| |
| | |
| .infobox-title,
| |
| /* Remove element selector when every .infobox thing is using the standard module/templates */
| |
| .infobox caption {
| |
| padding: 0.2em;
| |
| }
| |
| | |
| /* Remove .infobox when element selectors above are removed */
| |
| .infobox .infobox-header,
| |
| .infobox .infobox-subheader,
| |
| .infobox .infobox-image,
| |
| .infobox .infobox-full-data,
| |
| .infobox .infobox-below {
| |
| text-align: center;
| |
| }
| |
| | |
| /* Remove .infobox when element selectors above are removed */
| |
| | |
| .infobox.bordered {
| |
| border-collapse: collapse;
| |
| }
| |
| .infobox.bordered td,
| |
| .infobox.bordered th {
| |
| border: 1px solid var(--border-color-base, #a2a9b1);
| |
| }
| |
| .infobox.bordered .borderless td,
| |
| .infobox.bordered .borderless th {
| |
| border: 0;
| |
| }
| |
| | |
| /* styles for bordered infobox with merged rows */
| |
| .infobox.bordered .mergedtoprow td,
| |
| .infobox.bordered .mergedtoprow th {
| |
| border: 0;
| |
| border-top: 1px solid var(--border-color-base, #a2a9b1);
| |
| border-right: 1px solid var(--border-color-base, #a2a9b1);
| |
| }
| |
| | |
| .infobox.bordered .mergedrow td,
| |
| .infobox.bordered .mergedrow th {
| |
| border: 0;
| |
| border-right: 1px solid var(--border-color-base, #a2a9b1);
| |
| }
| |
| | |
| /* styles for geography infoboxes, e.g. countries, country subdivisions, cities, etc. */
| |
| | |
| .infobox.geography {
| |
| text-align: left;
| |
| border-collapse: collapse;
| |
| line-height: 1.2em;
| |
| font-size: 90%;
| |
| }
| |
| | |
| .infobox.geography td,
| |
| .infobox.geography th {
| |
| border-top: solid 1px var(--border-color-base, #a2a9b1);
| |
| padding: 0.4em 0.6em 0.4em 0.6em;
| |
| }
| |
| .infobox.geography .mergedtoprow td,
| |
| .infobox.geography .mergedtoprow th {
| |
| border-top: solid 1px var(--border-color-base, #a2a9b1);
| |
| padding: 0.4em 0.6em 0.2em 0.6em;
| |
| }
| |
| | |
| .infobox.geography .mergedrow td,
| |
| .infobox.geography .mergedrow th {
| |
| border: 0;
| |
| padding: 0 0.6em 0.2em 0.6em;
| |
| }
| |
| | |
| .infobox.geography .mergedbottomrow td,
| |
| .infobox.geography .mergedbottomrow th {
| |
| border-top: 0;
| |
| border-bottom: solid 1px var(--border-color-base, #a2a9b1);
| |
| padding: 0 0.6em 0.4em 0.6em;
| |
| }
| |
| | |
| .infobox.geography .maptable td,
| |
| .infobox.geography .maptable th {
| |
| border: 0;
| |
| padding: 0;
| |
| }
| |
| | |
| /* class hiddenStructure is defunct. See [[Wikipedia:hiddenStructure]] */
| |
| .hiddenStructure {
| |
| display: inline !important;
| |
| color: var(--color-destructive--hover, #f00);
| |
| background-color: #0f0;
| |
| }
| |
| | |
| /* Removes underlines from certain links */
| |
| .nounderlines a {
| |
| text-decoration: none !important;
| |
| }
| |
| | |
| /* Custom link colors for use in [[MediaWiki:Edittools]] */
| |
| .charboxblack a:link,
| |
| .charboxblack a:hover,
| |
| .charboxblack a:visited,
| |
| .charboxblack a:active {
| |
| color: black;
| |
| }
| |
| .charboxsilver a:link,
| |
| .charboxsilver a:hover,
| |
| .charboxsilver a:visited,
| |
| .charboxsilver a:active {
| |
| color: silver;
| |
| }
| |
| .charboxgray a:link,
| |
| .charboxgray a:hover,
| |
| .charboxgray a:visited,
| |
| .charboxgray a:active {
| |
| color: gray;
| |
| }
| |
| .charboxwhite a:link,
| |
| .charboxwhite a:hover,
| |
| .charboxwhite a:visited,
| |
| .charboxwhite a:active {
| |
| color: white;
| |
| }
| |
| .charboxmaroon a:link,
| |
| .charboxmaroon a:hover,
| |
| .charboxmaroon a:visited,
| |
| .charboxmaroon a:active {
| |
| color: maroon;
| |
| }
| |
| .charboxred a:link,
| |
| .charboxred a:hover,
| |
| .charboxred a:visited,
| |
| .charboxred a:active {
| |
| color: red;
| |
| }
| |
| .charboxpurple a:link,
| |
| .charboxpurple a:hover,
| |
| .charboxpurple a:visited,
| |
| .charboxpurple a:active {
| |
| color: purple;
| |
| }
| |
| .charboxfuchsia a:link,
| |
| .charboxfuchsia a:hover,
| |
| .charboxfuchsia a:visited,
| |
| .charboxfuchsia a:active {
| |
| color: fuchsia;
| |
| }
| |
| | |
| .charboxgreen a:link,
| |
| .charboxgreen a:hover,
| |
| .charboxgreen a:visited,
| |
| .charboxgreen a:active {
| |
| color: green;
| |
| }
| |
| .charboxlime a:link,
| |
| .charboxlime a:hover,
| |
| .charboxlime a:visited,
| |
| .charboxlime a:active {
| |
| color: lime;
| |
| }
| |
| .charboxolive a:link,
| |
| .charboxolive a:hover,
| |
| .charboxolive a:visited,
| |
| .charboxolive a:active {
| |
| color: olive;
| |
| }
| |
| .charboxyellow a:link,
| |
| .charboxyellow a:hover,
| |
| .charboxyellow a:visited,
| |
| .charboxyellow a:active {
| |
| color: yellow;
| |
| }
| |
| | |
| .charboxnavy a:link,
| |
| .charboxnavy a:hover,
| |
| .charboxnavy a:visited,
| |
| .charboxnavy a:active {
| |
| color: navy;
| |
| }
| |
| .charboxblue a:link,
| |
| .charboxblue a:hover,
| |
| .charboxblue a:visited,
| |
| .charboxblue a:active {
| |
| color: blue;
| |
| }
| |
| .charboxteal a:link,
| |
| .charboxteal a:hover,
| |
| .charboxteal a:visited,
| |
| .charboxteal a:active {
| |
| color: teal;
| |
| }
| |
| .charboxaqua a:link,
| |
| .charboxaqua a:hover,
| |
| .charboxaqua a:visited,
| |
| .charboxaqua a:active {
| |
| color: aqua;
| |
| }
| |
| | |
| /*
| |
| | |
| == 未归类 == | |
| | |
| */
| |
| | |
| /* Class styles */
| |
| | |
| /* Special characters list below edit window works better without underlining */
| |
| #editpage-specialchars a {
| |
| text-decoration: none;
| |
| }
| |
| #editpage-specialchars a:hover {
| |
| text-decoration: underline;
| |
| }
| |
| | |
| /*
| |
| == for some templates ==
| |
| | |
| Messagebox templates
| |
| */
| |
| .messagebox {
| |
| border: 1px solid var(--border-color-base, #a2a9b1);
| |
| background-color: var(--background-color-neutral-subtle, #f8f9fa);
| |
| width: 80%;
| |
| margin: 0 auto 1em auto;
| |
| padding: 0.2em;
| |
| display: inherit; /* 臨時抑制 https://phabricator.wikimedia.org/T232553 及 https://gerrit.wikimedia.org/r/535738 的修改 */
| |
| color: inherit;
| |
| }
| |
| .messagebox.merge {
| |
| border: 1px solid #c0b8cc;
| |
| background-color: #f0e5ff;
| |
| text-align: center;
| |
| }
| |
| .messagebox.cleanup {
| |
| border: 1px solid #9f9fff;
| |
| background-color: #efefff;
| |
| text-align: center;
| |
| }
| |
| .messagebox.standard-talk {
| |
| border: 1px solid #c0c090;
| |
| background-color: #f8eaba;
| |
| }
| |
| .messagebox.nested-talk {
| |
| border: 1px solid #c0c090;
| |
| background-color: #f8eaba;
| |
| width: 100%;
| |
| margin: 2px 4px 2px 4px;
| |
| }
| |
| .messagebox.small {
| |
| width: 238px;
| |
| font-size: 85%;
| |
| float: right;
| |
| clear: both;
| |
| margin: 0 0 1em 1em;
| |
| line-height: 1.25em;
| |
| }
| |
| .messagebox.small-talk {
| |
| width: 238px;
| |
| font-size: 85%;
| |
| float: right;
| |
| clear: both;
| |
| margin: 0 0 1em 1em;
| |
| line-height: 1.25em;
| |
| background: #f8f9fa;
| |
| }
| |
| | |
| /*
| |
| == external link ==
| |
| | |
| Change the external link icon to an Adobe icon for all PDF files
| |
| (in browsers that support these CSS selectors, like Mozilla and Opera)
| |
| | |
| */
| |
| #bodyContent a[href$=".pdf"].external,
| |
| #bodyContent a[href*=".pdf?"].external,
| |
| #bodyContent a[href*=".pdf#"].external,
| |
| #bodyContent a[href$=".PDF"].external,
| |
| #bodyContent a[href*=".PDF?"].external,
| |
| #bodyContent a[href*=".PDF#"].external {
| |
| background: url(//upload.wikimedia.org/wikipedia/commons/4/4d/Icon_pdf_file.png) center right
| |
| no-repeat;
| |
| padding-right: 16px;
| |
| }
| |
| | |
| /*
| |
| == other ==
| |
| */
| |
| span.lanLabel {
| |
| color: var(--color-placeholder, #72777d);
| |
| padding-left: 0.5em;
| |
| }
| |
| | |
| tt span.minor {
| |
| margin: 0 -2px 0 -3px;
| |
| font-size: 12px;
| |
| }
| |
| tt span.newpage {
| |
| margin: 0 1px 0 -6px;
| |
| font-size: 12px;
| |
| }
| |
| tt span.bot {
| |
| margin: 0 -6px 0 1px;
| |
| font-size: 12px;
| |
| }
| |
| /*tt span.unpatrolled*/
| |
| | |
| /* 用于封禁类模板,如Template:Uw-block1 */
| |
| div.user-block {
| |
| padding: 5px;
| |
| border: 1px solid var(--border-color-base, #a2a9b1);
| |
| background-color: var(--background-color-warning-subtle, #ffefd5);
| |
| color: inherit;
| |
| }
| |
| | |
| /* For linked citation numbers and document IDs, where the number need not be shown on a screen or a handheld, but should be included in the printed version */
| |
| | |
| @media screen, handheld, projection {
| |
| cite *.printonly {
| |
| display: none;
| |
| }
| |
| }
| |
| | |
| /*
| |
| == MetaBox ==
| |
| | |
| */
| |
| | |
| /*HERE FINISHES "METABOX" COLOUR-SCHEMES*/
| |
| | |
| /********************
| |
| **Styles for mboxes**
| |
| ********************/
| |
| /* Cell sizes for ambox/tmbox/imbox/cmbox/ombox/fmbox/dmbox message boxes */
| |
| th.mbox-text,
| |
| td.mbox-text {
| |
| /* The message body cell(s) */
| |
| border: none;
| |
| padding: 0.25em 0.9em; /* 0.9em left/right */
| |
| width: 100%; /* Make all mboxes the same width regardless of text length */
| |
| }
| |
| td.mbox-image {
| |
| /* The left image cell */
| |
| border: none;
| |
| padding: 2px 0 2px 0.9em; /* 0.9em left, 0px right */
| |
| text-align: center;
| |
| }
| |
| td.mbox-imageright {
| |
| /* The right image cell */
| |
| border: none;
| |
| padding: 2px 0.9em 2px 0; /* 0px left, 0.9em right */
| |
| text-align: center;
| |
| }
| |
| td.mbox-empty-cell {
| |
| /* An empty narrow cell */
| |
| border: none;
| |
| padding: 0px;
| |
| width: 1px;
| |
| }
| |
| | |
| /* Article message box styles */
| |
| table.ambox {
| |
| margin: 0px 10%; /* 10% = Will not overlap with other elements */
| |
| border: 1px solid #a2a9b1;
| |
| border-left: 10px solid #36c; /* Default "notice" blue */
| |
| background: #f8f9fa;
| |
| }
| |
| table.ambox + table.ambox {
| |
| /* Single border between stacked boxes. */
| |
| margin-top: -1px;
| |
| }
| |
| .ambox th.mbox-text,
| |
| .ambox td.mbox-text {
| |
| /* The message body cell(s) */
| |
| padding: 0.25em 0.5em; /* 0.5em left/right */
| |
| }
| |
| .ambox td.mbox-image {
| |
| /* The left image cell */
| |
| padding: 2px 0 2px 0.5em; /* 0.5em left, 0px right */
| |
| }
| |
| .ambox td.mbox-imageright {
| |
| /* The right image cell */
| |
| padding: 2px 0.5em 2px 0; /* 0px left, 0.5em right */
| |
| }
| |
| | |
| table.ambox-notice {
| |
| border-left: 10px solid #36c; /* Blue */
| |
| }
| |
| table.ambox-speedy {
| |
| border-left: 10px solid #b32424; /* Red */
| |
| background: #fee7e6; /* Pink */
| |
| }
| |
| table.ambox-delete {
| |
| border-left: 10px solid #b32424; /* Red */
| |
| }
| |
| table.ambox-content {
| |
| border-left: 10px solid #f28500; /* Orange */
| |
| }
| |
| table.ambox-style {
| |
| border-left: 10px solid #fc3; /* Yellow */
| |
| }
| |
| table.ambox-move {
| |
| border-left: 10px solid #9932cc; /* Purple */
| |
| }
| |
| table.ambox-protection {
| |
| border-left: 10px solid #a2a9b1; /* Gray-gold */
| |
| }
| |
| | |
| /* Category message box styles */
| |
| table.cmbox {
| |
| margin: 3px 10%;
| |
| border-collapse: collapse;
| |
| border: 1px solid #a2a9b1;
| |
| background: #eaf3ff; /* Default "notice" blue */
| |
| }
| |
| | |
| table.cmbox-notice {
| |
| background: #eaf3ff; /* Blue */
| |
| }
| |
| table.cmbox-speedy {
| |
| margin-top: 4px;
| |
| margin-bottom: 4px;
| |
| border: 4px solid #b32424; /* Red */
| |
| background: #fee7e6; /* Pink */
| |
| }
| |
| table.cmbox-delete {
| |
| background: #fee7e6; /* Red */
| |
| }
| |
| table.cmbox-content {
| |
| background: #ffe7ce; /* Orange */
| |
| }
| |
| table.cmbox-style {
| |
| background: #fff9db; /* Yellow */
| |
| }
| |
| table.cmbox-move {
| |
| background: #e4d8ff; /* Purple */
| |
| }
| |
| table.cmbox-protection {
| |
| background: #efefe1; /* Gray-gold */
| |
| }
| |
| | |
| /* Talk page message box styles */
| |
| table.tmbox {
| |
| margin: 4px 10%;
| |
| border-collapse: collapse;
| |
| border: 1px solid #c0c090; /* Default "notice" gray-brown */
| |
| background: #f8eaba;
| |
| }
| |
| .mediawiki .mbox-inside .tmbox {
| |
| /* For tmboxes inside other templates. The "mediawiki" */
| |
| margin: 2px 0; /* class ensures that this declaration overrides other */
| |
| width: 100%; /* For Safari and Opera */ /* styles (including mbox-small above) */
| |
| }
| |
| .mbox-inside .tmbox.mbox-small {
| |
| /* "small" tmboxes should not be small when */
| |
| line-height: 1.5em; /* also "nested", so reset styles that are */
| |
| font-size: 100%; /* set in "mbox-small" above. */
| |
| }
| |
| | |
| table.tmbox-speedy {
| |
| border: 2px solid #b32424; /* Red */
| |
| background: #fee7e6; /* Pink */
| |
| }
| |
| table.tmbox-delete {
| |
| border: 2px solid #b32424; /* Red */
| |
| }
| |
| table.tmbox-content {
| |
| border: 2px solid #f28500; /* Orange */
| |
| }
| |
| table.tmbox-style {
| |
| border: 2px solid #fc3; /* Yellow */
| |
| }
| |
| table.tmbox-move {
| |
| border: 2px solid #9932cc; /* Purple */
| |
| }
| |
| table.tmbox-protection,
| |
| table.tmbox-notice {
| |
| border: 1px solid #c0c090; /* Gray-brown */
| |
| }
| |
| | |
| /* Disambig and set index box styles */
| |
| table.dmbox {
| |
| clear: both;
| |
| margin: 0.9em 1em;
| |
| border-top: 1px solid #ccc;
| |
| border-bottom: 1px solid #ccc;
| |
| background: transparent;
| |
| font-size: small;
| |
| }
| |
| | |
| /* Footer and header message box styles */
| |
| table.fmbox {
| |
| clear: both;
| |
| margin: 0.2em 0;
| |
| width: 100%;
| |
| border: 1px solid #a2a9b1;
| |
| background-color: var(--background-color-interactive-subtle, #f8f9fa); /* Default "system" gray */
| |
| }
| |
| table.fmbox-system {
| |
| background-color: var(--background-color-interactive-subtle, #f8f9fa);
| |
| }
| |
| table.fmbox-warning {
| |
| border: 1px solid var(--border-color-error, #bb7070); /* Dark pink */
| |
| background: var(--background-color-error-subtle, #ffdbdb); /* Pink */
| |
| }
| |
| table.fmbox-editnotice {
| |
| background: transparent;
| |
| }
| |
| /* Div based "warning" style fmbox messages. */
| |
| div.mw-warning-with-logexcerpt,
| |
| div.mw-lag-warn-high,
| |
| div.mw-cascadeprotectedwarning,
| |
| #mw-protect-cascadeon {
| |
| clear: both;
| |
| margin: 0.2em 0;
| |
| border: 1px solid var(--border-color-error, #bb7070);
| |
| background: var(--background-color-error-subtle, #ffdbdb);
| |
| padding: 0.25em 0.9em;
| |
| }
| |
| | |
| /* These mbox-small classes must be placed after all other
| |
| ambox/tmbox/ombox etc classes. "body.mediawiki" is so
| |
| they override "table.ambox + table.ambox" above. */
| |
| body.mediawiki table.mbox-small {
| |
| /* For the "small=yes" option. */
| |
| clear: right;
| |
| float: right;
| |
| margin: 4px 0 4px 1em;
| |
| width: 238px;
| |
| font-size: 88%;
| |
| line-height: 1.25em;
| |
| }
| |
| body.mediawiki table.mbox-small-left {
| |
| /* For the "small=left" option. */
| |
| margin: 4px 1em 4px 0;
| |
| width: 238px;
| |
| border-collapse: collapse;
| |
| font-size: 88%;
| |
| line-height: 1.25em;
| |
| }
| |
| | |
| /* CODE FOR COMPACT AMBOX */
| |
| | |
| /* Remove borders, backgrounds, padding, etc. */
| |
| .compact-ambox table.ambox {
| |
| border: none;
| |
| border-collapse: collapse;
| |
| background: transparent;
| |
| margin: 0 0 0 1.6em !important;
| |
| padding: 0 !important;
| |
| width: auto;
| |
| display: block;
| |
| }
| |
| body.mediawiki .compact-ambox table.mbox-small-left {
| |
| font-size: 100%;
| |
| width: auto;
| |
| margin: 0;
| |
| }
| |
| /* Style the text cell as a list item and remove its padding */
| |
| .compact-ambox table .mbox-text {
| |
| padding: 0 !important;
| |
| margin: 0 !important;
| |
| }
| |
| .compact-ambox table .mbox-text-span {
| |
| display: list-item;
| |
| line-height: 1.5em;
| |
| list-style-type: square;
| |
| list-style-image: url("data:image/gif;base64,R0lGODlhBQANAIAAAGOMnP///yH5BAEAAAEALAAAAAAFAA0AAAIJjI+pu+APo4SpADs=");
| |
| }
| |
| /* Style for compact ambox */
| |
| /* Hide the images */
| |
| .compact-ambox table .mbox-image,
| |
| .compact-ambox table .mbox-imageright,
| |
| .compact-ambox table .mbox-empty-cell {
| |
| display: none;
| |
| }
| |
| | |
| #siteNotice div {
| |
| margin: 0;
| |
| }
| |
| | |
| /* dark mode fix */
| |
| #siteNotice {
| |
| color: inherit;
| |
| }
| |
| | |
| #mw-dismissable-notice {
| |
| background: transparent;
| |
| }
| |
| | |
| #wpSummary,
| |
| #wpSummaryLabel,
| |
| input#wpSummary,
| |
| input.mw-summary {
| |
| margin-top: 0;
| |
| margin-bottom: 0;
| |
| }
| |
| | |
| /* 解决cite定位内文字显示为斜体的问题 */
| |
| cite {
| |
| font-style: normal;
| |
| }
| |
| | |
| /* Pie chart test: Transparent borders */
| |
| .transborder {
| |
| border: solid var(--border-color-transparent, transparent);
| |
| }
| |
| | |
| /* http://zh.wikipedia.org/w/index.php?oldid=18291698#.E7.BB.B4.E5.9F.BA.E8.8D.A3.E8.AA.89.E5.A5.96.E5.8A.B1.E6.A8.A1.E6.9D.BF.E5.87.BA.E4.BA.86.E5.A4.A7.E9.97.AE.E9.A2.98 */
| |
| .ns-14 .mw-content-ltr > div[dir="ltr"] {
| |
| clear: both;
| |
| }
| |
| | |
| /* Hide stuff meant for accounts with special permissions. Made visible again in
| |
| [[MediaWiki:Group-sysop.css]], [[MediaWiki:Group-patroller.css]],
| |
| [[MediaWiki:Group-templateeditor.css]],
| |
| [[MediaWiki:Group-ipblock-exempt-grantor.css]],
| |
| [[MediaWiki:Group-extendedconfirmed.css]],
| |
| [[Mediawiki:Group-autoconfirmed.css]], and [[MediaWiki:Group-user.css]]. */
| |
| .sysop-show,
| |
| .patroller-show,
| |
| .templateeditor-show,
| |
| .ipblock-exempt-grantor-show,
| |
| .extendedconfirmed-show,
| |
| .autoconfirmed-show,
| |
| .user-show {
| |
| display: none;
| |
| }
| |
| | |
| /*编辑提交按钮部分的样式*/
| |
| | |
| .mw-summary-preset {
| |
| display: inline;
| |
| margin: 0;
| |
| padding: 0;
| |
| }
| |
| .mw-summary-preset-item {
| |
| border-left: 1px solid var(--border-color-base, #a2a9b1);
| |
| display: inline-block;
| |
| line-height: 1.25em;
| |
| margin: 0.125em 0;
| |
| padding: 0 0.5em;
| |
| }
| |
| .mw-summary-preset-item:first-child {
| |
| border-left: medium none;
| |
| padding-left: 0.25em;
| |
| }
| |
| .mw-summary-preset-item:last-child {
| |
| padding-right: 0.25em;
| |
| }
| |
| | |
| #pagehistory li.not-patrolled {
| |
| background-color: var(--background-color-warning-subtle, #ffa) !important;
| |
| }
| |
| | |
| /* HACK to workaround VE and badly written CGroups */
| |
| .noteTA {
| |
| display: none;
| |
| }
| |
| | |
| /* 页底文字太小 */
| |
| #footer ul li {
| |
| font-size: small;
| |
| }
| |
| | |
| /* For portals, added 2011-12-07 -bv
| |
| On wide screens, show these as two columns
| |
| On narrow and mobile screens, let them collapse into a single column */
| |
| .portal-column-left {
| |
| float: left;
| |
| width: 50%;
| |
| }
| |
| .portal-column-right {
| |
| float: right;
| |
| width: 49%;
| |
| }
| |
| .portal-column-left-wide {
| |
| float: left;
| |
| width: 60%;
| |
| }
| |
| .portal-column-right-narrow {
| |
| float: right;
| |
| width: 39%;
| |
| }
| |
| .portal-column-left-extra-wide {
| |
| float: left;
| |
| width: 70%;
| |
| }
| |
| .portal-column-right-extra-narrow {
| |
| float: right;
| |
| width: 29%;
| |
| }
| |
| @media only screen and (max-width: 800px) {
| |
| /* Decouple the columns on narrow screens */
| |
| .portal-column-left,
| |
| .portal-column-right,
| |
| .portal-column-left-wide,
| |
| .portal-column-right-narrow,
| |
| .portal-column-left-extra-wide,
| |
| .portal-column-right-extra-narrow {
| |
| float: inherit;
| |
| width: inherit;
| |
| }
| |
| }
| |
| | |
| /* Main page fixes */
| |
| #interwiki-completelist {
| |
| font-weight: bold;
| |
| }
| |
| | |
| /* MediaWiki:Tag-jimmy-bot-non-free */
| |
| .tag-jimmy-bot-non-free {
| |
| color: var(--color-error, red);
| |
| font-size: 1.143em;
| |
| }
| |
| | |
| /* Normal font styling for wikitable row headers with scope="row" tag */
| |
| .wikitable.plainrowheaders th[scope="row"] {
| |
| font-weight: normal;
| |
| /* @noflip */
| |
| text-align: left;
| |
| }
| |
| | |
| /* 隱藏「編輯已選擇修訂的標籤」按鈕,參閱[[Special:日志/tag]]幾乎全是破壞,一堆使用者不懂該功能亂按,並造成**無法復原**的後果 */
| |
| .mw-history-editchangetags-button {
| |
| display: none;
| |
| }
| |
| .mw-log-editchangetags-button {
| |
| display: none;
| |
| }
| |
| | |
| /* 代码中间不换行 */
| |
| pre,
| |
| .mw-code,
| |
| .mw-highlight {
| |
| line-break: anywhere;
| |
| white-space: pre-wrap;
| |
| word-break: break-all;
| |
| }
| |
| | |
| /* Styling the parameter fields in [[Template:Information]] and related templates
| |
| also here (besides on [[MediaWiki:Filepage.css]]) to ensure proper preview
| |
| on other pages than those in the file namespace */
| |
| .fileinfo-paramfield {
| |
| background: #ccf;
| |
| /* @noflip */
| |
| text-align: right;
| |
| /* @noflip */
| |
| padding-right: 0.4em;
| |
| width: 15%;
| |
| font-weight: bold;
| |
| }
| |
| | |
| /* 由於有些使用者不了解此功能,所以我個人決定將其設定為opt-in功能 by Xiplus */
| |
| .mw-changeslist-src-mw-edit .unpatrolled {
| |
| display: none;
| |
| }
| |
| #mw-diff-ntitle4 .patrollink {
| |
| display: none;
| |
| }
| |
| /* RCP的wrapper是span,NPP的wrapper是div */
| |
| #mw-content-text span.patrollink {
| |
| display: none;
| |
| }
| |
| | |
| /* 修复Inline diffs中,"行内"两字发生断行 */
| |
| .mw-diffPage-inlineToggle-container {
| |
| white-space: nowrap;
| |
| }
| |
| | |
| /* Styling for JQuery makeCollapsible, matching that of collapseButton */
| |
| .mw-parser-output .mw-collapsible-toggle {
| |
| font-weight: normal;
| |
| /* @noflip */
| |
| text-align: right;
| |
| padding-right: 0.2em;
| |
| padding-left: 0.2em;
| |
| }
| |
| .mw-collapsible-leftside-toggle .mw-collapsible-toggle {
| |
| /* @noflip */
| |
| float: left;
| |
| /* @noflip */
| |
| text-align: left;
| |
| }
| |
| | |
| @media screen {
| |
| /* Display "From Wikipedia, the free encyclopedia" in skins that support it,
| |
| do not apply to print mode */
| |
| #siteSub {
| |
| display: block;
| |
| }
| |
| }
| |
| | |
| .mw-parser-output .IPA {
| |
| /**
| |
| * 解决[[Special:PermaLink/88653275#IPA模板不正确显示字体]]
| |
| * Chrome 128+将Windows上的默认CJK字体改为了Noto Sans CJK,因缺少部分注音字符导致显示异常
| |
| * 故手动指定更优的字体
| |
| * 由于{{IPA}}无法在所有情况下插入模板样式(例如[[Lorem ipsum|{{IPA|/ˌlɔːrəm ˈɪpsəm/}}]]),只能放置于此
| |
| */
| |
| font-family:
| |
| "Charis", "Charis SIL", "Doulos SIL", "Gentium", "Gentium Alternative",
| |
| "GentiumAlt", "Code2000", "Segoe UI", system-ui, sans-serif;
| |
| }
| |
| | |
| | |
| /* Remove bullets when there are multiple edit page warnings */
| |
| ul.permissions-errors {
| |
| margin: 0;
| |
| }
| |
| | |
| ul.permissions-errors > li {
| |
| list-style: none;
| |
| }
| |
| .infobox .navbar {
| |
| display: none !important;
| |
| }
| |
| | |
| /* --- 维基导游风格彩色信息框 --- */
| |
| .voy-box {
| |
| margin: 1em 0;
| |
| border: 1px solid;
| |
| padding: 1em;
| |
| display: flex; /* 使用Flex布局,让图标和文字完美对齐 */
| |
| align-items: flex-start;
| |
| }
| |
| .voy-box-icon {
| |
| font-size: 3em; /* 图标大小 */
| |
| margin-right: 1em;
| |
| line-height: 1;
| |
| }
| |
| .voy-box-content {
| |
| flex: 1; /* 文字内容占满剩余空间 */
| |
| }
| |
| | |
| /* 定义颜色 */
| |
| /* 提示 (蓝色) */
| |
| .voy-box.notice { border-color: #3366cc; background-color: #f0f8ff; }
| |
| .voy-box.notice .voy-box-icon { color: #3366cc; }
| |
| | |
| /* 警告 (黄色) */
| |
| .voy-box.warning { border-color: #ffcc00; background-color: #fff8e1; }
| |
| .voy-box.warning .voy-box-icon { color: #ffcc00; }
| |
| | |
| /* 重要 (红色) */
| |
| .voy-box.important { border-color: #cc3333; background-color: #fff0f0; }
| |
| .voy-box.important .voy-box-icon { color: #cc3333; }
| |
| | |
| /* 完成 (绿色) */
| |
| .voy-box.ok { border-color: #339966; background-color: #f0fff0; }
| |
| .voy-box.ok .voy-box-icon { color: #339966; }
| |
| | |
| /* --- 热带气旋Infobox风暴色谱 --- */
| |
| .infobox.tc-cat-td .infobox-title { background-color: #AFFFFF; } /* 热带低压 */
| |
| .infobox.tc-cat-ts .infobox-title { background-color: #96FFFF; } /* 热带风暴 */
| |
| .infobox.tc-cat-c1 .infobox-title { background-color: #FFFF96; } /* 一级飓风 */
| |
| .infobox.tc-cat-c2 .infobox-title { background-color: #FFD273; } /* 二级飓风 */
| |
| .infobox.tc-cat-c3 .infobox-title { background-color: #FFB4B4; } /* 三级飓风 */
| |
| .infobox.tc-cat-c4 .infobox-title { background-color: #FF9696; } /* 四级飓风 */
| |
| .infobox.tc-cat-c5 .infobox-title { background-color: #C8A0C8; } /* 五级飓风 */
| |
| | |
| /* --- Blockland Wiki V2: 架空世界档案馆风格 --- */
| |
| | |
| /* ========================================= */
| |
| /* 样式 */
| |
| /* ========================================= */
| |
|
| |
|
| |
|
| |
| | |
| /* ========================================= */
| |
| /* 全屏沉浸式 Banner (修复版:不破坏侧边栏) */
| |
| /* ========================================= */
| |
| .page-Main_Page .mw-body-header,
| |
| .page-Main_Page .citizen-body-header {
| |
| display: none !important; | |
| } | |
| .page-Main_Page .mw-body,
| |
| .page-Main_Page #content {
| |
| margin-top: 0 !important;
| |
| padding-top: 0 !important;
| |
| }
| |
| /* Banner 容器 */
| |
| .home-banner {
| |
| position: relative;
| |
| height: 600px;
| |
| width: 100%;
| |
| /* 这里修改上下边距解决不贴顶 */
| |
| margin-top: -50px;
| |
| margin-bottom: -100px;
| |
| z-index: 1;
| |
| }
| |
| .home-banner::before {
| |
| content: "";
| |
| position: absolute;
| |
| top: 0;
| |
| | | |
| /* 修改图片大小,这里解决图片不靠边 */
| | if not latest_data or not latest_data[1] then return "暂无行情数据" end |
| width: 110vw;
| | local max_y = tonumber(latest_data[1].year) |
| left: 50%;
| | local max_m = tonumber(latest_data[1].month) |
| right: 50%;
| |
| margin-left: -50vw;
| |
| margin-right: -50vw;
| |
| height: 100%;
| |
| background-image: url('https://cdn.jsdelivr.net/gh/KKBlockE/BlocklandPicturebed@main/main/20260130095720051.png');
| |
| background-size: cover;
| |
| background-position: center;
| |
| /* 虚化遮罩 */
| |
| -webkit-mask-image: linear-gradient(to bottom, black 50%, transparent 100%);
| |
| mask-image: linear-gradient(to bottom, black 50%, transparent 100%);
| |
| z-index: -1; | |
| pointer-events: none; | |
| }
| |
| /* 文字层 */
| |
| .home-banner-overlay {
| |
| position: relative;
| |
| padding-top: 150px;
| |
| text-align: center;
| |
| z-index: 2;
| |
| }
| |
| .home-banner-overlay h1 {
| |
| color: #ffffff !important;
| |
| font-size: 4em;
| |
| font-weight: 900;
| |
| text-shadow: 0 4px 15px rgba(0,0,0,0.6);
| |
| margin: 0;
| |
| line-height: 1.2;
| |
| }
| |
| .home-banner-overlay p {
| |
| color: #f0f0f0 !important;
| |
| font-size: 1.4em;
| |
| text-shadow: 0 2px 5px rgba(0,0,0,0.8);
| |
| letter-spacing: 1px; | |
| }
| |
| /* ========================================= */
| |
| /* PageBanner 专用样式 (放在Common.css以绕过过滤器) */
| |
| /* ========================================= */
| |
| /* ========================================= */
| |
| /* 最终修正版:天空优先 + 修复黑底 + 修复层级 */
| |
| /* ========================================= */
| |
|
| |
|
| /* 1. 基础清理 (保持不变) */
| | -- 2. 计算 8 期前(1 个月前)的期数 |
| body:has(.page-banner) .mw-body-header,
| | local current_abs = max_y * 104 + max_m |
| body:has(.page-banner) .citizen-body-header,
| | local old_abs = current_abs - 8 |
| body:has(.page-banner) #firstHeading {
| | local old_y = math.floor((old_abs - 1) / 104) |
| display: none !important; | | local old_m = ((old_abs - 1) % 104) + 1 |
| }
| |
| body:has(.page-banner) .mw-body,
| |
| body:has(.page-banner) #content {
| |
| margin-top: 0 !important;
| |
| padding-top: 0 !important;
| |
| }
| |
|
| |
|
| /* 2. Banner 主容器 */
| | -- 3. 抓取本期和上月的数据 |
| .page-banner { | | local current_rates = extData.getDbData{ db = 'wp_db', from = 'wp_owmc_currency_rates', where = string.format("year=%d AND month=%d", max_y, max_m), limit = 200, data = 'currency_code=currency_code, rate=rate' } |
| position: relative; | | local old_rates = extData.getDbData{ db = 'wp_db', from = 'wp_owmc_currency_rates', where = string.format("year=%d AND month=%d", old_y, old_m), limit = 200, data = 'currency_code=currency_code, rate=rate' } |
| height: 660px;
| | local meta_data = extData.getDbData{ db = 'wp_db', from = 'wp_owmc_currency_meta', limit = 200, data = 'currency_code=currency_code, currency_name=currency_name' } |
| width: 100%;
| |
| margin-top: -90px; | |
| margin-bottom: -100px;
| |
| z-index: 1;
| |
| display: flex;
| |
| flex-direction: column;
| |
| justify-content: center;
| |
| align-items: center;
| |
| /* ❌ 删掉了之前的 background: #000; 彻底解决黑底问题 */
| |
| } | |
|
| |
|
| /* 3. 背景层容器 (110vw 暴力宽) */
| | -- 4. 数据映射与处理 |
| .page-banner-bg {
| | local meta_map, old_map = {}, {} |
| position: absolute; | | if meta_data then for _, r in ipairs(meta_data) do meta_map[r.currency_code] = r.currency_name end end |
| top: 0;
| | if old_rates then for _, r in ipairs(old_rates) do old_map[r.currency_code] = tonumber(r.rate) end end |
| width: 110vw;
| |
| left: 50%;
| |
| right: 50%;
| |
| margin-left: -50vw;
| |
| margin-right: -50vw; | |
| height: 100%; | |
| | |
| z-index: 0; /* 背景在底层 */
| |
| pointer-events: none;
| |
| overflow: hidden;
| |
|
| |
|
| /* ✅ 恢复您最喜欢的“底部虚化消失”效果 */ | | local stats = {} |
| /* 意思是:上面100%不透明,到底部渐变为透明,自然过渡到页面背景 */ | | if current_rates then |
| -webkit-mask-image: linear-gradient(to bottom, black 60%, transparent 100%);
| | for _, row in ipairs(current_rates) do |
| mask-image: linear-gradient(to bottom, black 60%, transparent 100%);
| | local code = row.currency_code |
| }
| | local c_rate = tonumber(row.rate) |
| | local o_rate = old_map[code] |
|
| |
|
| /* 4. 图片本体 (核心修改!) */ | | if c_rate and o_rate and c_rate > 0 then |
| .page-banner-bg img {
| | local val_current = 1 / c_rate |
| width: 100% !important;
| | local val_old = 1 / o_rate |
| height: 100% !important;
| | local pct = ((val_current - val_old) / val_old) * 100 |
|
| | table.insert(stats, { code = code, name = meta_map[code] or code, val = val_current, pct = pct }) |
| /* ✅ 改回 cover:强制填满,不再有黑边 */
| | end |
| object-fit: cover !important;
| | end |
|
| | end |
| /* ✅ 重点:改为 'center top' (或者 50% 20%) */
| |
| /* 这样会锁定图片的顶部区域(天空),把下面多余的杂物切掉 */
| |
| object-position: center 20% !important;
| |
| | |
| display: block !important;
| |
| border: none !important;
| |
| }
| |
|
| |
|
| /* ❌ 删掉了之前的 ::after 黑色渐变层,避免遮挡文字 */
| | table.sort(stats, function(a, b) return a.pct > b.pct end) |
|
| |
|
| /* 5. 文字层 (强制最高层级) */
| | -- 5. 渲染 HTML (去掉了固定宽度、边框和阴影,默认撑满 100%) |
| .page-banner-content { | | local html = mw.html.create('div') |
| position: relative;
| | :cssText("width: 100%; margin: 0 0 16px 0; background: transparent; font-family: -apple-system, 'Segoe UI', sans-serif;") |
| padding-top: 150px;
| |
| text-align: center;
| |
| width: 100%;
| |
|
| |
| /* ✅ 层级设为 10,绝对压在 z-index:0 的背景图上面 */
| |
| z-index: 10;
| |
| }
| |
|
| |
|
| /* 6. 字体样式 (保持原样) */
| | local function renderRow(item) |
| .page-banner-local { | | local is_up = item.pct >= 0 |
| color: #ffffff !important;
| | local color = is_up and "#f43f5e" or "#10b981" |
| font-family: 'Microsoft YaHei', sans-serif;
| | local sign = is_up and "▲ +" or "▼ " |
| font-size: 4em;
| | local pct_str = string.format("%.2f%%", item.pct) |
| font-weight: 900;
| | local val_str = string.format("%.4f", item.val) |
| text-shadow: 0 4px 15px rgba(0,0,0,0.6);
| |
| margin: 0;
| |
| line-height: 1.2;
| |
| }
| |
| .page-banner-en { | |
| color: #f0f0f0 !important;
| |
| font-size: 1.4em;
| |
| text-shadow: 0 2px 5px rgba(0,0,0,0.8);
| |
| letter-spacing: 1px;
| |
| margin-top: 10px;
| |
| font-weight: bold;
| |
| text-transform: uppercase;
| |
| }
| |
|
| |
|
| body { overflow-x: hidden; }
| | -- 引入 RemixIcon 图标作为趋势线 |
| | local icon_class = is_up and "ri-trend-up-line" or "ri-trend-down-line" |
| | if item.pct == 0 then icon_class = "ri-subtract-line" end |
| | local sparkline = string.format('<i class="%s" style="color: %s; font-size: 24px; opacity: 0.8;"></i>', icon_class, color) |
|
| |
|
| /* Ambox 基础样式 */
| | return string.format([[ |
| table.ambox {
| | <div style="display: flex; justify-content: space-between; align-items: center; padding: 10px 0; border-bottom: 1px solid #f1f5f9;"> |
| margin: 0px 10% 10px 10%; /* 上 右 下 左 */
| | <div style="flex: 1; text-align: left;"> |
| border: 1px solid #aaa;
| | <div style="font-weight: 900; color: #0f172a; font-size: 14px; font-family: 'Courier New', monospace;">%s</div> |
| border-left: 10px solid #1e90ff; /* 默认蓝色 */
| | <div style="font-size: 11px; color: #64748b; font-weight: 500; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 90px;">%s</div> |
| background: #fbfbfb;
| | </div> |
| width: 80%;
| | <div style="flex: 0 0 50px; text-align: center;">%s</div> |
| box-sizing: border-box;
| | <div style="flex: 1; text-align: right;"> |
| }
| | <div style="font-weight: bold; font-family: 'Courier New', monospace; font-size: 14px; color: #0f172a;">%s</div> |
| | <div style="font-size: 11px; font-weight: 800; color: %s; letter-spacing: -0.5px;">%s%s</div> |
| | </div> |
| | </div> |
| | ]], item.code, item.name, sparkline, val_str, color, sign, pct_str) |
| | end |
|
| |
|
| table.ambox th.ambox-text,
| | -- 渲染区块标题样式 |
| table.ambox td.ambox-text {
| | local function renderHeader(title, color) |
| padding: 0.25em 0.5em;
| | return mw.html.create('div'):cssText(string.format("font-size: 12px; font-weight: 800; color: %s; text-transform: uppercase; margin-top: 12px; margin-bottom: 4px;", color)):wikitext(title) |
| width: 100%;
| | end |
| }
| |
|
| |
|
| table.ambox td.ambox-image {
| | html:node(renderHeader("Core Assets / 主币", "#94a3b8")) |
| padding: 2px 0 2px 0.5em; | | local cores = {WMC=true, KCK=true, SKV=true, COS=true} |
| text-align: center; | | for _, item in ipairs(stats) do |
| vertical-align: middle; | | if cores[item.code] then html:node(mw.html.create('div'):wikitext(renderRow(item))) end |
| width: 52px; /* 图片区域宽度 */ | | end |
| }
| |
|
| |
|
| /* ========================================= */ | | html:node(renderHeader("Top Gainers / 领涨", "#f43f5e")) |
| /* --- 29. Ambox Aero 色条修复补丁 (必加) --- */
| | local count = 0 |
| /* ========================================= */
| | for _, item in ipairs(stats) do |
| | if not cores[item.code] and item.pct > 0 then |
| | html:node(mw.html.create('div'):wikitext(renderRow(item))) |
| | count = count + 1 |
| | if count >= 3 then break end |
| | end |
| | end |
|
| |
|
| /* 强制恢复左侧边框的颜色 */ | | html:node(renderHeader("Top Losers / 领跌", "#10b981")) |
| table.ambox-notice { border-left-color: #1e90ff !important; } /* 蓝 */
| | count = 0 |
| table.ambox-delete { border-left-color: #b22222 !important; } /* 红 */
| | for i = #stats, 1, -1 do |
| table.ambox-content { border-left-color: #f28500 !important; } /* 橙 */
| | local item = stats[i] |
| table.ambox-style { border-left-color: #f4c430 !important; } /* 黄 */
| | if not cores[item.code] and item.pct < 0 then |
| table.ambox-good { border-left-color: #66cc66 !important; } /* 绿 */
| | html:node(mw.html.create('div'):wikitext(renderRow(item))) |
| table.ambox-move { border-left-color: #9932cc !important; } /* 紫 */
| | count = count + 1 |
| | if count >= 3 then break end |
| | end |
| | end |
|
| |
|
| /* 如果你还加了自定义的 funny */
| | return tostring(html) |
| table.ambox-funny { border-left-color: #FF69B4 !important; } /* 粉色 (举例) */
| | end |
|
| |
|
| /* 确保边框样式是实线,否则可能不显示 */
| | return p |
| table.ambox {
| |
| border-left-style: solid !important;
| |
| }
| |
| /* 修复 Citizen 嵌套 Navbox 分割线缺失 */
| |
| .navbox .navbox-subgroup {
| |
| border-top: 1px solid var(--border-color-base, #dddddd);
| |
| }
| |
| | |
| .navbox-group {
| |
| /* 确保侧边栏有明显的分割感 */
| |
| border-bottom: 1px solid var(--border-color-base, #dddddd) !important;
| |
| }
| |
| | |
| .navbox-list {
| |
| border-bottom: 1px solid var(--border-color-base, #dddddd) !important;
| |
| }
| |
| | |
| /* 最后一个元素去掉底边框,防止重叠 */
| |
| .navbox tr:last-child .navbox-group,
| |
| .navbox tr:last-child .navbox-list {
| |
| border-bottom: none !important;
| |
| }
| |
| | |
| /* ========================================= */
| |
| /* --- 30. 黑幕 (兼容链接与深色模式) --- */
| |
| /* ========================================= */
| |
| | |
| /* 基础样式:浅色模式下的黑幕 */
| |
| .heimu {
| |
| background-color: #252525;
| |
| color: #252525;
| |
| text-shadow: none;
| |
| transition: color 0.13s ease;
| |
| }
| |
| | |
| /* 1. 兼容链接:强制隐藏黑幕内部的链接颜色 */
| |
| .heimu a {
| |
| color: #252525;
| |
| transition: color 0.13s ease;
| |
| }
| |
| | |
| /* 鼠标划过、点击或选中黑幕时,显示常规文字 */
| |
| .heimu:hover,
| |
| .heimu:active,
| |
| .heimu:focus {
| |
| color: #ffffff;
| |
| }
| |
| | |
| /* 鼠标划过黑幕时,内部链接显示为浅蓝色(保证在深色背景上的可读性) */
| |
| .heimu:hover a,
| |
| .heimu:active a,
| |
| .heimu:focus a {
| |
| color: #66b2ff;
| |
| }
| |
| | |
| /* 鼠标单独悬停在链接上时的交互反馈 */
| |
| .heimu a:hover {
| |
| color: #99ccff;
| |
| text-decoration: underline;
| |
| }
| |
| | |
| /* ========================================= */
| |
| /* 2. 兼容深色模式 (针对 Citizen 皮肤) */
| |
| /* ========================================= */
| |
| | |
| /* ----------------------------------------- */
| |
| /* 手动暗色 + 纯黑关闭 (默认暗色) */
| |
| /* ----------------------------------------- */
| |
| html.skin-theme-clientpref-night.citizen-feature-pure-black-clientpref-0 .heimu {
| |
| background-color: #ADBEDF;
| |
| color: #ADBEDF;
| |
| }
| |
| | |
| html.skin-theme-clientpref-night.citizen-feature-pure-black-clientpref-0 .heimu a {
| |
| color: #ADBEDF;
| |
| }
| |
| | |
| html.skin-theme-clientpref-night.citizen-feature-pure-black-clientpref-0 .heimu:hover,
| |
| html.skin-theme-clientpref-night.citizen-feature-pure-black-clientpref-0 .heimu:active,
| |
| html.skin-theme-clientpref-night.citizen-feature-pure-black-clientpref-0 .heimu:focus {
| |
| color: #252525;
| |
| }
| |
| | |
| html.skin-theme-clientpref-night.citizen-feature-pure-black-clientpref-0 .heimu:hover a,
| |
| html.skin-theme-clientpref-night.citizen-feature-pure-black-clientpref-0 .heimu:active a,
| |
| html.skin-theme-clientpref-night.citizen-feature-pure-black-clientpref-0 .heimu:focus a {
| |
| color: #0645ad;
| |
| }
| |
| | |
| html.skin-theme-clientpref-night.citizen-feature-pure-black-clientpref-0 .heimu a:hover {
| |
| color: #0b0080;
| |
| text-decoration: underline;
| |
| }
| |
| | |
| /* ----------------------------------------- */
| |
| /* 手动暗色 + 纯黑开启 */
| |
| /* ----------------------------------------- */
| |
| html.skin-theme-clientpref-night.citizen-feature-pure-black-clientpref-1 .heimu {
| |
| background-color: #BDBEBE;
| |
| color: #BDBEBE;
| |
| }
| |
| | |
| html.skin-theme-clientpref-night.citizen-feature-pure-black-clientpref-1 .heimu a {
| |
| color: #BDBEBE;
| |
| }
| |
| | |
| html.skin-theme-clientpref-night.citizen-feature-pure-black-clientpref-1 .heimu:hover,
| |
| html.skin-theme-clientpref-night.citizen-feature-pure-black-clientpref-1 .heimu:active,
| |
| html.skin-theme-clientpref-night.citizen-feature-pure-black-clientpref-1 .heimu:focus {
| |
| color: #252525;
| |
| }
| |
| | |
| html.skin-theme-clientpref-night.citizen-feature-pure-black-clientpref-1 .heimu:hover a,
| |
| html.skin-theme-clientpref-night.citizen-feature-pure-black-clientpref-1 .heimu:active a,
| |
| html.skin-theme-clientpref-night.citizen-feature-pure-black-clientpref-1 .heimu:focus a {
| |
| color: #0645ad;
| |
| }
| |
| | |
| html.skin-theme-clientpref-night.citizen-feature-pure-black-clientpref-1 .heimu a:hover {
| |
| color: #0b0080;
| |
| text-decoration: underline;
| |
| }
| |
| | |
| /* ========================================= */
| |
| /* 跟随系统 且 系统处于深色模式时 */
| |
| /* ========================================= */
| |
| | |
| /* ----------------------------------------- */
| |
| /* 自动暗色 + 纯黑关闭 */
| |
| /* ----------------------------------------- */
| |
| @media screen and (prefers-color-scheme: dark) {
| |
| html.skin-theme-clientpref-os.citizen-feature-pure-black-clientpref-0 .heimu {
| |
| background-color: #ADBEDF;
| |
| color: #ADBEDF;
| |
| }
| |
| | |
| html.skin-theme-clientpref-os.citizen-feature-pure-black-clientpref-0 .heimu a {
| |
| color: #ADBEDF;
| |
| }
| |
| | |
| html.skin-theme-clientpref-os.citizen-feature-pure-black-clientpref-0 .heimu:hover,
| |
| html.skin-theme-clientpref-os.citizen-feature-pure-black-clientpref-0 .heimu:active,
| |
| html.skin-theme-clientpref-os.citizen-feature-pure-black-clientpref-0 .heimu:focus {
| |
| color: #252525;
| |
| }
| |
| | |
| html.skin-theme-clientpref-os.citizen-feature-pure-black-clientpref-0 .heimu:hover a,
| |
| html.skin-theme-clientpref-os.citizen-feature-pure-black-clientpref-0 .heimu:active a,
| |
| html.skin-theme-clientpref-os.citizen-feature-pure-black-clientpref-0 .heimu:focus a {
| |
| color: #0645ad;
| |
| }
| |
| | |
| html.skin-theme-clientpref-os.citizen-feature-pure-black-clientpref-0 .heimu a:hover {
| |
| color: #0b0080;
| |
| text-decoration: underline;
| |
| }
| |
| | |
| /* ----------------------------------------- */
| |
| /* 自动暗色 + 纯黑开启 */
| |
| /* ----------------------------------------- */
| |
| html.skin-theme-clientpref-os.citizen-feature-pure-black-clientpref-1 .heimu {
| |
| background-color: #BDBEBE;
| |
| color: #BDBEBE;
| |
| }
| |
| | |
| html.skin-theme-clientpref-os.citizen-feature-pure-black-clientpref-1 .heimu a {
| |
| color: #BDBEBE;
| |
| }
| |
| | |
| html.skin-theme-clientpref-os.citizen-feature-pure-black-clientpref-1 .heimu:hover,
| |
| html.skin-theme-clientpref-os.citizen-feature-pure-black-clientpref-1 .heimu:active,
| |
| html.skin-theme-clientpref-os.citizen-feature-pure-black-clientpref-1 .heimu:focus {
| |
| color: #252525;
| |
| }
| |
| | |
| html.skin-theme-clientpref-os.citizen-feature-pure-black-clientpref-1 .heimu:hover a,
| |
| html.skin-theme-clientpref-os.citizen-feature-pure-black-clientpref-1 .heimu:active a,
| |
| html.skin-theme-clientpref-os.citizen-feature-pure-black-clientpref-1 .heimu:focus a {
| |
| color: #0645ad;
| |
| }
| |
| | |
| html.skin-theme-clientpref-os.citizen-feature-pure-black-clientpref-1 .heimu a:hover {
| |
| color: #0b0080;
| |
| text-decoration: underline;
| |
| }
| |
| }
| |
| /* ----------------------------------------- */
| |
| /* 额外补充内容 */
| |
| /* ----------------------------------------- */
| |
| /* ========== Blockland Main Page ========== */
| |
| | |
| /* ========== Blockland Main Page ========== */
| |
| | |
| .bl-mainpage {
| |
| max-width: 1240px;
| |
| margin: 0 auto;
| |
| padding: 0.5rem 0 1.5rem 0;
| |
| color: #202122;
| |
| }
| |
| | |
| /* 顶部横幅 */
| |
| .bl-hero {
| |
| display: flex;
| |
| justify-content: space-between;
| |
| align-items: stretch;
| |
| gap: 20px;
| |
| margin-bottom: 20px;
| |
| padding: 24px 28px;
| |
| background: linear-gradient(180deg, #f5f1e8 0%, #ede6d8 100%);
| |
| border: 1px solid #c9bea8;
| |
| border-radius: 10px;
| |
| }
| |
| | |
| .bl-hero-text {
| |
| flex: 1 1 auto;
| |
| min-width: 0;
| |
| }
| |
| | |
| .bl-hero-kicker {
| |
| font-size: 12px;
| |
| letter-spacing: 0.12em;
| |
| color: #6b6254;
| |
| text-transform: uppercase;
| |
| margin-bottom: 8px;
| |
| }
| |
| | |
| .bl-hero-title {
| |
| font-size: 2.1em;
| |
| font-weight: 700;
| |
| line-height: 1.2;
| |
| color: #2f261b;
| |
| margin-bottom: 10px;
| |
| font-family: Georgia, "Times New Roman", serif;
| |
| }
| |
| | |
| .bl-hero-desc {
| |
| font-size: 1em;
| |
| color: #51483d;
| |
| line-height: 1.7;
| |
| background: none !important;
| |
| border: 0 !important;
| |
| box-shadow: none !important;
| |
| padding: 0 !important;
| |
| }
| |
| | |
| /* 条目统计 */
| |
| .bl-stat {
| |
| flex: 0 0 190px;
| |
| text-align: center;
| |
| padding: 18px 16px;
| |
| background: rgba(255,255,255,0.65);
| |
| border: 1px solid #cfc5b1;
| |
| border-radius: 8px;
| |
| align-self: center;
| |
| }
| |
| | |
| .bl-stat-label {
| |
| font-size: 0.9em;
| |
| color: #665d50;
| |
| margin-bottom: 6px;
| |
| }
| |
| | |
| .bl-stat-number {
| |
| font-size: 2em;
| |
| font-weight: 700;
| |
| line-height: 1.1;
| |
| }
| |
| | |
| .bl-stat-number a {
| |
| color: #1f4d7a !important;
| |
| text-decoration: none;
| |
| }
| |
| | |
| .bl-stat-number a:hover {
| |
| text-decoration: underline;
| |
| }
| |
| | |
| .bl-stat-note {
| |
| margin-top: 6px;
| |
| font-size: 0.85em;
| |
| color: #776d5e;
| |
| }
| |
| | |
| /* 主体布局 */
| |
| .bl-grid {
| |
| display: flex;
| |
| gap: 20px;
| |
| align-items: flex-start;
| |
| }
| |
| | |
| .bl-maincol {
| |
| flex: 1 1 auto;
| |
| min-width: 0;
| |
| }
| |
| | |
| .bl-sidecol {
| |
| flex: 0 0 320px;
| |
| }
| |
| | |
| /* 卡片 */
| |
| .bl-box {
| |
| margin-bottom: 18px;
| |
| background: #fff;
| |
| border: 1px solid #c8ccd1;
| |
| border-radius: 8px;
| |
| overflow: hidden;
| |
| }
| |
| | |
| .bl-box-title {
| |
| padding: 10px 14px;
| |
| background: #f2f4f7;
| |
| border-bottom: 1px solid #c8ccd1;
| |
| font-size: 1.05em;
| |
| font-weight: 700;
| |
| color: #2f3a46;
| |
| }
| |
| | |
| .bl-box-body {
| |
| padding: 14px 16px;
| |
| }
| |
| | |
| /* 地图 */
| |
| .bl-map-wrap {
| |
| padding: 12px;
| |
| background: #f8f9fa;
| |
| border: 1px dashed #c8ccd1;
| |
| border-radius: 6px;
| |
| text-align: center;
| |
| min-height: 320px;
| |
| }
| |
| | |
| .bl-map-wrap img,
| |
| .bl-map-wrap svg {
| |
| max-width: 100%;
| |
| height: auto;
| |
| }
| |
| | |
| /* 纯文本说明:不允许灰底深边框 */
| |
| .bl-plaintext,
| |
| .bl-plaintext p,
| |
| .bl-box-body p {
| |
| background: transparent !important;
| |
| border: 0 !important;
| |
| box-shadow: none !important;
| |
| outline: 0 !important;
| |
| padding: 0 !important;
| |
| margin: 0 0 0.8em 0;
| |
| color: #444;
| |
| line-height: 1.7;
| |
| display: block;
| |
| }
| |
| | |
| /* 列表 */
| |
| .bl-list {
| |
| margin: 0;
| |
| padding-left: 1.35em;
| |
| }
| |
| | |
| .bl-list li {
| |
| margin-bottom: 0.55em;
| |
| background: transparent !important;
| |
| border: 0 !important;
| |
| box-shadow: none !important;
| |
| }
| |
| | |
| /* 导航 */
| |
| .bl-navgrid {
| |
| display: grid;
| |
| grid-template-columns: 1fr 1fr;
| |
| gap: 10px;
| |
| }
| |
| | |
| .bl-navitem {
| |
| padding: 10px 12px;
| |
| background: #f8fafc;
| |
| border: 1px solid #d8dee6;
| |
| border-radius: 6px;
| |
| text-align: center;
| |
| font-weight: 600;
| |
| }
| |
| | |
| .bl-navitem a {
| |
| display: block;
| |
| color: #1f4d7a !important;
| |
| text-decoration: none !important;
| |
| }
| |
| | |
| .bl-navitem a:hover {
| |
| text-decoration: none !important;
| |
| background: none !important;
| |
| }
| |
| | |
| /* 页脚导航模板 */
| |
| .bl-footer-nav {
| |
| margin-top: 20px;
| |
| }
| |
| | |
| .bl-footer-nav > * + * {
| |
| margin-top: 14px;
| |
| }
| |
| | |
| /* 可选:隐藏首页标题 */
| |
| .page-Main_Page #firstHeading,
| |
| .page-首页 #firstHeading {
| |
| display: none;
| |
| }
| |
| | |
| /* 移动端 */
| |
| @media (max-width: 980px) {
| |
| .bl-grid {
| |
| display: block;
| |
| }
| |
| | |
| .bl-sidecol {
| |
| margin-top: 18px;
| |
| }
| |
| }
| |
| | |
| @media (max-width: 700px) {
| |
| .bl-hero {
| |
| display: block;
| |
| }
| |
| | |
| .bl-stat {
| |
| margin-top: 16px;
| |
| }
| |
| | |
| .bl-navgrid {
| |
| grid-template-columns: 1fr;
| |
| }
| |
| }
| |