封禁/警告/提醒页面
:root { --lh-red: #c0392b; --lh-blue: #2980b9; --lh-green: #27ae60; --lh-dark-green: #16a085; --lh-purple: #8e44ad; --lh-orange: #e67e22; --lh-yellow: #f1c40f; --lh-paper-bg: 255, 251, 240; --lh-string-color: 192, 57, 43; --lh-book-color: var(--gray-monochrome); --lh-tape-color: 90,90,90,0.3; --lh-white-bg: 249,249,249; --lh-dark-bg: 50, 50, 50; --lh-highlighter: var(--bright-accent); --lh-border-color: var(--gray-monochrome); --lh-wiki-note-color: var(--bright-accent) } /** * 旧代码合集 * 为了向下兼容而保留 */ .grid-container{display:flex;flex-direction:row;flex-wrap:wrap;width:100%}.grid-container,.grid-container [class*=grid]{box-sizing:border-box}[class*=grid]{padding:5px}.grid{width:100%}.grid-large{width:75%}.grid-big{width:50%}.grid-medium{width:33.33%}.grid-small{width:25%}@media screen and (min-width:768px){.wd-grid-large{width:75%}.wd-grid,.wd-grid-big{width:50%}.wd-grid-medium{width:33.33%}.wd-grid-small{width:25%}}.text-hover-hide{opacity:0;transition:opacity .3s}.text-hover-hide:hover{opacity:1}.text-block-hide{background:rgb(var(--black-monochrome));color:rgb(var(--black-monochrome));transition:background .3s}.text-block-hide:hover{background:0 0}.text-blur-hide,.text-blur-hover-hide{filter:blur(.3rem);-webkit-filter:blur(.3rem) transition: blur .3s}.text-blur-hover-hide:hover{filter:blur(0);-webkit-filter:blur(0)}.lyric-box{text-align:center;font-size:1.05rem;display:flex;flex-direction:column;flex-wrap:wrap;justify-content:center}.lyric-box p{margin:1.5em auto}.lyric-box.with-bigger-line p{margin:3em auto} /** * 便签纸 * notepaper */ .notepaper { background: linear-gradient(rgb(var(--lh-paper-bg)) 95%, #ddd 0); line-height: 2em; background-size: 100% 2em; background-attachment: local; border: 2em solid rgb(var(--lh-paper-bg)); box-shadow: 0 0.1rem 0.3rem rgba(0,0,0,0.2); padding: 0; margin: 1em auto; box-sizing: border-box; position: relative } .notepaper p { margin: 0; font-size: 1.05rem; letter-spacing: 0.1rem; line-height: inherit } .notepaper.narrow, .notepaper.wide { width: 90% } @media screen and (min-width:768px){ .notepaper.narrow { width: 50% } .notepaper.wide { width: 75% } } .notepaper.tight { border-width: 1rem; border-left-width: 1.2rem; border-right-width: 1.2rem; line-height: 1.8em; background-size: 100% 1.8em; font-size: 13px } .notepaper.with-string::before { content: ''; width: 0.5em; height: 6rem; background: rgb(var(--lh-string-color)); top: -2rem; right: -1rem; display: block; position: absolute; box-shadow: 0 0.1em 0.2em rgba(0,0,0,0.2); clip-path: polygon(-100% -100%,100% 0%,100% 100%,50% 98%,0% 100%); } .notepaper.with-tape::before { content: ''; border: 1px solid #ddd; background: rgba(var(--lh-tape-color)); width: 1.5em; height: 4em; transform: rotate(45deg); display: block; position: absolute; top: -3em; left: -1.8em } .notepaper.tight.with-string::before { top: -1rem; right: -0.25rem; } .notepaper.tight.with-tape::before { top: -2.5em; left: -1.3em } .notepaper.page { min-height: 36em; counter-increment: page; display: flex; flex-direction: column; justify-content: space-between } @media screen and (min-width:768px){ .notepaper.page { width: 70% } } .notepaper.page:after { content: counter(page); display: block; text-align: center } .notepaper-group { counter-reset: page; } .book-pattern { display: flex; flex-wrap: wrap; flex-direction: row } .book-pattern .notepaper.page:not(.notepaper > .notepaper) { width: 100% } @media screen and (min-width: 768px) { .book-pattern .notepaper.page:not(.notepaper > .notepaper) { width: 50% } } .book-wrapper { background: rgb(var(--lh-book-color)); padding: 0.5rem; box-shadow: 0 0.1rem 0.2rem rgba(0,0,0,0.2); border-radius: 5px; margin: 1rem auto } @media screen and (min-width: 768px) { .book-wrapper .notepaper { margin: 0 } } /** * 文字修饰 */ .text-highlighted { position: relative } .text-highlighted::before { content: ""; position: absolute; height: 0.9em; bottom: 2px; left: -2px; width: 105%; z-index: -1; background-color: rgb(var(--lh-highlighter)); opacity: .6; transform: skew(-15deg); transition: opacity .2s ease; border-radius: 3px 8px 10px 6px; transition: 0.1s ease background-color; } .text-underlined { text-decoration: underline; text-underline-offset: 4px; text-decoration-thickness: 2px; text-decoration-color: rgb(var(--lh-highlighter)) } .text-wavy { text-decoration: underline wavy; text-underline-offset: 4px; text-decoration-color: rgb(var(--lh-highlighter)) } .text-circled, .text-squared { display: inline-block; border: 2px solid rgb(var(--lh-highlighter)); border-radius: 100%; box-sizing: border-box } .text-squared { border-radius: 0 } .text-shadow { text-shadow: 0.075em 0.075em 0 rgb(var(--lh-highlighter)) } .text-highlighted.td-red::before { background: var(--lh-red) } .text-circled.td-red, .text-squared.td-red { border-color: var(--lh-red) } .text-underlined.td-red, .text-wavy.td-red { text-decoration-color: var(--lh-red) } .text-highlighted.td-blue::before { background: var(--lh-blue) } .text-circled.td-blue, .text-squared.td-blue { border-color: var(--lh-blue) } .text-underlined.td-blue, .text-wavy.td-blue { text-decoration-color: var(--lh-blue) } .text-highlighted.td-green::before { background: var(--lh-green) } .text-circled.td-green, .text-squared.td-green { border-color: var(--lh-green) } .text-underlined.td-green, .text-wavy.td-green { text-decoration-color: var(--lh-green) } .text-highlighted.td-darkgreen::before { background: var(--lh-dark-green) } .text-circled.td-darkgreen, .text-squared.td-darkgreen { border-color: var(--lh-dark-green) } .text-underlined.td-darkgreen, .text-wavy.td-darkgreen { text-decoration-color: var(--lh-dark-green) } .text-highlighted.td-purple::before { background: var(--lh-purple) } .text-circled.td-purple, .text-squared.td-purple { border-color: var(--lh-purple) } .text-underlined.td-purple, .text-wavy.td-purple { text-decoration-color: var(--lh-purple) } .text-highlighted.td-yellow::before { background: var(--lh-yellow) } .text-circled.td-yellow, .text-squared.td-yellow { border-color: var(--lh-yellow) } .text-underlined.td-yellow, .text-wavy.td-yellow { text-decoration-color: var(--lh-yellow) } .text-highlighted.td-orange::before { background: var(--lh-orange) } .text-circled.td-orange, .text-squared.td-orange { border-color: var(--lh-orange) } .text-underlined.td-orange, .text-wavy.td-orange { text-decoration-color: var(--lh-orange) } /* 隐藏文字 */ .text-blank { color: rgba(0,0,0,0) } .text-block { background: rgb(var(--black-monochrome)); color: rgb(var(--black-monochrome)); } .text-blur { filter: blur(0.3em); -webkit-filter: blur(0.3em) } .text-hoverback, .text-selectback { transition-duration: 0.3s; transition-property: background, transform, color } .text-blank.text-hoverback:hover, .text-blank.text-selectback::selection, .text-blank.text-selectback *::selection { color: rgb(var(--black-monochrome)) } .text-block.text-hoverback:hover { background: transparent!important } .text-block.text-selectback::selection, .text-block.text-selectback *::selection { color: rgb(var(--white-monochrome, 255, 255, 255)) } .text-blur.text-hoverback:hover { filter: blur(0)!important; -webkit-filter: blur(0)!important } /** * 附加项 */ .with-border, .with-box-style { border: 1px solid rgb(var(--bright-accent)) } .with-border-dark { border: 1px solid rgb(var(--black-monochrome)) } .with-border-light { border: 1px solid rgb(var(--white-monochrome)) } .with-border-thick { border-width: 2px } .with-shadow-sm { box-shadow: 0 0 0.1em rgba(0,0,0,0.2) } .with-shadow { box-shadow: 0 0.1em 0.2em rgba(0,0,0,0.2) } .with-shadow-lg { box-shadow: 0 0.15em 0.3em rgba(0,0,0,0.2) } .with-shadow-xl { box-shadow: 0 0.2em 0.5em rgba(0,0,0,0.2) } .with-shadow-xxl { box-shadow: 0 0.25em 0.8em rgba(0,0,0,0.2) } .with-padding, .with-box-style { padding: 0.25em 1em } .with-p-sm { padding: 0.125em 0.5em } .with-p-lg { padding: 0.5em 2em } .with-margin, .with-box-style { margin: 1em auto } .with-m-sm { margin: 0.5em auto } .with-m-lg { margin: 2em auto } .with-narrow-width { width: 90%!important; margin-left: auto; margin-right: auto } @media screen and (min-width: 768px) { .with-narrow-width { width: 75%!important } } [class*="with-bg-"], [class*="with-bg-"] h1 { color: #fff!important } .with-bg-red { background: var(--lh-red)!important } .with-bg-blue { background: var(--lh-blue)!important } .with-bg-green { background: var(--lh-green)!important } .with-bg-darkgreen { background: var(--lh-dark-green)!important } .with-bg-yellow { background: var(--lh-yellow)!important } .with-bg-orange { background: var(--lh-orange)!important } .with-bg-purple { background: var(--lh-purple)!important } /** * 删除类 */ .offwith-shadow { box-shadow: none!important } .offwith-border { border: none!important } .offwith-padding, .offwith-pam { padding: 0!important } .offwith-margin, .offwith-pam { margin: 0!important } .offwith-width-limit { width: auto!important; margin-left: auto!important; margin-right: auto!important } div[class*="grider"].offwith-grid-gap { grid-gap: 0!important } /** * 网格布局 */ /* Gridder 容器 */ div[class*="gridder"] { display: grid; box-sizing: border-box; grid-gap: 1rem; padding: 0 } div[class*="gridder"] * { box-sizing: border-box } .gridder, .gridder-col-2 { grid-template-columns: 1fr 1fr; } .gridder-col-3 { grid-template-columns: repeat(3, 1fr); } .gridder-col-4 { grid-template-columns: repeat(4, 1fr); } @media screen and (min-width: 768px) { .pc-gridder, .pc-gridder-col-2 { grid-template-columns: 1fr 1fr; } .pc-gridder-col-3 { grid-template-columns: repeat(3, 1fr); } .pc-gridder-col-4 { grid-template-columns: repeat(4, 1fr); } } .spanner, .spanner-2 { grid-column-start: span 2; } .spanner-3 { grid-column-start: span 3; } /** * 告示组件 */ .signblock, .signblock-dark, .signblock-warn { margin: 1rem auto; box-shadow: 0 0.1rem 0.3rem rgba(0,0,0,0.4); background: rgb(var(--lh-white-bg)); font-size: 1.05rem; padding: 2rem } @media screen and (min-width: 768px) { .signblock, .signblock-dark, .signblock-warn { width: 75% } } .signblock-dark, .signblock-dark h1 { background: rgb(var(--lh-dark-bg)); color: #fff } .signblock-warn, .signblock-warn h1 { background: var(--lh-red); color: #fff } .signblock h1, .signblock-dark h1, .signblock-warn h1 { text-align: center; font-size: 2rem; margin: 0; font-weight: 700 } .signblock-img { display: flex; flex-direction: row; justify-content: center } .signblock-img img { width: 8em } .signblock-footer { font-size: 0.9em; text-align: center; margin: 0.5rem 0; font-weight: bolder; display: block } /** * 报告 */ .reportblock, .reportblock-dark { border: 2px solid rgb(var(--lh-border-color)); box-shadow: 0 0.1rem 0.2rem rgba(0,0,0,0.3); background: rgb(var(--white-monochrome)); padding: 0.8rem 1.5rem; padding-bottom: 0.4rem; margin: 1.5rem auto; margin-bottom: 1rem; position: relative } .reportblock hr, .reportblock-dark hr { background-color: rgb(var(--lh-border-color)); margin-left: -1.5rem; margin-right: -1.5rem } .reportblock h1:first-child, .reportblock-dark h1:first-child { position: absolute; top: -1rem; left: 1.5rem; font-size: 110%; font-weight: 600; background: rgb(var(--lh-border-color)); color: #fff; padding: 0.2rem 0.5rem; margin: 0; } .reportblock-dark, .reportblock-dark h1 { border-color: rgb(var(--lh-white-bg)); background: rgb(var(--lh-dark-bg)); color: #fff } .reportblock-dark hr { background-color: rgb(var(--lh-white-bg)); } /* 更好的折叠框 */ .bettercollap { margin: 1em 0; } .bettercollap .collapsible-block { width: auto; overflow: hidden; border: 1px solid rgb(var(--lh-border-color)) } .bettercollap .collapsible-block-content, .bettercollap .collapsible-block-link { background: rgb(var(--white-monochrome)); padding: 0.5em } .bettercollap .collapsible-block-content { padding-left: 1em; padding-right: 1em } .bettercollap .collapsible-block-link { color: rgb(var(--lh-border-color)); background: rgb(var(--white-monochrome)); transition: .3s; display: block; } .bettercollap .collapsible-block-link:hover, .bettercollap .collapsible-block-unfolded .collapsible-block-link, .styledcollap.bettercollap .collapsible-block-link { color: rgb(var(--white-monochrome)); background: rgb(var(--lh-border-color))!important; text-decoration: none } .bettercollap .collapsible-block-link:hover a { color: rgb(var(--white-monochrome)) } .bettercollap .collapsible-block-link::before { content: "\25BC"; display: inline-block; margin-right: 0.5em; transform: rotate(-90deg) scale(0.9) } .bettercollap .collapsible-block-unfolded .collapsible-block-link::before { transform: rotate(0) scale(0.9) } .bettercollap .collapsible-block + .collapsible-block { border-top: none } .styledcollap.bettercollap .collapsible-block { border-radius: 2px; box-shadow: 0 0.1rem 0.2rem rgba(0,0,0,0.3) } .styledcollap.bettercollap .collapsible-block-content { background-color: rgb(var(--pale-gray-monochrome)); border-width: 3px } .styledcollap.bettercollap .collapsible-block-link:hover { background: rgba(var(--lh-border-color),0.95)!important; } /** * 提示框 */ .infoblock { color: #f1f1f1; font-weight: bold; background: #424242; padding: 5px 5px 5px 5px; border-radius: 4px; margin: -0.5rem 0 1rem 0; display: block; width: fit-content; padding-right: 25px; } .infoblock::before { content: "ⓘ " } /** * 单页迭代 */ .offset-page:not(:target), .offset-page:target ~ div#u-default-page { display: none } .offset-page:target { display: block }
这个页面是什么?
鉴于管理需要,经决定,正式建立“封禁/警告/提醒成员页面”。该网站的作用是公布被封禁/警告/提醒的网站成员或是依据本站删除政策而删除的页面及源代码。建立该页面目的并不是为了当众侮辱这些成员,而是给其它没有被封禁的成员一个警示。我们也不希望你或这些成员在这里出现。
请管理员注意:公布成员违规记录应套用以下模板:
[[div class="lightblock"]]
+++ 删除页面:[页面URL或标题],作者[[*user 作者]]
原因:[填写原因]
[如保留源代码可在此处放置源代码]
= [[*user 执行该操作管理员的用户名]]
[[/div]][[div class="lightblock"]]
+++ 被处分用户:[[*user 被处分用户名]]
++++ 最终处分:[填写处分结果]
原因:[填写原因,可适当附图或文字证据]
[如有需要,将倒计时置于此处]
= [[*user 执行该操作管理员的用户名]]
[[/div]]删除页面:Level BLHT-1“南方小城”,作者
114ghzz
原因:作者自删(2026.2.21将本页面移至deleted:分类中)
[[module ThemePreviewer noUi="true" theme_url="https://cdn.jsdelivr.net/gh/scp-cn-tech/sigma9@cn/cn/sigma9_ch.min.css"]]
[[module CSS]]
@import url("https://bhl.scpwikicn.com/css/min/normalize.min.css");
@import url("https://bhl.scpwikicn.com/css/min/black-highlighter.min.css");
[[/module]]
[[embed]]
<iframe src="//interwiki.scpwikicn.com/styleFrame.html?priority=0&override=1&type=sidebar&theme=https%3A%2F%2Finterwiki.scpwikicn.com%2Fcss%2Fstyle-bhl.css" style="display: none"></iframe>
[[/embed]]
[[iftags +版式]]
[[module css]]
.scp-image-block.block-right {
padding: 1em !important;
background: var(--gradient-header);
}
.scp-image-block img {
padding-bottom: 1em;
}
.status {
font-family: var(--title-font);
font-weight: 900;
font-size: 200%;
display: -webkit-box;
display: -webkit-flex;
display: -moz-box;
display: -ms-flexbox;
display: flex;
-webkit-align-content: center;
-ms-flex-line-pack: center;
align-content: center;
-webkit-box-pack: center;
-webkit-justify-content: center;
-moz-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
text-align: center;
}
.status span.active {
color: rgb(var(--white-monochrome));
margin-left: 0.5rem;
-webkit-box-shadow:
inset 100vw 0 0 0 rgb(var(--rating-module-button-plus-color)),
0.25rem 0.25rem 0 rgb(var(--rating-module-button-plus-color)),
-0.25rem -0.25rem 0 rgb(var(--rating-module-button-plus-color)),
-0.25rem 0.25rem 0 rgb(var(--rating-module-button-plus-color)),
0.25rem -0.25rem 0 rgb(var(--rating-module-button-plus-color));
-moz-box-shadow:
inset 100vw 0 0 0 rgb(var(--rating-module-button-plus-color)),
0.25rem 0.25rem 0 rgb(var(--rating-module-button-plus-color)),
-0.25rem -0.25rem 0 rgb(var(--rating-module-button-plus-color)),
-0.25rem 0.25rem 0 rgb(var(--rating-module-button-plus-color)),
0.25rem -0.25rem 0 rgb(var(--rating-module-button-plus-color));
box-shadow:
inset 100vw 0 0 0 rgb(var(--rating-module-button-plus-color)),
0.25rem 0.25rem 0 rgb(var(--rating-module-button-plus-color)),
-0.25rem -0.25rem 0 rgb(var(--rating-module-button-plus-color)),
-0.25rem 0.25rem 0 rgb(var(--rating-module-button-plus-color)),
0.25rem -0.25rem 0 rgb(var(--rating-module-button-plus-color));
}
.fonts-display {
font-size: 1.25em;
}
.title-font {
font-family: var(--title-font);
font-weight: 700;
}
.header-font {
font-family: var(--title-font);
font-weight: 900;
}
.UI-font {
font-family: var(--UI-font);
}
.mono-font {
--MONO: 1;
--CASL: 0;
--CRSV: 0;
font-family: var(--mono-font);
}
[[/module]]
[[image https://scp-wiki.wdfiles.com/local--files/theme%3Ablack-highlighter-theme/black-highlighter-logo.svg]]
[[=]]
[[div_ class="status"]]
此组件目前 [[span class="active"]]已启用[[/span]]
[[/div]]
[[/=]]
_
[[div style="border: 1px solid #ddd; padding: 1em; text-align: center;"]]
+ 使用方法
在任何维基网站上:
[[div class="code" style="text-align: center;"]]
@@[[include :scp-wiki-cn:theme:black-highlighter-theme]]@@
[[/div]]
[[div class="blockquote" style="text-align: center;"]]
++ [[[black-highlighter-themes|]]]
------
++ 可选插件
+++ [[[component:bhl-dark-sidebar|暗色侧边栏]]]
[[div class="code"]]
@@[[include :scp-wiki:component:bhl-dark-sidebar]]@@
[[/div]]
+++ [[[component:collapsible-sidebar|可折叠侧边栏]]]
[[div class="code"]]
@@[[include :scp-wiki:component:collapsible-sidebar]]@@
[[/div]]
+++ [[[component:toggle-sidebar-bhl|切换侧边栏]]]
[[div class="code"]]
@@[[include :scp-wiki:component:toggle-sidebar-bhl]]@@
[[/div]]
+++ [[[component:centered-header-bhl|居中页眉]]]
[[div class="code"]]
@@[[include :scp-wiki:component:centered-header-bhl]]@@
[[/div]]
[[/div]]
[[/div]]
+ 这是什么
一个将[https://scptestwiki.wikidot.com/ 黑色标记笔]版式应用于你的作品的组件。
这个组件将应用一个稳定版本的黑色标记笔版式,但更新时有可能会出现故障。
+ 报告问题
如果您拥有 Github 帐户,请在[https://github.com/Nu-SCPTheme/Black-Highlighter/issues 这里]创建一个 Issue,详细说明您的问题(无论是技术、外观还是其他任何的问题)。
如果您没有 Github 帐户,或者您更希望直接与某人讨论,请加入 SkipIRC 上的 {{#black-highlighter}} 频道,或者向 [[*user Woedenaz]] 或 [[*user Croquembouche]] 发送私人讯息。
-----
[[=]]
+ 主题颜色
[[/=]]
>[!--
[[module CSS]]
td { vertical-align: top; }
td strong { white-space: nowrap; }
.options table.wiki-content-table td { border: none; padding: 0.7em 1em; }
[[/module]]
[[div style="border: 1px solid #ddd; padding: 1em;"]]
+ What this is
A component that displays a bunch of colored squares to show off a CSS theme's flair.
Designed by [[*user Woedenaz]] and componentised by [[*user Croquembouche]].
This component is designed to be used for CSS themes, but it can be used on almost any page, if you really want.
+ Usage
On any wiki:
[[div class="code"]]
##blue|**[[include :scp-wiki:component:theme-squares -=-**##
##blue|**|**## ##green|color1-name####blue|**=**##My Favourite Colour
##blue|**|**## ##green|color1-variable####blue|**=**##@@--@@fav-color
##blue|**|**## ##green|color1-info####blue|**=**##(191, 144, 0)
##blue|**]]**##
[[/div]]
Note the "{{-=-}}" after the component name. You **//do//** need to include that -- otherwise all this text explaining how to use the component will appear on your page.
For this component, there are three parameters per color. Replace N with the number of the color.
[[div class="options"]]
|| **colorN-name** || The name of the color. Pick whatever you want! ||
|| **colorN-variable** || The name of the [https://developer.mozilla.org/en-US/docs/Web/CSS/--* CSS variable] that contains this color. _
The variable should hold three comma-separated numbers representing the RGB values of the color. This is consistent with BHL-style variables. _
If your variables hold something else (e.g. a full RGB/RGBA or hex color), you will need to override the background color of each theme square manually with CSS. ||
|| **colorN-info** || Some info about the colour. Displaying the RGB values is typical. Keep it short. _
If you don't want any text, add {{@<@@ @@>@}} instead.||
|| **//colorN-has-light-text//** _
//Optional. Default: 0// || Either 0 or 1. Determines the font color on the square. Useful to make sure there is enough contrast between the background color and the text color. _
If 1, the value of {{@@--swatch-text-light@@}} is used, or white (255, 255, 255) if it is not defined. Otherwise {{@@--swatch-text-dark@@}}, or black (0, 0, 0). Like all BHL-style CSS color variables, three numbers representing RGB values are expected. ||
[[/div]]
A color can only be used if it's exposed as a [https://developer.mozilla.org/en-US/docs/Web/CSS/--* CSS variable]. All colors in a Black Highlighter theme have a corresponding CSS variable by default, so for BHL themes, this component should work out of the box. However, sigma9 does not use CSS variables, so the only CSS variables that are available will be any that you have defined in your theme.
This component can hold a maximum of 6 primary colors and 12 secondary colors. I recommend two primary colors and no more than six secondary colors.
To add a primary color, just add the top three of the above parameters to the include, as shown in the example.
To add a secondary color, it's the same, but replace 'color' with 'subcolor'.
+ Example
Here's a longer example, taken from the Black Highlighter theme:
[[div class="code"]]
##blue|**[[include :scp-wiki:component:theme-squares -=-**##
##blue|**|**## ##green|color1-name####blue|**=**##Payne's Grey
##blue|**|**## ##green|color1-variable####blue|**=**##@@--@@gray-monochrome
##blue|**|**## ##green|color1-info####blue|**=**##(66, 66, 72)
##blue|**|**## ##green|color1-has-light-text####blue|**=**##1
##blue|**|**## ##green|color2-name####blue|**=**##Rosewood
##blue|**|**## ##green|color2-variable####blue|**=**##@@--@@bright-accent
##blue|**|**## ##green|color2-info####blue|**=**##(133, 0, 5)
##blue|**|**## ##green|color2-has-light-text####blue|**=**##1
##blue|**|**## ##green|subcolor1-name####blue|**=**##Alto
##blue|**|**## ##green|subcolor1-variable####blue|**=**##@@--@@very-light-gray-monochrome
##blue|**|**## ##green|subcolor1-info####blue|**=**##(215, 215, 215)
##blue|**|**## ##green|subcolor2-name####blue|**=**##White Smoke
##blue|**|**## ##green|subcolor2-variable####blue|**=**##@@--@@pale-gray-monochrome
##blue|**|**## ##green|subcolor2-info####blue|**=**##(244, 244, 244)
##blue|**|**## ##green|subcolor3-name####blue|**=**##Bastille
##blue|**|**## ##green|subcolor3-variable####blue|**=**##@@--@@dark-gray-monochrome
##blue|**|**## ##green|subcolor3-info####blue|**=**##(48, 48, 52)
##blue|**|**## ##green|subcolor3-has-light-text####blue|**=**##1
##blue|**|**## ##green|subcolor4-name####blue|**=**##Buccaneer
##blue|**|**## ##green|subcolor4-variable####blue|**=**##@@--@@medium-accent
##blue|**|**## ##green|subcolor4-info####blue|**=**##(100, 46, 44)
##blue|**|**## ##green|subcolor4-has-light-text####blue|**=**##1
##blue|**|**## ##green|subcolor5-name####blue|**=**##Maroon
##blue|**|**## ##green|subcolor5-variable####blue|**=**##@@--@@dark-accent
##blue|**|**## ##green|subcolor5-info####blue|**=**##(100, 3, 15)
##blue|**|**## ##green|subcolor5-has-light-text####blue|**=**##1
##blue|**|**## ##green|subcolor6-name####blue|**=**##Mango Tango
##blue|**|**## ##green|subcolor6-variable####blue|**=**##@@--@@newpage-color
##blue|**|**## ##green|subcolor6-info####blue|**=**##(221, 102, 17)
##blue|**]]**##
[[/div]]
This produces the following colored squares:
[[=]]
[[image bhl-squares.png]]
[[/=]]
+ Tweaking
You can adjust the appearance of the component with CSS.
The whole component has the {{.colors-container}} class, and any CSS that targets it should included that class to ensure that nothing else on the page is affected. Every colored square has class {{.color}}. The primary colors have a {{.colors}} parent and the secondary colors have a {{.subcolors}} parent.
You'll need to use {{!important}} to override a square's background.
For example, the [[[theme:laughter-and-knives-theme | Laughter and Knives theme]]] adds a gradient background to the 9th secondary color like so:
[[code type="css"]]
.colors-container .subcolors .color:nth-of-type(9) {
background: var(--pastel-rainbow) !important;
}
[[/code]]
-----
[https://rossjrw.com/series-replace/?f=%5Cn&f=%5E&f=%24&f=%3C%3C%3E%3E&f=%28%3F%3C%3Dsubcolors.%2A%29%28%5B%5E%5C%5B%5C%5D%5D%2B%29%5C%5B%5C%5Bspan%20class%3D%22css-variable%22%5D%5D%40%40%28%5Ba-z-%5D%2B%29%40%40%5C%5B%5C%5B%5C%2Fspan%5D%5D%5C%5B%5C%5Bspan%20class%3D%22css-variable%22%5D%5D%40%40%28%5B%5E%40%5D%2B%29%40%40%5C%5B%5C%5B%5C%2Fspan%5D%5D&f=%28%5B%5E%5C%5B%5C%5D%5D%2B%29%5C%5B%5C%5Bspan%20class%3D%22css-variable%22%5D%5D%40%40%28%5Ba-z-%5D%2B%29%40%40%5C%5B%5C%5B%5C%2Fspan%5D%5D%5C%5B%5C%5Bspan%20class%3D%22css-variable%22%5D%5D%40%40%28%5B%5E%40%5D%2B%29%40%40%5C%5B%5C%5B%5C%2Fspan%5D%5D&f=%5C%7C&f=%5E%5C%5B%5C%5B%5B%5Ei%5D.%2A%7C%5E%5C%7C%5B%5E%20%5D.%2A&f=%5Cn%24&r=&r=%5B%5Binclude%20%3Ascp-wiki%3Acomponent%3Atheme-squares%20-%3D-%3C%3C%3E%3E%7C%20color%24-has-light-text%3D1%3C%3C%3E%3E%7C%20subcolor%24-has-light-text%3D1%3C%3C%3E%3E&r=%5Cn%5D%5D&r=%5Cn&r=%7C%20subcolor%24%24-name%3D%241%7C%20subcolor%24%24-variable%3D%242%7C%20subcolor%24%24-info%3D%243%7C&r=%7C%20color%24%24-name%3D%241%7C%20color%24%24-variable%3D%242%7C%20color%24%24-info%3D%243%7C&r=%5Cn%7C&r=&r= Tool to convert existing syntax to arguments for this component]
[[/div]]
[!-- --]
[[module CSS]]
.colors-container {
width: 98%;
display: flex;
flex-direction: column;
margin: 0 auto;
font-weight: 700;
font-family: var(--title-font, Verdana), sans-serif;
color: black;
}
.colors-container .colors, .colors-container .subcolors {
width: 100%;
flex-shrink: 0;
display: flex;
flex-wrap: wrap;
}
.colors-container .color {
flex-grow: 2;
padding: 0.5rem;
margin: 0.5rem;
color: rgb(var(--swatch-text-dark, 0, 0, 0));
display: flex;
flex-direction: column;
justify-content: flex-end;
align-items: center;
}
.colors-container .colors .color {
height: 7rem;
min-width: 4rem;
flex-basis: calc((100% / 2) - 2rem - 1px);
}
.colors-container .subcolors .color {
height: 4rem;
min-width: 4rem;
font-size: 75%;
text-align: center;
flex-basis: calc((100% / 6) - 2rem - 1px);
}
.colors-container .css-variable {
font-size: 75%;
letter-spacing: 0.1em;
font-family: var(--body-font, Verdana), sans-serif;
}
/* Hide a colour that's not been provided by seeing if the variable starts with "{$" */
.colors-container [data-variable^=\{\$] {
display: none;
}
.colors-container [data-has-light-text="1"] {
color: white;
color: rgb(var(--swatch-text-light, 255, 255, 255));
}
[[/module]]
[[div_ class="colors-container"]]
[!-- Unfortunately I can only support a limited number of colours, because each possible slot needs to be hardcoded --]
[!-- I can use the CSS variable name to reliably determine whether or not a colour has been provided, because it shouldn't contain any fancy formatting that would preclude it from being used in a CSS attribute --]
[!-- If a colour is not provided, it should not take up any space --]
[!-- Support up to six primary colours --]
[[div_ class="colors"]]
[[div_ class="color" style="background-color: rgb(var(--gray-monochrome));" data-variable="--gray-monochrome" data-has-light-text="1"]]
Payne's Grey[[span class="css-variable"]]@@--gray-monochrome@@[[/span]][[span class="css-variable"]](66, 66, 72)[[/span]]
[[/div]]
[[div_ class="color" style="background-color: rgb(var(--bright-accent));" data-variable="--bright-accent" data-has-light-text="1"]]
Rosewood[[span class="css-variable"]]@@--bright-accent@@[[/span]][[span class="css-variable"]](133, 0, 5)[[/span]]
[[/div]]
[[div_ class="color" style="background-color: rgb(var({$color3-variable}));" data-variable="{$color3-variable}" data-has-light-text="{$color3-has-light-text}"]]
{$color3-name}[[span class="css-variable"]]@@{$color3-variable}@@[[/span]][[span class="css-variable"]]{$color3-info}[[/span]]
[[/div]]
[[div_ class="color" style="background-color: rgb(var({$color4-variable}));" data-variable="{$color4-variable}" data-has-light-text="{$color4-has-light-text}"]]
{$color4-name}[[span class="css-variable"]]@@{$color4-variable}@@[[/span]][[span class="css-variable"]]{$color4-info}[[/span]]
[[/div]]
[[div_ class="color" style="background-color: rgb(var({$color5-variable}));" data-variable="{$color5-variable}" data-has-light-text="{$color5-has-light-text}"]]
{$color5-name}[[span class="css-variable"]]@@{$color5-variable}@@[[/span]][[span class="css-variable"]]{$color5-info}[[/span]]
[[/div]]
[[div_ class="color" style="background-color: rgb(var({$color6-variable}));" data-variable="{$color6-variable}" data-has-light-text="{$color6-has-light-text}"]]
{$color6-name}[[span class="css-variable"]]@@{$color6-variable}@@[[/span]][[span class="css-variable"]]{$color6-info}[[/span]]
[[/div]]
[[/div]]
[!-- Support up to twelve subcolours --]
[[div_ class="subcolors"]]
[[div_ class="color" style="background-color: rgb(var(--very-light-gray-monochrome));" data-variable="--very-light-gray-monochrome" data-has-light-text="{$subcolor1-has-light-text}"]]
Alto[[span class="css-variable"]]@@--very-light-gray-monochrome@@[[/span]][[span class="css-variable"]](215, 215, 215)[[/span]]
[[/div]]
[[div_ class="color" style="background-color: rgb(var(--pale-gray-monochrome));" data-variable="--pale-gray-monochrome" data-has-light-text="{$subcolor2-has-light-text}"]]
White Smoke[[span class="css-variable"]]@@--pale-gray-monochrome@@[[/span]][[span class="css-variable"]](244, 244, 244)[[/span]]
[[/div]]
[[div_ class="color" style="background-color: rgb(var(--dark-gray-monochrome));" data-variable="--dark-gray-monochrome" data-has-light-text="1"]]
Bastille[[span class="css-variable"]]@@--dark-gray-monochrome@@[[/span]][[span class="css-variable"]](48, 48, 52)[[/span]]
[[/div]]
[[div_ class="color" style="background-color: rgb(var(--medium-accent));" data-variable="--medium-accent" data-has-light-text="1"]]
Buccaneer[[span class="css-variable"]]@@--medium-accent@@[[/span]][[span class="css-variable"]](100, 46, 44)[[/span]]
[[/div]]
[[div_ class="color" style="background-color: rgb(var(--dark-accent));" data-variable="--dark-accent" data-has-light-text="1"]]
Maroon[[span class="css-variable"]]@@--dark-accent@@[[/span]][[span class="css-variable"]](100, 3, 15)[[/span]]
[[/div]]
[[div_ class="color" style="background-color: rgb(var(--newpage-color));" data-variable="--newpage-color" data-has-light-text="{$subcolor6-has-light-text}"]]
Mango Tango[[span class="css-variable"]]@@--newpage-color@@[[/span]][[span class="css-variable"]](221, 102, 17)[[/span]]
[[/div]]
[[div_ class="color" style="background-color: rgb(var({$subcolor7-variable}));" data-variable="{$subcolor7-variable}" data-has-light-text="{$subcolor7-has-light-text}"]]
{$subcolor7-name}[[span class="css-variable"]]@@{$subcolor7-variable}@@[[/span]][[span class="css-variable"]]{$subcolor7-info}[[/span]]
[[/div]]
[[div_ class="color" style="background-color: rgb(var({$subcolor8-variable}));" data-variable="{$subcolor8-variable}" data-has-light-text="{$subcolor8-has-light-text}"]]
{$subcolor8-name}[[span class="css-variable"]]@@{$subcolor8-variable}@@[[/span]][[span class="css-variable"]]{$subcolor8-info}[[/span]]
[[/div]]
[[div_ class="color" style="background-color: rgb(var({$subcolor9-variable}));" data-variable="{$subcolor9-variable}" data-has-light-text="{$subcolor9-has-light-text}"]]
{$subcolor9-name}[[span class="css-variable"]]@@{$subcolor9-variable}@@[[/span]][[span class="css-variable"]]{$subcolor9-info}[[/span]]
[[/div]]
[[div_ class="color" style="background-color: rgb(var({$subcolor10-variable}));" data-variable="{$subcolor10-variable}" data-has-light-text="{$subcolor10-has-light-text}"]]
{$subcolor10-name}[[span class="css-variable"]]@@{$subcolor10-variable}@@[[/span]][[span class="css-variable"]]{$subcolor10-info}[[/span]]
[[/div]]
[[div_ class="color" style="background-color: rgb(var({$subcolor11-variable}));" data-variable="{$subcolor11-variable}" data-has-light-text="{$subcolor11-has-light-text}"]]
{$subcolor11-name}[[span class="css-variable"]]@@{$subcolor11-variable}@@[[/span]][[span class="css-variable"]]{$subcolor11-info}[[/span]]
[[/div]]
[[div_ class="color" style="background-color: rgb(var({$subcolor12-variable}));" data-variable="{$subcolor12-variable}" data-has-light-text="{$subcolor12-has-light-text}"]]
{$subcolor12-name}[[span class="css-variable"]]@@{$subcolor12-variable}@@[[/span]][[span class="css-variable"]]{$subcolor12-info}[[/span]]
[[/div]]
[[/div]]
[[/div]]
+ 示例
[[div class="scp-image-block block-right" style="width:200px;"]]
[[image https://bhl.scpwikicn.com/img/logo.svg {$alt}="{$alt-text}" link=#]]
[[div class="scp-image-caption" style="displ{$captionless}y:none;"]]
SCP 基金会 标志
[[/div]]
[[/div]]
可通过五个连字符“@@-----@@”创建水平分割线。若它未被放在其他部件(诸如引用块)中,则会左右延伸贯穿页面。这种将文件分割为多个部分的线就是分割线。
-----
标题可通过在一行字起始处输入 1 至 6 个加号“+”来创建。
[[collapsible show="+ 标题" hide="- 标题"]]
+ 1 级标题
++ 2 级标题
+++ 3 级标题
++++ 4 级标题
+++++ 5 级标题
++++++ 6 级标题
[[/collapsible]]
@@ @@
[[tabview]]
[[tab 分页]]
此为分页(tab view)。
[[/tab]]
[[tab 分页]]
看,这有更多文字。
多么精巧绝伦。
[[/tab]]
[[tab 长 Tab]]
这是一个长的 tab,它有很多文字。
这是一个长的 tab,它有很多文字。
这是一个长的 tab,它有很多文字。
这是一个长的 tab,它有很多文字。
这是一个长的 tab,它有很多文字。
这是一个长的 tab,它有很多文字。
这是一个长的 tab,它有很多文字。
这是一个长的 tab,它有很多文字。
这是一个长的 tab,它有很多文字。
这是一个长的 tab,它有很多文字。
这是一个长的 tab,它有很多文字。
这是一个长的 tab,它有很多文字。
[[/tab]]
[[tab 由于一些奇怪的原因,这个空 tab 有一个很长的名字。我想知道为什么?这很奇怪。]]
[[/tab]]
[[tab 空 Tab]]
[[/tab]]
[[tab 空 Tab]]
[[/tab]]
[[tab 空 Tab]]
[[/tab]]
[[tab 空 Tab]]
[[/tab]]
[[tab 空 Tab]]
[[/tab]]
[[/tabview]]
> 这是一个引用块,在一行字的起始处加上“> ”来创建。
>
> 更多文字
> -----
> 一条分割线
>
>> 嵌套引用块
||~ 这是 ||~ 表格 ||
|| 你应该老早 || 就知道怎么 ||
|||| 做这个了吧 ||
[[=]]
[[div_ class="fonts-display"]]
正文、[[span class="title-font"]]标题[[/span]]和[[span class="header-font"]]页眉[[/span]]字体为 [https://rsms.me/inter/ Inter] / [https://fonts.google.com/specimen/Noto+Sans+SC Noto Sans SC]。
[[span class="UI-font"]]用户界面字体为 [https://www.paratype.com/fonts/pt/pt-root-ui PT Root UI]。[[/span]]
[[span class="mono-font"]]等宽字为 [https://www.recursive.design/ Recursive] / [https://fonts.google.com/specimen/Noto+Serif+SC Noto Serif SC]。[[/span]]
[[/div]]
所有字体均基于 [http://scripts.sil.org/OFL SIL 开源字体许可 Ver. 1.1]。
[[/=]]
-----
[[/iftags]]
[[iftags +component]]
[[module css]]
@import url("https://nu-scptheme.github.io/Black-Highlighter/css/min/normalize.min.css");
@import url("https://nu-scptheme.github.io/Black-Highlighter/css/min/black-highlighter.min.css");
div.blockquote {
padding-top: 0.5em;
}
div.blockquote tt {
margin: 0.5em 1em 1em 1em;
display: block;
background-color: rgb(var(--dark-gray-monochrome));
color: rgb(var(--white-monochrome));
padding: 0.5em;
}
[[/module]]
[!--
Styling component for the EN Interwiki, based on the CN Interwiki by 7happy7 and Sekai-s.
Interwiki: https://scpwiki.com/interwiki
Source: https://github.com/scpwiki/interwiki
See also: https://scpwiki.com/how-to-create-a-branch-of-the-scp-foundation
Usage:
On the page that intends to restyle the Interwiki:
[[include :scp-wiki:component:interwiki-style
| priority=X
| theme=<link to CSS stylesheet>
| css=<URI-encoded CSS>
]]
The `priority` value must be set to a number that is 1 greater than the priority of the theme that this theme is extending.
Examples:
- The base theme of the site (for the SCP Wiki, this is Sigma-9) has a priority of 0.
- A CSS theme designed to be used on pages that are already styled with Sigma-9 (i.e. a theme that extends Sigma-9) would have a priority of 1.
- The Black Market theme extends the Black Highlighter theme, which has a priority of 2; therefore the Black Market theme would have a priority of 3.
The `theme` value is optional, and can be a URL to a CSS stylesheet e.g. a CSS theme.
The `css` value is optional, and can be URI-encoded CSS to apply directly to the Interwiki. To URI-encode CSS, see https://meyerweb.com/eric/tools/dencoder
--]
[[embed]]
<iframe src="//interwiki.scpwiki.com/styleFrame.html?priority=1&theme=https://nu-scptheme.github.io/Black-Highlighter/css/min/normalize.min.css&css={$css}" style="display: none"></iframe>
[[/embed]]
[!--
Styling component for the EN Interwiki, based on the CN Interwiki by 7happy7 and Sekai-s.
Interwiki: https://scpwiki.com/interwiki
Source: https://github.com/scpwiki/interwiki
See also: https://scpwiki.com/how-to-create-a-branch-of-the-scp-foundation
Usage:
On the page that intends to restyle the Interwiki:
[[include :scp-wiki:component:interwiki-style
| priority=X
| theme=<link to CSS stylesheet>
| css=<URI-encoded CSS>
]]
The `priority` value must be set to a number that is 1 greater than the priority of the theme that this theme is extending.
Examples:
- The base theme of the site (for the SCP Wiki, this is Sigma-9) has a priority of 0.
- A CSS theme designed to be used on pages that are already styled with Sigma-9 (i.e. a theme that extends Sigma-9) would have a priority of 1.
- The Black Market theme extends the Black Highlighter theme, which has a priority of 2; therefore the Black Market theme would have a priority of 3.
The `theme` value is optional, and can be a URL to a CSS stylesheet e.g. a CSS theme.
The `css` value is optional, and can be URI-encoded CSS to apply directly to the Interwiki. To URI-encode CSS, see https://meyerweb.com/eric/tools/dencoder
--]
[[embed]]
<iframe src="//interwiki.scpwiki.com/styleFrame.html?priority=2&theme=https://nu-scptheme.github.io/Black-Highlighter/css/min/black-highlighter.min.css&css={$css}" style="display: none"></iframe>
[[/embed]]
[[=]]
[[module Rate]]
[[div_ class="blockquote"]]
Pretty self explanatory.
For anyone who //really// wants the dark sidebar from the O.G. BHL on their articles.
Just add this include **AFTER** the BHL include:
{{[[include :scp-wiki:component:bhl-dark-sidebar]]}}
[[/div]]
[[/=]]
-----
[[collapsible show="+ Show component code" hide="- Hide component code"]]
[[code type="css"]]
#interwiki,
#side-bar {
/* ===SECONDARY & TERTIARY COLORS=== */
/* Editing these will edit a vast majority of theme elements. Useful for making dark themes */
/* Colors for Secondary & Tertiary items like Blockquote and YUI Tabs */
--swatch-secondary-color: var(--swatch-menubg-dark-color);
--swatch-tertiary-color: var(--swatch-menubg-medium-color);
--swatch-alternate-color: var(--swatch-menubg-light-color);
/* Text Colors for Secondary & Tertiary items like Sidebar Headers and Top-Bar Menu Text */
--swatch-text-secondary-color: var(--swatch-menutxt-dark-color);
--swatch-text-tertiary-color: var(--swatch-menutxt-light-color);
/* ===SIDE-BAR ELEMENTS=== */
/* ===SIDE-BAR GENERAL=== */
--sidebar-bg-color: var(--swatch-menubg-dark-color);
--sidebar-resources-bg-color: 0, 0, 0, 0;
--sidebar-media-bg-color: 0, 0, 0, 0;
/* ===SIDEBLOCK MENU=== */
--sideblock-heading-border-color: var(--bright-accent);
--sideblock-heading-bg-color: 0, 0, 0, 0;
/* Transparent */
--sideblock-heading-text-color: var(--swatch-text-tertiary-color);
/* ===MENU-ITEMS=== */
--sidebar-border-color: var(--swatch-primary), 0.08;
--sidebar-subtext-color: var(--swatch-text-tertiary-color);
--sidebar-links-text: var(--swatch-text-tertiary-color);
--sidebar-links-hover-bg-color: var(--bright-accent);
--sidebar-links-hover-text-color: var(--swatch-text-tertiary-color);
/* ===SIDEBAR COLLAPSIBLES=== */
/*Folded Colors */
--sidebar-collapsible-fld-link-bg: var(--swatch-primary), 0.25;
--sidebar-collapsible-fld-link-color: var(--swatch-text-tertiary-color);
--sidebar-collapsible-fld-link-hover-color: var(--swatch-text-tertiary-color);
--sidebar-collapsible-fld-arrow-hover-color: var(--swatch-text-tertiary-color);
/*Unfolded Colors */
--sidebar-collapsible-ufld-link-bg: var(--swatch-primary-darker), 0.25;
--sidebar-collapsible-ufld-link-color: var(--swatch-text-tertiary-color);
--sidebar-collapsible-ufld-link-hover-color: var(--swatch-text-tertiary-color);
--sidebar-collapsible-ufld-arrow-hover-color: var(--swatch-text-tertiary-color);
/* Unfolded Body Colors */
--sidebar-collapsible-link-color: var(--swatch-text-tertiary-color);
--sidebar-collapsible-link-hover-color: var(--swatch-text-tertiary-color);
scrollbar-color:
rgba(var(--swatch-primary-darker), 0.1)
/* Thumb */
rgba(var(--swatch-secondary-color), 0.05);
/* Track */
border-color: rgba(var(--swatch-secondary-color), 0.4);
}
/* Hover Scrollbar Behavior */
#side-bar:hover,
#side-bar:active {
scrollbar-color:
rgb(var(--swatch-primary-darker), 1)
/* Thumb */
rgb(var(--swatch-menubg-dark-color), 1);
/* Track */
}
#side-bar:focus-within {
scrollbar-color:
rgb(var(--swatch-primary-darker), 1)
/* Thumb */
rgb(var(--swatch-menubg-dark-color), 1);
/* Track */
}
#side-bar::-webkit-scrollbar-track {
background-color: rgba(var(--swatch-tertiary-color), 0.8);
}
#side-bar::-webkit-scrollbar,
#side-bar::-webkit-scrollbar-thumb,
#side-bar::-webkit-scrollbar-corner {
background-color: rgba(var(--swatch-menubg-dark-color), 0);
}
#side-bar .side-block.media a:-webkit-any-link {
background: rgba(var(--swatch-menubg-light-color), 0.75) !important;
}
#side-bar .side-block.media a:-moz-any-link {
background: rgba(var(--swatch-menubg-light-color), 0.75) !important;
}
#side-bar .side-block.media a:any-link {
background: rgba(var(--swatch-menubg-light-color), 0.75) !important;
}
#side-bar .side-block.media a::before {
background: rgb(var(--social-color));
}
#side-bar .side-block.media a[href*="tiktok"]::before,
#side-bar .side-block.media a[href*="tiktok"]::after {
transition:
background 200ms cubic-bezier(0.4, 0, 0.2, 1),
background-color 200ms cubic-bezier(0.4, 0, 0.2, 1),
background-image 200ms cubic-bezier(0.4, 0, 0.2, 1),
-webkit-clip-path 200ms cubic-bezier(0.4, 0, 0.2, 1);
transition:
clip-path 200ms cubic-bezier(0.4, 0, 0.2, 1),
background 200ms cubic-bezier(0.4, 0, 0.2, 1),
background-color 200ms cubic-bezier(0.4, 0, 0.2, 1),
background-image 200ms cubic-bezier(0.4, 0, 0.2, 1);
transition:
clip-path 200ms cubic-bezier(0.4, 0, 0.2, 1),
background 200ms cubic-bezier(0.4, 0, 0.2, 1),
background-color 200ms cubic-bezier(0.4, 0, 0.2, 1),
background-image 200ms cubic-bezier(0.4, 0, 0.2, 1),
-webkit-clip-path 200ms cubic-bezier(0.4, 0, 0.2, 1);
}
#side-bar .side-block.media a[href*="tiktok"]:hover::before {
--clip-path:
polygon(-15% 0,
115% 0,
100% 100%,
0 100%
);
}
#side-bar .side-block.media a[href*="tiktok"]:hover::before,
#side-bar .side-block.media a[href*="tiktok"]:active::before {
--clip-path:
polygon(-15% 0,
115% 0,
100% 100%,
0 100%
);
background-image: var(--tiktok-icon-gradient);
background-size: contain;
}
#side-bar .side-block.media a[href*="tiktok"]:focus-within::before {
--clip-path:
polygon(-15% 0,
115% 0,
100% 100%,
0 100%
);
background-image: var(--tiktok-icon-gradient);
background-size: contain;
}
#side-bar .side-block.media a[href*="tiktok"]::after {
--clip-path:
polygon(0 0,
0 0,
0 100%,
0 100%
);
background: rgba(var(--swatch-menubg-light-color), 0.75) !important;
}
#side-bar .side-block.media a[href*="tiktok"]:hover::after,
#side-bar .side-block.media a[href*="tiktok"]:active::after {
--clip-path:
polygon(-15% 0,
115% 0,
100% 100%,
0 100%
);
background: rgba(var(--swatch-menubg-light-color), 0.75) !important;
}
#side-bar .side-block.media a[href*="tiktok"]:focus-within::after {
--clip-path:
polygon(-15% 0,
115% 0,
100% 100%,
0 100%
);
background: rgba(var(--swatch-menubg-light-color), 0.75) !important;
}
#side-bar .side-block.media a img {
-webkit-filter: drop-shadow(0 0 0 rgba(var(--swatch-alternate-color), 0));
filter: drop-shadow(0 0 0 rgba(var(--swatch-alternate-color), 0));
transition: -webkit-filter 200ms cubic-bezier(0.4, 0, 0.2, 1);
transition: filter 200ms cubic-bezier(0.4, 0, 0.2, 1);
transition: filter 200ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-filter 200ms cubic-bezier(0.4, 0, 0.2, 1);
}
#side-bar .side-block.media a:hover img,
#side-bar .side-block.media a:active img {
-webkit-filter: drop-shadow(0.1875rem 0.1875rem 0 rgb(var(--swatch-alternate-color)));
filter: drop-shadow(0.1875rem 0.1875rem 0 rgb(var(--swatch-alternate-color)));
}
#side-bar .side-block.media a:focus-within img {
-webkit-filter: drop-shadow(0.1875rem 0.1875rem 0 rgb(var(--swatch-alternate-color)));
filter: drop-shadow(0.1875rem 0.1875rem 0 rgb(var(--swatch-alternate-color)));
}
html:not(:lang(cn)) div.scpnet-interwiki-wrapper p::before {
box-shadow: inherit;
}
#side-bar .scpnet-interwiki-wrapper:not(:lang(cn))::before,
#side-bar .scpnet-interwiki-wrapper:not(:lang(cn)) p::before,
#side-bar .scpnet-interwiki-wrapper:not(:lang(cn)) p::after {
background-color: rgb(var(--swatch-menubg-dark-color));
}
[[/code]]
[[/collapsible]]
[[/iftags]]
[[module CSS]]
@import url("https://scp-wiki.wdfiles.com/local--code/component%3Abhl-dark-sidebar/1");
[[/module]]
[!--
Styling component for the EN Interwiki, based on the CN Interwiki by 7happy7 and Sekai-s.
Interwiki: https://scpwiki.com/interwiki
Source: https://github.com/scpwiki/interwiki
See also: https://scpwiki.com/how-to-create-a-branch-of-the-scp-foundation
Usage:
On the page that intends to restyle the Interwiki:
[[include :scp-wiki:component:interwiki-style
| priority=X
| theme=<link to CSS stylesheet>
| css=<URI-encoded CSS>
]]
The `priority` value must be set to a number that is 1 greater than the priority of the theme that this theme is extending.
Examples:
- The base theme of the site (for the SCP Wiki, this is Sigma-9) has a priority of 0.
- A CSS theme designed to be used on pages that are already styled with Sigma-9 (i.e. a theme that extends Sigma-9) would have a priority of 1.
- The Black Market theme extends the Black Highlighter theme, which has a priority of 2; therefore the Black Market theme would have a priority of 3.
The `theme` value is optional, and can be a URL to a CSS stylesheet e.g. a CSS theme.
The `css` value is optional, and can be URI-encoded CSS to apply directly to the Interwiki. To URI-encode CSS, see https://meyerweb.com/eric/tools/dencoder
--]
[[embed]]
<iframe src="//interwiki.scpwiki.com/styleFrame.html?priority=4&theme=https://scp-wiki.wdfiles.com/local--code/component%3Abhl-dark-sidebar/1&css={$css}" style="display: none"></iframe>
[[/embed]]
[[iftags +component]]
[[module css]]
#toc0 {
color: rgb(var(--swatch-primary,126,27,1));
}
div.blockquote {
padding-top: 0.5em;
}
div.blockquote tt {
margin: 0.5em 1em 1em 1em;
display: block;
background-color: rgb(var(--dark-gray-monochrome,48,48,52));
color: rgb(var(--white-monochrome,252,252,252));
padding: 0.5em;
}
[[/module]]
[!--
Fragment:
https://scp-wiki.wikidot.com/fragment:collapsible-sidebar-bhl
--]
[[module ListPages category="fragment" range="others" parent="." limit="1" order="created_at" offset="@URL|0" tags="-!pos!"]]
%%content{1}%%
[[/module]]
[[=]]
[[module Rate]]
------
[[div_ class="blockquote"]]
+++ !!!WARNING!!!
{{This template is somewhat experimental and may act unusually on a small number of browsers. _
_
If you discover a bug, please report it in the comments along with the **Browser, Browser Version, and Operating System.** _
_
As of Mar. 4, 2021 there is a single known bug:}}
{{If used with a theme that colors the sidebar background, it will color the background of the pseudo-elements as well. This causes the sidebar to appear as just colored vertical blocks prior to hovering.}}
[[/div]]
------
[[div_ class="blockquote"]]
Template for making the sidebar collapsible.
Works on both Black Highlighter and Sigma-9.
[/component:collapsible-sidebar/offset/0 >Click here to see it with Black Highlighter<]
[/component:collapsible-sidebar/offset/1 >Click here to see it with Sigma-9<]
@@ @@
Add this include **AFTER** any theme include:
{{[[include :scp-wiki:component:collapsible-sidebar]]}}
[[/div]]
[[/=]]
[[/iftags]]
[[div [[iftags -component]]style="display: none"[[/iftags]]]]
-----
[[collapsible show="+ Show component code" hide="- Hide component code"]]
[[module CSS show="true"]]
:root {
--sidebar-width-on-desktop: calc(var(--base-font-size) * (266 / 15));
--body-width-on-desktop: 45.75rem;
}
@media only screen and (min-width: 56.25rem) {
#content-wrap {
display: flex;
position: initial;
flex-direction: row;
flex-grow: 2;
width: calc(100vw - (100vw - 100%));
max-width: inherit;
height: auto;
min-height: calc(100vh - var(--final-header-height-on-desktop, 10.125rem));
margin: 0 var(--sidebar-width-on-desktop, 13.6rem) 0 calc(var(--sidebar-width-on-desktop, 13.6rem) * -1 / 2);
}
#main-content {
position: initial;
width: var(--body-width-on-desktop, 45.75rem);
max-width: var(--body-width-on-desktop, 45.75rem);
max-height: 100%;
margin: 0 auto;
padding: 2rem 1rem;
}
#page-content {
max-width: min(90vw, var(--body-width-on-desktop, 45.75rem));
}
#side-bar {
position: -webkit-sticky;
position: sticky;
top: 0;
left: 0;
grid-area: side-bar;
width: var(--sidebar-width-on-desktop, 13.6rem) !important;
min-width: var(--sidebar-width-on-desktop, 13.6rem) !important;
max-height: 100vh;
padding-right: 2.5rem;
padding-left: 0.5rem;
overflow-y: scroll;
transition:
translate 300ms cubic-bezier(0.4, 0.0, 0.2, 1),
background-color 300ms cubic-bezier(0.4, 0.0, 0.2, 1),
padding 300ms linear,
margin 300ms linear;
border: none;
border-color: rgba(var(--swatch-tertiary-color, 170, 170, 170), 0.4);
background-color: rgba(var(--sidebar-bg-color, 255, 255, 255), 0);
translate: calc(var(--sidebar-width-on-desktop, 13.5rem) * -1 - 1rem);
direction: rtl;
scrollbar-width: thin;
-ms-scroll-chaining: none;
overscroll-behavior: contain;
scrollbar-color:
rgba(var(--swatch-primary-darker), 0.1) /* Thumb */
rgba(var(--swatch-tertiary-color), 0.05); /* Track */
}
#side-bar::-webkit-scrollbar-track {
background-color: rgba(var(--swatch-secondary-color, 244, 244, 244), 0.8);
}
#side-bar::-webkit-scrollbar,
#side-bar::-webkit-scrollbar-thumb,
#side-bar::-webkit-scrollbar-corner {
width: 0.5rem;
border-right-width: calc(100vw + 100vh);
border-right-style: inset;
border-color: inherit;
background-color: rgba(var(--sidebar-bg-color, 255, 255, 255), 0);
}
#side-bar:is(:hover, :active, :focus-within) {
margin-right: 2.25rem;
padding-right: 0.25rem;
overflow-x: hidden;
overflow-y: auto;
border-color: rgba(var(--swatch-primary-darker), 1);
background-color: rgba(var(--sidebar-bg-color, 255, 255, 255), 1);
translate: calc(var(--sidebar-width-on-desktop, 1rem) - var(--sidebar-width-on-desktop, 0));
scrollbar-color:
rgba(170, 170, 170, 1) /* Thumb */
rgba(252, 252, 252, 1); /* Track */
scrollbar-color:
rgb(var(--swatch-primary-darker, 170, 170, 170), 1) /* Thumb */
rgb(var(--swatch-menubg-color, 252, 252, 252), 1); /* Track */
}
#main-content::after {
content: " ";
display: flex;
position: fixed;
top: 0;
left: 1rem;
align-items: center;
justify-content: center;
width: 1rem;
height: 100%;
max-height: 100%;
transition:
left 300ms cubic-bezier(0.4, 0.0, 0.2, 1),
background-position 300ms cubic-bezier(0.4, 0.0, 0.2, 1),
opacity 300ms cubic-bezier(0.4, 0.0, 0.2, 1);
background: url("https://scp-wiki.wdfiles.com/local--files/component%3Acollapsible-sidebar/sidebar-tab.svg");
background-attachment: fixed;
background-repeat: no-repeat;
background-position: center left 1rem;
background-size: 1rem 12.875rem;
pointer-events: none;
}
#side-bar:is(:hover, :active, :focus-within) + #main-content::after {
left: calc(var(--sidebar-width-on-desktop, 14.5rem) * -1);
width: 0rem;
transition:
left 300ms cubic-bezier(0.4, 0.0, 0.2, 1),
background-position 300ms cubic-bezier(0.4, 0.0, 0.2, 1),
opacity 300ms cubic-bezier(0.4, 0.0, 0.2, 1);
opacity: 0;
background-position: center left calc(var(--sidebar-width-on-desktop, 14.5rem) * -1);
font-size: 0em;
}
#main-content::before {
content: " ";
position: absolute;
z-index: 9;
top: var(--final-header-height-on-desktop, 0);
left: 0;
width: var(--sidebar-width-on-desktop, 14.5rem);
height: calc(100% - var(--final-header-height-on-desktop, 0.688rem) - 2.313rem);
margin-bottom: calc(var(--final-header-height-on-desktop, -2.313rem) * -1 - 2.313rem);
transition:
translate 300ms cubic-bezier(0.4, 0.0, 0.2, 1),
opacity 300ms cubic-bezier(0.4, 0.0, 0.2, 1);
opacity: 0.5;
background-color: rgb(var(--swatch-alternate-color, 0, 0, 0));
pointer-events: none;
translate: calc(var(--sidebar-width-on-desktop, 14.5rem) * -1 + 1rem);
}
#side-bar:is(:hover, :active, :focus-within) + #main-content::before {
translate: 0;
opacity: 0;
}
#side-bar .side-block {
margin-top: 1em;
padding-left: 0.25em;
border-right-width: 0rem;
border-left-width: 0rem;
border-radius: 0;
background-color: rgb(0, 0, 0, 0);
direction: ltr;
}
#side-bar .scpnet-interwiki-wrapper {
direction: ltr;
}
/* Print Friendly Formatting by Estrella */
body.print-body {
--sidebar-width-on-desktop: 0;
}
body.print-body #main-content::before,
body.print-body #main-content::after {
display: none;
}
}
[[/module]]
[[/collapsible]]
[[/div]]
[[module css]]
@import url('http://cdn.jsdelivr.net/gh/arandintday/thebackhubscn@main/New_BHL/css/round-logo.css');
[[/module]]
[[iftags +版式]]
[[module CSS]]
@import url("https://cdn.jsdelivr.net/gh/Nu-SCPTheme/Black-Highlighter@gh-pages/css/min/normalize.min.css");
@import url("https://cdn.jsdelivr.net/gh/Nu-SCPTheme/Black-Highlighter@gh-pages/css/min/black-highlighter.min.css");
#side-bar {
/* ===SECONDARY & TERTIARY COLORS=== */
/* Editing these will edit a vast majority of theme elements. Useful for making dark themes */
/* Colors for Secondary & Tertiary items like Blockquote and YUI Tabs */
--swatch-secondary-color: var(--swatch-menubg-dark-color);
--swatch-tertiary-color: var(--swatch-menubg-medium-color);
--swatch-alternate-color: var(--swatch-menubg-light-color);
/* Text Colors for Secondary & Tertiary items like Sidebar Headers and Top-Bar Menu Text */
--swatch-text-secondary-color: var(--swatch-menutxt-dark-color);
--swatch-text-tertiary-color: var(--swatch-menutxt-light-color);
/* ===SIDE-BAR ELEMENTS=== */
/* ===SIDE-BAR GENERAL=== */
--sidebar-bg-color: var(--swatch-menubg-dark-color);
--sidebar-resources-bg-color: 0,0,0,0;
--sidebar-media-bg-color: 0,0,0,0;
/* ===SIDEBLOCK MENU=== */
--sideblock-heading-border-color: var(--bright-accent);
--sideblock-heading-bg-color: 0,0,0,0; /* Transparent */
--sideblock-heading-text-color: var(--swatch-text-tertiary-color);
/* ===MENU-ITEMS=== */
--sidebar-border-color: var(--swatch-primary), 0.08;
--sidebar-subtest-color: var(--swatch-text-tertiary-color);
--sidebar-links-text: var(--swatch-text-tertiary-color);
--sidebar-links-hover-bg-color: var(--bright-accent);
--sidebar-links-hover-text-color: var(--swatch-text-tertiary-color);
/* ===SIDEBAR COLLAPSIBLES=== */
/*Folded Colors */
--sidebar-collapsible-fld-link-bg: var(--swatch-primary), 0.25;
--sidebar-collapsible-fld-link-color: var(--swatch-text-tertiary-color);
--sidebar-collapsible-fld-link-hover-color: var(--swatch-text-tertiary-color);
--sidebar-collapsible-fld-arrow-hover-color: var(--swatch-text-tertiary-color);
/*Unfolded Colors */
--sidebar-collapsible-ufld-link-bg: var(--swatch-primary-darker), 0.25;
--sidebar-collapsible-ufld-link-color: var(--swatch-text-tertiary-color);
--sidebar-collapsible-ufld-link-hover-color: var(--swatch-text-tertiary-color);
--sidebar-collapsible-ufld-arrow-hover-color: var(--swatch-text-tertiary-color);
/* Unfolded Body Colors */
--sidebar-collapsible-link-color: var(--swatch-text-tertiary-color);
--sidebar-collapsible-link-hover-color: var(--swatch-text-tertiary-color);
scrollbar-color:
rgba(var(--swatch-primary-darker), 0.1) /* Thumb */
rgba(var(--swatch-secondary-color), 0.05); /* Track */
border-color: rgba(var(--swatch-secondary-color), 0.4);
}
/* Hover Scrollbar Behavior */
#side-bar:hover,
#side-bar:active {
scrollbar-color:
rgb(var(--swatch-primary-darker), 1) /* Thumb */
rgb(var(--swatch-menubg-dark-color), 1); /* Track */
}
#side-bar:focus-within {
scrollbar-color:
rgb(var(--swatch-primary-darker), 1) /* Thumb */
rgb(var(--swatch-menubg-color), 1); /* Track */
}
#side-bar::-webkit-scrollbar-track {
background-color: rgba(var(--swatch-tertiary-color), 0.8);
}
#side-bar::-webkit-scrollbar,
#side-bar::-webkit-scrollbar-thumb,
#side-bar::-webkit-scrollbar-corner {
background-color: rgba(var(--swatch-menubg-dark-color), 0);
}
#side-bar .side-block.media a:any-link {
background: rgba(var(--swatch-menubg-light-color),0.75) !important;
}
#side-bar .side-block.media a::before {
background: rgb(var(--social-color));
}
#side-bar .side-block.media a img {
filter: drop-shadow(0 0 0 rgba(var(--swatch-alternate-color),0));
transition: filter 200ms cubic-bezier(0.4, 0, 0.2, 1);
}
#side-bar .side-block.media a:hover img,
#side-bar .side-block.media a:active img {
filter: drop-shadow(0.1875rem 0.1875rem 0 rgb(var(--swatch-alternate-color)));
}
#side-bar .side-block.media a:focus-within img {
filter: drop-shadow(0.1875rem 0.1875rem 0 rgb(var(--swatch-alternate-color)));
}
[[/module]]
[!--
为英站跨维基模块开发的自定义样式组件,基于由 7happy7 与 Sekai-s 开发的中分跨维基模块。
请注意截至 2022-03-15,新版英站跨维基模块仍未在 SCP 维基启用,所以该自定义样式组件将不会生效。
跨维基模块:http://scp-wiki-cn.wikidot.com/nav:interwiki
源代码:https://github.com/scpwiki/interwiki
亦请参见:https://scpwiki.com/how-to-create-a-branch-of-the-scp-foundation
用法:
在需要修改跨维基模块样式的页面中:
[[include :scp-wiki-cn:component:interwiki-style
| priority=X
| type=<跨维基模块类型>
| override=X
| theme=<CSS 样式表的链接>
| css=<经 URI 转义的 CSS>
]]
“priority” 的值必须被设定为比该版式所扩展的版式的 priority 大 1 的数。
举例:
- 网站的基本版式(对于 SCP 维基来说,就是 Sigma-9)的 priority 为 0。
- 一个修改了 Sigma-9 的用在页面中的 CSS 版式(比如一个 Sigma-9 扩展版式)的 priority 应设为 1。
- 黑市版式是黑色标记笔的扩展版式,而后者的 priority 为 2;则黑市版式的 priority 应设为 3。
“type” 的值必须被指定,侧边栏的 type 为 sidebar,而 _404 页面的 type 为 404。
“override” 的值是可选的,当填入 1 时,此自定义样式将强制覆盖同 priority 的其他自定义样式。
“theme” 的值是可选的,可以填入 CSS 样式表(比如一个 CSS 版式)的 URL。
“css” 的值是可选的,且可以是直接应用至跨维基模块的经 URI 转义的 CSS。若需转义 CSS,请参见 https://meyerweb.com/eric/tools/dencoder
--]
[[embed]]
<iframe src="//interwiki.scpwikicn.com/styleFrame.html?priority=0&type=sidebar&override=1&theme=https://interwiki.scpwikicn.com/css/style-bhl.css&css=%40import%20url('https%3A%2F%2Finterwiki.scpwikicn.com%2Fcss%2Fstyle-bhl-dark.css')%3B" style="display: none"></iframe>
[[/embed]]
[[module CSS]]
@import url(https://scp-wiki.wdfiles.com/local--code/component%3Acroqstyle/1);
[[/module]]
[!-- Begin metacomponent context detection --]
[!-- How this works:
- The iftags doesn't render its contents when included on most pages (any page not tagged 'component'), so this half of the context detector starts a comment block, and the one at the bottom of the page ends it. The metacomponent's documentation gets commented out and doesn't render.
- When included on a component page, the metacomponent should be included inside //its// iftags. Iftags inside iftags don't work, they just render as plaintext, so the documentation is still commented out.
- When on a component page and not inside nested iftags (i.e. only on the actual source page), the iftags renders its contents and closes the comment block early. The documentation is not commented out, and renders normally. (This also happens when included on a component page but not inside iftags - so don't do that)
--]
[!-- -[[iftags +component]]-][[/iftags]]
[[div class="croqstyle__documentation"]]
[[>]]
[[module Rate]]
[[/>]]
[[module css]]
.croqstyle__documentation :is(h1, h2) {
font-family: Inter, sans-serif;
font-weight: bold;
}
.croqstyle__documentation h1 ~ h1 { margin-top: 6rem }
.croqstyle__documentation h1 ~ h2 { margin-top: 3rem }
.croqstyle__documentation #toc,
.croqstyle__description {
border: thin solid #ddd;
padding: 1em;
background-color: transparent;
}
[[/module]]
[[toc]]
[[div class="croqstyle__description"]]
+ About Croqstyle
Croqstyle is a bunch of miscellaneous CSS tweaks and utilities that I, [[*user Croquembouche]], use a lot and want to share.
This component:
* Makes a few behind-the-scenes changes that improve the reading or writing experience e.g. monospaced text in the editor
* Adds a few utilities for documenting components and themes e.g. custom styling for code blocks
* Adds a few opt-in features for regular pages e.g. special image blocks
Croqstyle is basically compatible with any theme as far as I know.
++ Usage
On any wiki:
[[div class="code terminal"]]
**##var(--c-keyword)|[[##**##var(--c-operator)|include## ##var(--c-value)|:scp-wiki:component:croqstyle##**##var(--c-keyword)|]]##**
[[/div]]
For normal pages: Croqstyle should be included before any other component or theme, so that they can override it.
For components/themes: Croqstyle can be used on other components for their documentation -- include it inside the component's {{@@[[iftags]]@@}} block, so that your component's users are not forced to use Croqstyle.
You don't have to include it like this -- feel free to look through and use my CSS at a starting point for new stuff, or steal just the bits you like.
[[/div]]
+ Source code
Here's the source CSS for Croqstyle:
[[collapsible show="+ show source CSS" hide="- hide source CSS"]]
[[code type="css"]]
/* CROQSTYLE CSS */
/* Source: https://scp-wiki.wikidot.com/component:croqstyle */
@import url('https://fonts.googleapis.com/css2?family=Fira+Code:wght@400;700');
/* Little improvements */
/* 1. Reasonably-sized footnotes */
.hovertip { max-width: 400px; }
/* 2. No more big avatar hover thingies */
.avatar-hover { display: none !important; }
/* 3. Monospace editor + code blocks */
:root { --mono-font: "Fira Code", Cousine, monospace; }
#edit-page-textarea, .code pre, .code p, .code, tt, .page-source {
font-family: var(--mono-font);
}
.code pre * { white-space: pre; }
.code *, .pre * { font-feature-settings: unset; }
.change-textarea-size { padding-right: 3em; }
/* 4. Better image block positioning */
@media (max-width: 550px), (min-width: 768px) and (max-width: 850px) {
.scp-image-block:is(.block-right, .block-left) {
float: none;
margin-inline: auto;
}
}
/* 5. Offsite image enforcement */
img[src*="imgur.com"] {
content: url(https://scp-wiki.wdfiles.com/local--files/component%3Acroqstyle/imgurblock.png);
}
/* Documentation helpers */
/* 1. Teletype backgrounds */
tt {
background-color: var(--swatch-something-bhl-idk-will-fix-later, #f4f4f4);
font-size: 85%;
padding: 0.2em 0.4em;
margin: 0;
border-radius: 6px;
}
/* 2. Code colours */
:root {
--croqstyle-terminal-light-bg: #ffffff;
--croqstyle-terminal-light-syntax: #000000;
--croqstyle-terminal-light-comment: #008000;
--croqstyle-terminal-light-error: #e51602;
--croqstyle-terminal-light-value: #267f99;
--croqstyle-terminal-light-symbol: #795e26;
--croqstyle-terminal-light-string: #a31515;
--croqstyle-terminal-light-operator: #0000ff;
--croqstyle-terminal-light-builtin: #14238a;
--croqstyle-terminal-light-keyword: #af00db;
--croqstyle-terminal-light-border: 0.1rem solid #444444;
--croqstyle-terminal-dark-bg: #1f1f1f;
--croqstyle-terminal-dark-syntax: #d4d4d4;
--croqstyle-terminal-dark-comment: #6a9955;
--croqstyle-terminal-dark-error: #cd4343;
--croqstyle-terminal-dark-value: #4dc8af;
--croqstyle-terminal-dark-symbol: #d9d9a7;
--croqstyle-terminal-dark-string: #ce9178;
--croqstyle-terminal-dark-operator: #5294ca;
--croqstyle-terminal-dark-builtin: #9adafb;
--croqstyle-terminal-dark-keyword: #c384be;
--croqstyle-terminal-dark-border: 0.3rem solid #bbbbbb;
}
.code.terminal, .terminal > .code {
color: var(--c-syntax);
background-color: var(--c-bg);
border: var(--croqstyle-terminal-border);
border-radius: 0.3rem;
margin-inline: 1em;
}
:root, .terminal--light {
--c-bg: var(--croqstyle-terminal-light-bg);
--c-syntax: var(--croqstyle-terminal-light-syntax);
--c-comment: var(--croqstyle-terminal-light-comment);
--c-error: var(--croqstyle-terminal-light-error);
--c-value: var(--croqstyle-terminal-light-value);
--c-symbol: var(--croqstyle-terminal-light-symbol);
--c-string: var(--croqstyle-terminal-light-string);
--c-operator: var(--croqstyle-terminal-light-operator);
--c-builtin: var(--croqstyle-terminal-light-builtin);
--c-keyword: var(--croqstyle-terminal-light-keyword);
--croqstyle-terminal-border: var(--croqstyle-terminal-light-border);
}
.terminal--dark {
--c-bg: var(--croqstyle-terminal-dark-bg);
--c-syntax: var(--croqstyle-terminal-dark-syntax);
--c-comment: var(--croqstyle-terminal-dark-comment);
--c-error: var(--croqstyle-terminal-dark-error);
--c-value: var(--croqstyle-terminal-dark-value);
--c-symbol: var(--croqstyle-terminal-dark-symbol);
--c-string: var(--croqstyle-terminal-dark-string);
--c-operator: var(--croqstyle-terminal-dark-operator);
--c-builtin: var(--croqstyle-terminal-dark-builtin);
--c-keyword: var(--croqstyle-terminal-dark-keyword);
--croqstyle-terminal-border: var(--croqstyle-terminal-dark-border);
}
/* 3. Debug mode */
.debug-mode, .debug-mode *, .debug-mode *::before, .debug-mode *::after {
outline: thin solid var(--debug-colour, red);
position: relative;
}
.debug-info {
position: absolute;
left: 50%;
transform: translateX(-50%);
font-family: 'Fira Code', monospace;
font-size: 1rem;
white-space: nowrap;
}
.debug-info.over { top: -2.5rem; }
.debug-info.under { bottom: -2.5rem; }
.debug-info p { margin: 0; }
/* Opt-in features */
/* 1. Improved image block */
/* Custom image block with alt text, hover zoom, high res swap and WEBP support
* Define low res (~300px wide) image via --image-url CSS var
* Define high res (~1000px wide) image via --image-large-url CSS var (optional)
* Define aspect ratio (as 'H / W') via --aspect-ratio CSS var
*/
.croqstyle-image-block .scp-image-alt {
position: relative;
font-size: 0;
aspect-ratio: var(--aspect-ratio);
}
.croqstyle-image-block .scp-image-alt::before {
content: ""; position: absolute; inset: 0;
pointer-events: none;
background-image: var(--image-url);
background-size: cover, 0.6rem, cover;
background-position: center, left 0.3rem bottom 0.3rem, center;
background-repeat: no-repeat;
transition: transform 0.3s ease-in-out;
}
@media (prefers-reduced-motion) {
.croqstyle-image-block .scp-image-alt::before {
transition-duration: 0s;
}
}
@media (min-width: 670px) and (max-width: 767px), (min-width: 940px) {
.croqstyle-image-block:not(.croqstyle-image-block--no-hover) .scp-image-alt:hover::before,
.croqstyle-image-block--no-hover .scp-image-alt::before {
background-image: var(--image-large-url, var(--image-url)), url(https://scp-wiki.wdfiles.com/local--files/component%3Acroqstyle/loading.gif), var(--image-url);
}
.croqstyle-image-block:not(.croqstyle-image-block--no-hover) .scp-image-alt:hover::before {
transform: scale3d(1.6, 1.6, 1);
z-index: 1;
}
}
.croqstyle-image-block.block-right .scp-image-alt::before { transform-origin: 90% center }
.croqstyle-image-block.block-left .scp-image-alt::before { transform-origin: 10% center }
.croqstyle-image-block .scp-image-alt img {
width: 100%;
height: 100%;
object-fit: center;
}
/* 2. Image footnotes */
/* Custom footnote that uses the same vars as the image block above */
.croqstyle-img-footnote {
position: relative;
--croqstyle-img-footnote-link-color: rgb(var(--link-color, 187,0,17));
text-decoration: var(--croqstyle-img-footnote-link-color) dashed underline;
cursor: help;
}
.croqstyle-img-footnote::after {
content: "";
display: inline-block;
/* https://icon-sets.iconify.design/material-symbols/image-outline/ */
--croqstyle-img-footnote-icon-url: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1em' height='1em' viewBox='0 0 24 24'%3E%3Cpath fill='%23000' d='M5 21q-.825 0-1.412-.587T3 19V5q0-.825.588-1.412T5 3h14q.825 0 1.413.588T21 5v14q0 .825-.587 1.413T19 21zm0-2h14V5H5zm1-2h12l-3.75-5l-3 4L9 13zm-1 2V5z'/%3E%3C/svg%3E");
-webkit-mask-image: var(--croqstyle-img-footnote-icon-url);
mask-image: var(--croqstyle-img-footnote-icon-url);
-webkit-mask-size: cover;
mask-size: cover;
-webkit-mask-position: center;
mask-position: center;
background-color: var(--croqstyle-img-footnote-link-color);
width: 1em; height: 1em;
vertical-align: super;
font-size: smaller;
line-height: normal;
}
.croqstyle-img-footnote::before {
content: "";
display: block;
position: absolute;
aspect-ratio: var(--aspect-ratio);
height: 16rem;
border: thin solid grey;
background-color: white;
background-image: var(--image-url);
background-size: 92.5%;
background-position: center;
background-repeat: no-repeat;
bottom: 0; left: 50%;
--croqstyle-img-footnote-icon-offset: 0px;
transform: translate(-50%, calc(100% + var(--croqstyle-img-footnote-icon-offset)));
z-index: 20;
opacity: 0;
pointer-events: none;
transition: opacity 0.2s ease, transform 0.2s ease;
}
.croqstyle-img-footnote:hover { --croqstyle-img-footnote-link-color: purple; }
.croqstyle-img-footnote:hover::before {
opacity: 1;
pointer-events: initial;
--croqstyle-img-footnote-icon-offset: 0.5em;
}
@media (max-width: 1200px) {
.croqstyle-img-footnote { position: static; }
.croqstyle-img-footnote::before {
bottom: auto;
left: 50%;
transform: translate(-50%, calc(0px + var(--croqstyle-img-footnote-icon-offset)));
}
}
/* 3. Simple responsive div */
.croqstyle-responsive-div {
container-type: inline-size;
}
.croqstyle-responsive-div__desktop {
display: none;
}
.croqstyle-responsive-div__mobile table {
margin-left: 0; /* Left align for consistent header row placement */
}
@container (min-width: 550px) {
.croqstyle-responsive-div__desktop { display: revert !important }
.croqstyle-responsive-div__mobile { display: none }
}
/* 4. Reset tabview */
/* Undoes base Wikidot tab styling. These reset styles are derived from Wikidot's base theme. They override and undo all the tab styles in the base theme, matching the selectors exactly to cancel them out.
* It might look like these selectors can be simplified, merged, reduced in complexity - they can't, because otherwise they wouldn't cancel out the base theme styling.
*/
/* Entire tabview */
:where(.croqstyle-reset-tabs) .yui-navset { padding: initial; position: initial }
/* List of tabs */
:where(.croqstyle-reset-tabs) .yui-nav { margin: initial; padding: initial; list-style: initial }
:where(.croqstyle-reset-tabs) .yui-navset .yui-nav { width: initial; position: initial; border: initial }
/* Internal wrapper for each tab */
:where(.croqstyle-reset-tabs) .yui-nav li { margin: initial; padding: initial; list-style: initial }
:where(.croqstyle-reset-tabs) .yui-navset .yui-nav li { display: initial; vertical-align: initial; cursor: initial; margin: initial; padding: initial }
:where(.croqstyle-reset-tabs) .yui-navset .yui-nav .selected { margin: initial }
/* Each tab */
:where(.croqstyle-reset-tabs) .yui-navset .yui-nav li a { background: initial; border: initial; color: initial; position: initial; text-decoration: initial; display: initial; vertical-align: initial }
/* Selected tab */
:where(.croqstyle-reset-tabs) .yui-navset .yui-nav .selected a { border-color: initial }
/* Hovered tab */
:where(.croqstyle-reset-tabs) .yui-navset .yui-nav a:is(:hover, :focus) { background: initial; outline: initial }
/* Selected + hovered tab */
:where(.croqstyle-reset-tabs) .yui-navset .yui-nav .selected :is(a, a:focus, a:hover) { background: initial; color: initial }
/* Text in each tab */
:where(.croqstyle-reset-tabs) .yui-navset .yui-nav li a em { font-style: initial; display: initial; border: initial; cursor: initial; padding: initial; left: initial; top: initial; position: initial }
/* Text in the selected tab */
:where(.croqstyle-reset-tabs) .yui-navset .yui-nav .selected a em { padding: initial; border-color: initial }
/* Content panel */
:where(.croqstyle-reset-tabs) .yui-navset .yui-content { background: initial; border: initial; padding: initial }
[[/code]]
[[/collapsible]]
[[# improvements]]
+ Little improvements
These are all passive changes that improve™ either the reading or editing experience.
[[# reasonably-sized-footnotes]]
++ Reasonably-sized footnotes
Stops footnotes from being a million miles wide, so that you can actually read them.[[footnote]]They're this wide now, even if the text inside them is really really really really really really really really really really really really really long.[[/footnote]]
[[# remove-avatar-hover]]
++ Remove avatar hover
Stops big pictures from appearing when you hover over someone's avatar image, because they're stupid and really annoying and you can just click on them if you want to see the big version.
Hover me and watch nothing happen: [[*user Croquembouche]]
[[# monospace]]
++ Monospace editor + code blocks
Makes the edit textbox monospace, and also changes all monospace text to Fira Code, the obviously superior monospace font.
[[# image-block-position]]
++ Better image block positioning
On mobile-sized screens, image blocks can no longer overflow the width of the page.
On slightly larger screens, image blocks can no longer take up like 80% of the page leaving only a tiny strip of space for text to render one-word-per-line. At those widths, images will be centred and text won't be able to appear next to it.
Not compatible with BHL.
[[collapsible show="+ show screenshots of what this does"]]
Before:
|| [[image old-image-block-at-800px.half.png style="border: medium solid black; border-radius: 0.25rem"]] || [[image old-image-block-at-510px.half.png style="border: medium solid black; border-radius: 0.25rem"]] || [[image old-image-block-at-330px.half.png style="border: medium solid black; border-radius: 0.25rem"]] ||
|| tablet _
_
(squished text) || large mobile _
_
(squished text) || small mobile _
_
(the image is cut off on the left side) ||
After:
|| [[image new-image-block-at-800px.half.png style="border: medium solid black; border-radius: 0.25rem"]] || [[image new-image-block-at-510px.half.png style="border: medium solid black; border-radius: 0.25rem"]] || [[image new-image-block-at-330px.half.png style="border: medium solid black; border-radius: 0.25rem"]] ||
|| tablet || large mobile || small mobile ||
[[/collapsible]]
[[# offsite-image-enforcement]]
++ Offsite image enforcement
Some attempt is made to enforce that offsite images aren't used on the wiki. The following rules are applied:
* Imgur-hosted images are replaced with the same placeholder image that users in the UK see, as Imgur does not offer its services to the UK. This is to increase visibility of the issue to non-UK authors so they can fix their articles faster. (Non-English translations of this component may see fit to remove this rule.)
+ Documentation helpers
These are utilities intended for making it easier to document themes and components.
[[# tt-bg]]
++ Teletype backgrounds
Adds a light grey background to <tt> elements ({{@@{{text}}@@}}), so code snippets stand out more.
[[# code-syntax]]
++ Code colours
Adds some syntax highlighting colours as CSS variables. The syntax colours are taken from VSCode's default light and dark themes.
You can add the {{.terminal}} class to a fake code block as {{@@[[div class="code terminal"]]@@}} to give it a pseudo-terminal look. Doesn't work with {{@@[[code]]@@}}, because Wikidot inserts a bunch of syntax highlighting that you can't change yourself without a bunch of CSS. Use it for non-{{@@[[code]]@@}} code snippets only. Enable dark mode with {{.terminal@@--@@dark}}:
[[div style="display: flex; flex-wrap: wrap; align-items: start"]]
[[div class="code terminal" style="flex: 250px; word-break: break-all"]]
**##var(--c-keyword)|[[####var(--c-builtin)|div## ##var(--c-symbol)|class##=##var(--c-string)|"code terminal"####var(--c-keyword)|]]##**
@@**@@##var(--c-keyword)|@@##@@####var(--c-builtin)|var##(##var(--c-symbol)|@@--c-keyword@@##)##var(--c-keyword)|@@|@@##[[##var(--c-keyword)|@@##@@####var(--c-keyword)|@@##@@####var(--c-builtin)|var##(##var(--c-symbol)|@@--c-builtin@@##)##var(--c-keyword)|@@|@@##div##var(--c-keyword)|@@##@@## ##var(--c-keyword)|@@##@@####var(--c-builtin)|var##(##var(--c-symbol)|@@--c-symbol@@##)##var(--c-keyword)|@@|@@##class##var(--c-keyword)|@@##@@##=##var(--c-keyword)|@@##@@####var(--c-builtin)|var##(##var(--c-symbol)|@@--c-string@@##)##var(--c-keyword)|@@|@@##"code terminal"##var(--c-keyword)|@@##@@####var(--c-keyword)|@@##@@####var(--c-builtin)|var##(##var(--c-symbol)|@@--c-keyword@@##)##var(--c-keyword)|@@|@@##]]##var(--c-keyword)|@@##@@##@@**@@
@@**@@##var(--c-keyword)|@@##@@####var(--c-builtin)|var##(##var(--c-symbol)|@@--c-keyword@@##)##var(--c-keyword)|@@|@@##[[/##var(--c-keyword)|@@##@@####var(--c-keyword)|@@##@@####var(--c-builtin)|var##(##var(--c-symbol)|@@--c-builtin@@##)##var(--c-keyword)|@@|@@##div##var(--c-keyword)|@@##@@####var(--c-keyword)|@@##@@####var(--c-builtin)|var##(##var(--c-symbol)|@@--c-keyword@@##)##var(--c-keyword)|@@|@@##]]##var(--c-keyword)|@@##@@##@@**@@
**##var(--c-keyword)|[[/####var(--c-builtin)|div####var(--c-keyword)|]]##**
[[/div]]
[[div class="code terminal terminal--dark" style="flex: 250px; word-break: break-all"]]
**##var(--c-keyword)|[[####var(--c-builtin)|div## ##var(--c-symbol)|class##=##var(--c-string)|"code terminal terminal@@--@@dark"####var(--c-keyword)|]]##**
@@**@@##var(--c-keyword)|@@##@@####var(--c-builtin)|var##(##var(--c-symbol)|@@--c-keyword@@##)##var(--c-keyword)|@@|@@##[[##var(--c-keyword)|@@##@@####var(--c-keyword)|@@##@@####var(--c-builtin)|var##(##var(--c-symbol)|@@--c-builtin@@##)##var(--c-keyword)|@@|@@##div##var(--c-keyword)|@@##@@## ##var(--c-keyword)|@@##@@####var(--c-builtin)|var##(##var(--c-symbol)|@@--c-symbol@@##)##var(--c-keyword)|@@|@@##class##var(--c-keyword)|@@##@@##=##var(--c-keyword)|@@##@@####var(--c-builtin)|var##(##var(--c-symbol)|@@--c-string@@##)##var(--c-keyword)|@@|@@##"code terminal terminal@@--@@dark"##var(--c-keyword)|@@##@@####var(--c-keyword)|@@##@@####var(--c-builtin)|var##(##var(--c-symbol)|@@--c-keyword@@##)##var(--c-keyword)|@@|@@##]]##var(--c-keyword)|@@##@@##@@**@@
@@**@@##var(--c-keyword)|@@##@@####var(--c-builtin)|var##(##var(--c-symbol)|@@--c-keyword@@##)##var(--c-keyword)|@@|@@##[[/##var(--c-keyword)|@@##@@####var(--c-keyword)|@@##@@####var(--c-builtin)|var##(##var(--c-symbol)|@@--c-builtin@@##)##var(--c-keyword)|@@|@@##div##var(--c-keyword)|@@##@@####var(--c-keyword)|@@##@@####var(--c-builtin)|var##(##var(--c-symbol)|@@--c-keyword@@##)##var(--c-keyword)|@@|@@##]]##var(--c-keyword)|@@##@@##@@**@@
**##var(--c-keyword)|[[/####var(--c-builtin)|div####var(--c-keyword)|]]##**
[[/div]]
[[/div]]
//Tools to auto-highlight: [https://rossjrw.com/series-replace/?f=%3D%28%20%2A%29%28%5B0-9%5D%2B%28%3F%3Apx%7Cem%7Crem%29%3F%7Ctrue%7Cfalse%7Cyes%7Cno%29%5Cn%28%5C%7C%7C%5D%5D%29&f=%3D%28%20%2A%29%28%5Ba-z0-9-%5D%2B%29%5Cn%28%5C%7C%7C%5D%5D%29&f=%5C%7C%20%2A%28%5BA-z-%5D%2B%29%28%20%2A%3D%20%2A%29%3C%3C%3C%28value%7Csymbol%29%23%23%23%28.%2A%29%3E%3E%3E&f=%5C%7C%20%2A%28%5BA-z-%5D%2B%29%28%20%2A%3D%20%2A%29%28%28%3F%3A%28%3F%21%5C%7C%7C%5D%5D%29.%29%2A%29&f=%28%3F%3A%40%40%29%3F%5C%5B%5C%5Binclude%20%28.%2A%29%28%3F%3A%40%40%29%3F%28%5Cn%7C%20%29&f=%5D%5D&i=%5B%5Binclude%20%3Ascp-wiki%3Acomponent%3Acroqstyle%0A%7C%20number-arg%20%3D%20100px%0A%7C%20string-arg%20%3D%20Input%20value%0A%5D%5D&r=%3D%241%3C%3C%3Cvalue%23%23%23%242%3E%3E%3E%5Cn%243&r=%3D%241%3C%3C%3Csymbol%23%23%23%242%3E%3E%3E%5Cn%243&r=%23%23var%28--c-keyword%29%7C%7C%23%23%20%23%23var%28--c-builtin%29%7C%241%23%23%23%23var%28--c-keyword%29%7C%242%23%23%23%23var%28--c-%243%29%7C%244%23%23&r=%23%23var%28--c-keyword%29%7C%7C%23%23%20%23%23var%28--c-builtin%29%7C%241%23%23%23%23var%28--c-keyword%29%7C%242%23%23%23%23var%28--c-string%29%7C%243%23%23&r=%23%23var%28--c-keyword%29%7C%5B%5B%23%23%23%23var%28--c-builtin%29%7Cinclude%23%23%20%23%23var%28--c-symbol%29%7C%241%23%23%242&r=%23%23var%28--c-keyword%29%7C%5D%5D%23%23 component includes] · [https://rossjrw.com/series-replace/?f=%5C%5B%21--%20.%2A%3F%20--%5D&f=%28%3F%3C%3D%5C%5B%5C%5B%28%3F%3Adiv%7Cspan%29.%2A%29%28%5Ba-z-%5D%2B%29%3D%28%22%5B%5E%22%5D%2A%22%29&f=%28%3F%3C%3D%5C%5B%5C%5B%2F%3F%28%3F%3Adiv%7Cspan%29.%2A%29%5C%5D%5C%5D&f=%28%5C%5B%5C%5B%2F%3F%29%28div%7Cspan%29&i=%5B%5Bdiv%20class%3D%22class-1%20class-2%22%20data-example%3D%22test%22%5D%5D%20%5B%21--%20comment%20--%5D%0ANormal%20text%0A%5B%5Bspan%20class%3D%22eggs%22%5D%5DText%20in%20span%5B%5B%2Fspan%5D%5D%0A%5B%5B%2Fdiv%5D%5D&r=%23%23var%28--c-comment%29%7C%40%40%24%26%40%40%23%23&r=%23%23var%28--c-symbol%29%7C%241%23%23%3D%23%23var%28--c-string%29%7C%40%40%242%40%40%23%23&r=%23%23var%28--c-keyword%29%7C%5D%5D%23%23&r=%23%23var%28--c-keyword%29%7C%241%23%23%23%23var%28--c-builtin%29%7C%242%23%23 divs and spans]//
[[# debug-mode]]
++ Debug mode
[[div class="debug-mode" style="margin-bottom: 4rem;"]]
Draw lines around anything inside {{.debug-mode}}. The colour of the lines is red but defers to CSS variable {{@@--@@debug-colour}}.
You can also add {{div.debug-info.over}} and {{div.debug-info.under}} inside an element to annotate the debug boxes -- though you'll need to make sure to leave enough vertical space that the annotation doesn't overlap the thing above or below it.
[[div class="debug-info under"]]
...like this!
[[/div]]
[[/div]]
[[# features]]
+ Opt-in features
These are new features and widgets that you can add to your page if you like. All of these opt-in features have CSS classes starting with 'croqstyle', so there's zero risk of contaminating anything on your page if you're not using them.
[[# improved-image-block]]
++ Improved image block
[[div class="croqstyle-image-block scp-image-block block-right" style="--aspect-ratio: 1 / 1; --image-url: url(https://scp-wiki.wdfiles.com/local--files/component%3Acroqstyle/lowres.png); --image-large-url: url(http://scp-wiki.wdfiles.com/local--files/component%3Acroqstyle/highres.webp);"]]
[[div class="scp-image-alt"]]
"Low-res image" and the image resolution (300x300) written on a pixelated background. When hovered the image changes to say "High-res image" and the new resolution of (1200x1200).
[[/div]]
[[div class="scp-image-caption"]]
Image caption
[[/div]]
[[/div]]
Provides an improved image block with more features, including:
* Hover zoom is built-in, similar to the 'Hover Enlarge' style provided by [[*user Woedenaz]]' [[[component:image-features|]]] component
* Built-in alt text.
* Supports showing a higher-resolution image when you hover it (unlike //Image Features//, which shows the same image but bigger), and even shows a loading icon while the larger image is downloaded.
Please don't make the hover image different to the unhovered image as a jumpscare, that's very cringe. This is an accessibility tool.
To use, insert the following syntax (which closely matches the source of the [[[component:image-block | standard image block]]]):
[[div class="code terminal"]]
##var(--c-keyword)|[[####var(--c-builtin)|div## ##var(--c-symbol)|class##=##var(--c-string)|"**croqstyle-image-block** scp-image-block block-right"## ##var(--c-symbol)|style##=##var(--c-string)|@@"--aspect-ratio: 1 / 1; --image-url: url(lowres.png); --image-large-url: url(highres.webp);"@@####var(--c-keyword)|]]##
##var(--c-keyword)|[[####var(--c-builtin)|div## ##var(--c-symbol)|class##=##var(--c-string)|@@"scp-image-alt"@@####var(--c-keyword)|]]##
Alt text goes here, which describes the content of the image for non-sighted users et al - e.g. if the image contains information, write it in plaintext here; or if the image invokes a particular feeling, describe that feeling here.
##var(--c-keyword)|[[/####var(--c-builtin)|div####var(--c-keyword)|]]##
##var(--c-keyword)|[[####var(--c-builtin)|div## ##var(--c-symbol)|class##=##var(--c-string)|@@"scp-image-caption"@@####var(--c-keyword)|]]##
Image caption
##var(--c-keyword)|[[/####var(--c-builtin)|div####var(--c-keyword)|]]##
##var(--c-keyword)|[[/####var(--c-builtin)|div####var(--c-keyword)|]]##
[[/div]]
Replace {{block-right}} with {{block-left}} or {{block-center}} for left and centre alignment respectively. You can put a fallback image inside {{.scp-image-alt}} using standard {{@@[[image]]@@}} syntax if you like.
If you don't want to provide a different image for the large version, you can omit the {{@@--@@image-large-url}} CSS variable -- the image in {{@@--@@image-url}} will be used both when zoomed and not zoomed.
You can also add class {{croqstyle-image-block@@--@@no-hover}} to disable the hover zoom feature and show the high res image all the time, but that's for a //very// niche use case -- probably just use the standard image block instead.
[[collapsible show="+ show tips for advanced users"]]
**For advanced CSS users:**
Note that the aspect ratio and image URLs are set via CSS variables. In this example they're set by the style attribute, but you can set them however you like (e.g. via a class defined in a CSS module).
**For advanced image editors:**
If the larger image is a WEBP, make sure that it has the transparency feature enabled - otherwise, when it starts loading, the rest of the smaller image will get blanked out until it's finished loading.
To enable the transparency feature, before you convert the image to WEBP, just make sure it has at least one pixel that's at least partially transparent.
You can do that in image editing software, alternatively here's an ImageMagick command that does it:
[[div class="code terminal"]]
convert -alpha on -channel A -fx 'j==h-1 && i==w-1 ? A*0.99 : A' image_original.png image_original_with_transparency.png
cwebp -q 80 image_original_with_transparency.png -o image.webp
[[/div]]
[[/collapsible]]
[[# image-footnotes]]
++ Image footnotes
Provides a class that adds [[span class="croqstyle-img-footnote" style="--aspect-ratio: 1 /1; --image-url: url(https://scp-wiki.wdfiles.com/local--files/component%3Acroqstyle/lowres.png);"]]image footnotes[[/span]] to stuff. They're like regular footnotes, but for images.
[[div class="code terminal"]]
##var(--c-keyword)|[[####var(--c-builtin)|span## ##var(--c-symbol)|class##=##var(--c-string)|@@"croqstyle-img-footnote"@@## ##var(--c-symbol)|style##=##var(--c-string)|@@"--aspect-ratio: 1 /1; --image-url: url(lowres.png);"@@####var(--c-keyword)|]]##Example.##var(--c-keyword)|[[/####var(--c-builtin)|span####var(--c-keyword)|]]##
[[/div]]
It uses the same CSS variables as the 'improved image block' feature above, so it's handy to define a CSS class per image, and then you can use that for both features.
You can actually already put images in footnotes using standard Wikidot syntax:
[[div class="code terminal"]]
##var(--c-keyword)|[[####var(--c-builtin)|footnote####var(--c-keyword)|]][[####var(--c-builtin)|image## ##var(--c-string)|imagegoeshere.png####var(--c-keyword)|]][[/####var(--c-builtin)|footnote####var(--c-keyword)|]]##
[[/div]]
That looks like this.[[footnote]][[image lowres.png]][[/footnote]]
The {{croqstyle-img-footnote}} class provided by Croqstyle is a little bit different to regular footnotes:
* It highlights a word or phrase as the context, not just a number
* It doesn't add the footnote to the footnote list, giving you the freedom to repeat image footnotes as often as you like without clogging up the bottom of the page.
They work well as 'reminder footnotes' to help the reader recall what e.g. an SCP looks like, without needing to scroll back up to the original picture.
[[# simple-responsive-div]]
++ Simple responsive div
Provides some classes for a simple responsive div that shows one set of contents for desktop users and another for mobile users.
Here's the markup:
[[div class="code terminal"]]
##var(--c-keyword)|[[####var(--c-builtin)|div## ##var(--c-symbol)|class##=##var(--c-string)|@@"croqstyle-responsive-div"@@####var(--c-keyword)|]]##
##var(--c-keyword)|[[####var(--c-builtin)|div## ##var(--c-symbol)|class##=##var(--c-string)|@@"croqstyle-responsive-div__desktop"@@## ##var(--c-symbol)|style##=##var(--c-string)|@@"display: none"@@####var(--c-keyword)|]]##
Desktop content goes here
##var(--c-keyword)|[[/####var(--c-builtin)|div####var(--c-keyword)|]]##
##var(--c-keyword)|[[####var(--c-builtin)|div## ##var(--c-symbol)|class##=##var(--c-string)|@@"croqstyle-responsive-div__mobile"@@####var(--c-keyword)|]]##
Mobile content goes here
##var(--c-keyword)|[[/####var(--c-builtin)|div####var(--c-keyword)|]]##
##var(--c-keyword)|[[/####var(--c-builtin)|div####var(--c-keyword)|]]##
[[/div]]
(That {{display: none}} style is there so that if this get copied onto a page without croqstyle, or if croqstyle gets removed from the page, it gracefully falls back to showing the mobile version without breaking anything)
The 'mobile' style will be activated any time the page content area is less than 550 pixels wide. That takes into account not only the screen width but also themes and [[[component:toggle-sidebar | whether or not the sidebar is present]]] (e.g. you know that one breakpoint at about ~800px where the desktop sidebar appears and there's only a bit of space for the content?) so it should be pretty resilient to anything you throw at it.
Do note that {{.croqstyle-responsive-div}} must be a div as wide as the full page that wraps any responsive content, and you might even be able to wrap your entire page in it. However, {{@@__@@desktop}} and {{@@__@@mobile}} can be e.g. spans, if you need them to be; and you can include as many of them as you like.
[[collapsible show="+ show use case: simple responsive tables" hide="- hide use case: simple responsive tables"]]
Here's a way you can use {{.croqstyle-responsive-div}} to make responsive tables.
Consider a wide table (either with lots of columns, or a few columns with a lot of text). It's impossible to display this on smaller screens because the table is just wider than your average mobile device.
In this situation, you want to keep that table layout on desktop, but on mobile it would be better to present that data as one smaller table per row of the original table.
(Sidenote: In //theory//, this is what [[*user Woedenaz]]' [[[component:responsive-tables|]]] component promises to deliver, but it has a huge number of pitfalls that I wrote an essay about in its comments.)
[[div style="display: flex; gap: 1em"]]
[[div style="flex: 1"]]
The following JavaScript snippet will convert a simple Wikidot table with the headers at the top, e.g. ->
[[/div]]
||~ A ||~ B ||~ C ||
|| a1 || b1 || c1 ||
|| a2 || b2 || c2 ||
[[/div]]
[[div style="display: flex; gap: 1em"]]
[[div style="flex: 1"]]
to several smaller tables, one per row of the original table, e.g. ->
[[/div]]
||~ A || a1 ||
||~ B || b1 ||
||~ C || c1 ||
||~ A || a2 ||
||~ B || b2 ||
||~ C || c2 ||
[[/div]]
Here's the JavaScript snippet. To convert the desktop table to the mobile tables, copy this, replace {{PASTE TABLE HERE}} with the table source (leave the backticks in place), paste that into your JS console and hit go; the output will be copied to your clipboard, paste that into your page (replacing the original table).
[[code type="javascript"]]
(() => {
const desktopTable = `PASTE TABLE HERE`
const rowToCells = row => row.split(/\s*\|\|~?\s*/).slice(1, -1)
const [header, ...rows] = desktopTable
.replace(/ _\n/g, "\\n")
.split(/[\r\n]+/)
.map(rowToCells)
.map(row => row.map(cell => cell.replace(/\\n/g, " _\n")))
const mobileTables = rows.map(row => {
return row.reduce((table, cell, cellIndex) => {
return `${table}\n||~ ${header[cellIndex]} || ${cell} ||`
}, "")
})
const output = [
'[[div class="croqstyle-responsive-div"]]',
'[[div class="croqstyle-responsive-div__desktop" style="display: none"]]',
desktopTable,
'[[/div]]',
'[[div class="croqstyle-responsive-div__mobile"]]',
...mobileTables,
'[[/div]]',
'[[/div]]',
].join("\n")
console.log(output)
copy(output)
})()
[[/code]]
[[/collapsible]]
[[collapsible show="+ show use case: change one word" hide="- hide use case: change one word"]]
To switch out a single word/phrase on desktop or mobile:
[[div class="code terminal"]]
##var(--c-keyword)|[[####var(--c-builtin)|div## ##var(--c-symbol)|class##=##var(--c-string)|@@"croqstyle-responsive-div"@@####var(--c-keyword)|]]##
You are currently browsing on ##var(--c-keyword)|[[####var(--c-builtin)|span## ##var(--c-symbol)|class##=##var(--c-string)|@@"croqstyle-responsive-div__desktop"@@## ##var(--c-symbol)|style##=##var(--c-string)|@@"display: none"@@####var(--c-keyword)|]]##desktop##var(--c-keyword)|[[/####var(--c-builtin)|span####var(--c-keyword)|]]####var(--c-keyword)|[[####var(--c-builtin)|span## ##var(--c-symbol)|class##=##var(--c-string)|@@"croqstyle-responsive-div__mobile"@@####var(--c-keyword)|]]##mobile##var(--c-keyword)|[[/####var(--c-builtin)|span####var(--c-keyword)|]]##, probably!
##var(--c-keyword)|[[/####var(--c-builtin)|div####var(--c-keyword)|]]##
[[/div]]
[[div class="croqstyle-responsive-div"]]
You are currently browsing on [[span class="croqstyle-responsive-div__desktop" style="display: none"]]desktop[[/span]][[span class="croqstyle-responsive-div__mobile"]]mobile[[/span]], probably!
[[/div]]
[[/collapsible]]
[[# reset-tabview]]
++ Reset tabview
This utility CSS-resets a tabview -- i.e., it removes all CSS styling from it. I always find it a pain to dig through the way Wikidot styles tabs and undo bits of it every time I want to style them. Using this, that work is already done.
To reset a tabview, wrap it in {{.croqstyle-reset-tabs}}:
[[div class="code terminal"]]
##var(--c-keyword)|[[####var(--c-builtin)|div## ##var(--c-symbol)|class##=##var(--c-string)|@@"croqstyle-reset-tabs"@@####var(--c-keyword)|]]##
##var(--c-keyword)|[[####var(--c-builtin)|tabview####var(--c-keyword)|]]##
##var(--c-keyword)|[[####var(--c-builtin)|tab## ##var(--c-string)|First tab####var(--c-keyword)|]]##
Content 1
##var(--c-keyword)|[[/####var(--c-builtin)|tab####var(--c-keyword)|]]##
##var(--c-keyword)|[[####var(--c-builtin)|tab## ##var(--c-string)|Second tab####var(--c-keyword)|]]##
Content 2
##var(--c-keyword)|[[/####var(--c-builtin)|tab####var(--c-keyword)|]]##
##var(--c-keyword)|[[/####var(--c-builtin)|tabview####var(--c-keyword)|]]##
##var(--c-keyword)|[[/####var(--c-builtin)|div####var(--c-keyword)|]]##
[[/div]]
This doesn't undo the CSS that hides/shows each the tab contents, but you could reset it yourself if you wanted to replace it with your own animation:
[[div class="code terminal"]]
[id^=wiki-tab] { display: initial !important }
[[/div]]
[[collapsible show="+ show reference for how to style each tabview part"]]
Minimal selectors for each tabview part:
||~ Part ||~ Selector ||
|| The entire tabview || .yui-navset ||
|| List of tabs || .yui-navset .yui-nav ||
|| Tab || .yui-navset .yui-nav li a ||
|| Tab (selected) || .yui-navset .yui-nav .selected a ||
|| Tab (hovered) || .yui-navset .yui-nav a:is(:hover, :focus) ||
|| Tab (selected + hovered) || .yui-navset .yui-nav .selected :is(a, a:focus, a:hover) ||
|| Text in each tab || .yui-navset .yui-nav li a em ||
|| Text in the selected tab || .yui-navset .yui-nav .selected a em ||
|| Tab content display area || .yui-navset .yui-content ||
|| Content of the selected tab || [id^=wiki-tab][style*=block] ||
|| Content of unselected tabs || [id^=wiki-tab][style*=none] ||
To style only tabviews that have been reset, prepend {{:where(.croqstyle-reset-tabs)}} to each selector, e.g. {{:where(.croqstyle-reset-tabs) .yui-navset}}
To style a specific tabview, or if providing a custom opt-in tabview for a theme, do the same thing but with a different class, e.g. {{:where(.special-fancy-tabs) .yui-navset}}
[[/collapsible]]
[[collapsible show="+ Show example reset tabs"]]
Here's some tabs:
[[tabs]]
[[tab First tab]]
First tab's content
[[/tab]]
[[tab Second tab]]
Second tab's content
[[/tab]]
[[/tabs]]
Here's those same tabs with the reset class applied:
[[div class="croqstyle-reset-tabs"]]
[[tabs]]
[[tab First tab]]
First tab's content
[[/tab]]
[[tab Second tab]]
Second tab's content
[[/tab]]
[[/tabs]]
[[/div]]
[[/collapsible]]
[[/div]]
[[div style="display: none"]]
[[footnoteblock]]
[[/div]]
[[iftags +component]][!-[[/iftags]]- --]
[!-- End metacomponent context detection --]
这是余烬旋流主题版式,为“[[[rat-s-nest-hub|鼠巢]]]”设定下的作品所设计。
由 [[*user Croquembouche]] 制作,以 [[*user faminepulse]] 对 2020 年九月美国俄勒冈州的天空的描述命名。
页眉以一分钟为周期循环昼夜。每三个晚上,雾会短暂消散。
+ 使用方法
你还需要导入[[[theme:black-highlighter-theme|黑色标记笔]]]和可选的[[[component:bhl-dark-sidebar|黑标暗色侧边栏]]]才能使用此版式:
[[div class="code"]]
@@[[include :scp-wiki-cn:theme:black-highlighter-theme]]@@
@@[[include :scp-wiki-cn:theme:swirling-ashes]]@@
@@[[include :scp-wiki:component:bhl-dark-sidebar]]@@
[[/div]]
使用如下语法调整页眉文字:
[[div class="code"]]
@@[[module CSS]]@@
:root:lang(cn) {
@@ --@@header-title: "SCP基金会";
@@ --@@header-subtitle: "控制,收容,保护";
}
@@[[/module]]@@
[[/div]]
+ 主题颜色
>[!--
[[module CSS]]
td { vertical-align: top; }
td strong { white-space: nowrap; }
.options table.wiki-content-table td { border: none; padding: 0.7em 1em; }
[[/module]]
[[div style="border: 1px solid #ddd; padding: 1em;"]]
+ What this is
A component that displays a bunch of colored squares to show off a CSS theme's flair.
Designed by [[*user Woedenaz]] and componentised by [[*user Croquembouche]].
This component is designed to be used for CSS themes, but it can be used on almost any page, if you really want.
+ Usage
On any wiki:
[[div class="code"]]
##blue|**[[include :scp-wiki:component:theme-squares -=-**##
##blue|**|**## ##green|color1-name####blue|**=**##My Favourite Colour
##blue|**|**## ##green|color1-variable####blue|**=**##@@--@@fav-color
##blue|**|**## ##green|color1-info####blue|**=**##(191, 144, 0)
##blue|**]]**##
[[/div]]
Note the "{{-=-}}" after the component name. You **//do//** need to include that -- otherwise all this text explaining how to use the component will appear on your page.
For this component, there are three parameters per color. Replace N with the number of the color.
[[div class="options"]]
|| **colorN-name** || The name of the color. Pick whatever you want! ||
|| **colorN-variable** || The name of the [https://developer.mozilla.org/en-US/docs/Web/CSS/--* CSS variable] that contains this color. _
The variable should hold three comma-separated numbers representing the RGB values of the color. This is consistent with BHL-style variables. _
If your variables hold something else (e.g. a full RGB/RGBA or hex color), you will need to override the background color of each theme square manually with CSS. ||
|| **colorN-info** || Some info about the colour. Displaying the RGB values is typical. Keep it short. _
If you don't want any text, add {{@<@@ @@>@}} instead.||
|| **//colorN-has-light-text//** _
//Optional. Default: 0// || Either 0 or 1. Determines the font color on the square. Useful to make sure there is enough contrast between the background color and the text color. _
If 1, the value of {{@@--swatch-text-light@@}} is used, or white (255, 255, 255) if it is not defined. Otherwise {{@@--swatch-text-dark@@}}, or black (0, 0, 0). Like all BHL-style CSS color variables, three numbers representing RGB values are expected. ||
[[/div]]
A color can only be used if it's exposed as a [https://developer.mozilla.org/en-US/docs/Web/CSS/--* CSS variable]. All colors in a Black Highlighter theme have a corresponding CSS variable by default, so for BHL themes, this component should work out of the box. However, sigma9 does not use CSS variables, so the only CSS variables that are available will be any that you have defined in your theme.
This component can hold a maximum of 6 primary colors and 12 secondary colors. I recommend two primary colors and no more than six secondary colors.
To add a primary color, just add the top three of the above parameters to the include, as shown in the example.
To add a secondary color, it's the same, but replace 'color' with 'subcolor'.
+ Example
Here's a longer example, taken from the Black Highlighter theme:
[[div class="code"]]
##blue|**[[include :scp-wiki:component:theme-squares -=-**##
##blue|**|**## ##green|color1-name####blue|**=**##Payne's Grey
##blue|**|**## ##green|color1-variable####blue|**=**##@@--@@gray-monochrome
##blue|**|**## ##green|color1-info####blue|**=**##(66, 66, 72)
##blue|**|**## ##green|color1-has-light-text####blue|**=**##1
##blue|**|**## ##green|color2-name####blue|**=**##Rosewood
##blue|**|**## ##green|color2-variable####blue|**=**##@@--@@bright-accent
##blue|**|**## ##green|color2-info####blue|**=**##(133, 0, 5)
##blue|**|**## ##green|color2-has-light-text####blue|**=**##1
##blue|**|**## ##green|subcolor1-name####blue|**=**##Alto
##blue|**|**## ##green|subcolor1-variable####blue|**=**##@@--@@very-light-gray-monochrome
##blue|**|**## ##green|subcolor1-info####blue|**=**##(215, 215, 215)
##blue|**|**## ##green|subcolor2-name####blue|**=**##White Smoke
##blue|**|**## ##green|subcolor2-variable####blue|**=**##@@--@@pale-gray-monochrome
##blue|**|**## ##green|subcolor2-info####blue|**=**##(244, 244, 244)
##blue|**|**## ##green|subcolor3-name####blue|**=**##Bastille
##blue|**|**## ##green|subcolor3-variable####blue|**=**##@@--@@dark-gray-monochrome
##blue|**|**## ##green|subcolor3-info####blue|**=**##(48, 48, 52)
##blue|**|**## ##green|subcolor3-has-light-text####blue|**=**##1
##blue|**|**## ##green|subcolor4-name####blue|**=**##Buccaneer
##blue|**|**## ##green|subcolor4-variable####blue|**=**##@@--@@medium-accent
##blue|**|**## ##green|subcolor4-info####blue|**=**##(100, 46, 44)
##blue|**|**## ##green|subcolor4-has-light-text####blue|**=**##1
##blue|**|**## ##green|subcolor5-name####blue|**=**##Maroon
##blue|**|**## ##green|subcolor5-variable####blue|**=**##@@--@@dark-accent
##blue|**|**## ##green|subcolor5-info####blue|**=**##(100, 3, 15)
##blue|**|**## ##green|subcolor5-has-light-text####blue|**=**##1
##blue|**|**## ##green|subcolor6-name####blue|**=**##Mango Tango
##blue|**|**## ##green|subcolor6-variable####blue|**=**##@@--@@newpage-color
##blue|**|**## ##green|subcolor6-info####blue|**=**##(221, 102, 17)
##blue|**]]**##
[[/div]]
This produces the following colored squares:
[[=]]
[[image bhl-squares.png]]
[[/=]]
+ Tweaking
You can adjust the appearance of the component with CSS.
The whole component has the {{.colors-container}} class, and any CSS that targets it should included that class to ensure that nothing else on the page is affected. Every colored square has class {{.color}}. The primary colors have a {{.colors}} parent and the secondary colors have a {{.subcolors}} parent.
You'll need to use {{!important}} to override a square's background.
For example, the [[[theme:laughter-and-knives-theme | Laughter and Knives theme]]] adds a gradient background to the 9th secondary color like so:
[[code type="css"]]
.colors-container .subcolors .color:nth-of-type(9) {
background: var(--pastel-rainbow) !important;
}
[[/code]]
-----
[https://rossjrw.com/series-replace/?f=%5Cn&f=%5E&f=%24&f=%3C%3C%3E%3E&f=%28%3F%3C%3Dsubcolors.%2A%29%28%5B%5E%5C%5B%5C%5D%5D%2B%29%5C%5B%5C%5Bspan%20class%3D%22css-variable%22%5D%5D%40%40%28%5Ba-z-%5D%2B%29%40%40%5C%5B%5C%5B%5C%2Fspan%5D%5D%5C%5B%5C%5Bspan%20class%3D%22css-variable%22%5D%5D%40%40%28%5B%5E%40%5D%2B%29%40%40%5C%5B%5C%5B%5C%2Fspan%5D%5D&f=%28%5B%5E%5C%5B%5C%5D%5D%2B%29%5C%5B%5C%5Bspan%20class%3D%22css-variable%22%5D%5D%40%40%28%5Ba-z-%5D%2B%29%40%40%5C%5B%5C%5B%5C%2Fspan%5D%5D%5C%5B%5C%5Bspan%20class%3D%22css-variable%22%5D%5D%40%40%28%5B%5E%40%5D%2B%29%40%40%5C%5B%5C%5B%5C%2Fspan%5D%5D&f=%5C%7C&f=%5E%5C%5B%5C%5B%5B%5Ei%5D.%2A%7C%5E%5C%7C%5B%5E%20%5D.%2A&f=%5Cn%24&r=&r=%5B%5Binclude%20%3Ascp-wiki%3Acomponent%3Atheme-squares%20-%3D-%3C%3C%3E%3E%7C%20color%24-has-light-text%3D1%3C%3C%3E%3E%7C%20subcolor%24-has-light-text%3D1%3C%3C%3E%3E&r=%5Cn%5D%5D&r=%5Cn&r=%7C%20subcolor%24%24-name%3D%241%7C%20subcolor%24%24-variable%3D%242%7C%20subcolor%24%24-info%3D%243%7C&r=%7C%20color%24%24-name%3D%241%7C%20color%24%24-variable%3D%242%7C%20color%24%24-info%3D%243%7C&r=%5Cn%7C&r=&r= Tool to convert existing syntax to arguments for this component]
[[/div]]
[!-- --]
[[module CSS]]
.colors-container {
width: 98%;
display: flex;
flex-direction: column;
margin: 0 auto;
font-weight: 700;
font-family: var(--title-font, Verdana), sans-serif;
color: black;
}
.colors-container .colors, .colors-container .subcolors {
width: 100%;
flex-shrink: 0;
display: flex;
flex-wrap: wrap;
}
.colors-container .color {
flex-grow: 2;
padding: 0.5rem;
margin: 0.5rem;
color: rgb(var(--swatch-text-dark, 0, 0, 0));
display: flex;
flex-direction: column;
justify-content: flex-end;
align-items: center;
}
.colors-container .colors .color {
height: 7rem;
min-width: 4rem;
flex-basis: calc((100% / 2) - 2rem - 1px);
}
.colors-container .subcolors .color {
height: 4rem;
min-width: 4rem;
font-size: 75%;
text-align: center;
flex-basis: calc((100% / 6) - 2rem - 1px);
}
.colors-container .css-variable {
font-size: 75%;
letter-spacing: 0.1em;
font-family: var(--body-font, Verdana), sans-serif;
}
/* Hide a colour that's not been provided by seeing if the variable starts with "{$" */
.colors-container [data-variable^=\{\$] {
display: none;
}
.colors-container [data-has-light-text="1"] {
color: white;
color: rgb(var(--swatch-text-light, 255, 255, 255));
}
[[/module]]
[[div_ class="colors-container"]]
[!-- Unfortunately I can only support a limited number of colours, because each possible slot needs to be hardcoded --]
[!-- I can use the CSS variable name to reliably determine whether or not a colour has been provided, because it shouldn't contain any fancy formatting that would preclude it from being used in a CSS attribute --]
[!-- If a colour is not provided, it should not take up any space --]
[!-- Support up to six primary colours --]
[[div_ class="colors"]]
[[div_ class="color" style="background-color: rgb(var(--dark-accent));" data-variable="--dark-accent" data-has-light-text="1"]]
Industrial Sludge[[span class="css-variable"]]@@--dark-accent@@[[/span]][[span class="css-variable"]]rgb(63, 9, 143)[[/span]]
[[/div]]
[[div_ class="color" style="background-color: rgb(var(--dark-gray-monochrome));" data-variable="--dark-gray-monochrome" data-has-light-text="1"]]
Bottom of the Drain[[span class="css-variable"]]@@--dark-gray-monochrome@@[[/span]][[span class="css-variable"]]rgb(26, 24, 26)[[/span]]
[[/div]]
[[div_ class="color" style="background-color: rgb(var({$color3-variable}));" data-variable="{$color3-variable}" data-has-light-text="{$color3-has-light-text}"]]
{$color3-name}[[span class="css-variable"]]@@{$color3-variable}@@[[/span]][[span class="css-variable"]]{$color3-info}[[/span]]
[[/div]]
[[div_ class="color" style="background-color: rgb(var({$color4-variable}));" data-variable="{$color4-variable}" data-has-light-text="{$color4-has-light-text}"]]
{$color4-name}[[span class="css-variable"]]@@{$color4-variable}@@[[/span]][[span class="css-variable"]]{$color4-info}[[/span]]
[[/div]]
[[div_ class="color" style="background-color: rgb(var({$color5-variable}));" data-variable="{$color5-variable}" data-has-light-text="{$color5-has-light-text}"]]
{$color5-name}[[span class="css-variable"]]@@{$color5-variable}@@[[/span]][[span class="css-variable"]]{$color5-info}[[/span]]
[[/div]]
[[div_ class="color" style="background-color: rgb(var({$color6-variable}));" data-variable="{$color6-variable}" data-has-light-text="{$color6-has-light-text}"]]
{$color6-name}[[span class="css-variable"]]@@{$color6-variable}@@[[/span]][[span class="css-variable"]]{$color6-info}[[/span]]
[[/div]]
[[/div]]
[!-- Support up to twelve subcolours --]
[[div_ class="subcolors"]]
[[div_ class="color" style="background-color: rgb(var(--sky-at-dawn));" data-variable="--sky-at-dawn" data-has-light-text="1"]]
Dawn[[span class="css-variable"]]@@--sky-at-dawn@@[[/span]][[span class="css-variable"]]@@ @@[[/span]]
[[/div]]
[[div_ class="color" style="background-color: rgb(var(--sky-at-morning));" data-variable="--sky-at-morning" data-has-light-text="{$subcolor2-has-light-text}"]]
Morning[[span class="css-variable"]]@@--sky-at-morning@@[[/span]][[span class="css-variable"]]@@ @@[[/span]]
[[/div]]
[[div_ class="color" style="background-color: rgb(var(--sky-at-daytime));" data-variable="--sky-at-daytime" data-has-light-text="{$subcolor3-has-light-text}"]]
Daytime[[span class="css-variable"]]@@--sky-at-daytime@@[[/span]][[span class="css-variable"]]@@ @@[[/span]]
[[/div]]
[[div_ class="color" style="background-color: rgb(var(--sky-at-evening));" data-variable="--sky-at-evening" data-has-light-text="{$subcolor4-has-light-text}"]]
Evening[[span class="css-variable"]]@@--sky-at-evening@@[[/span]][[span class="css-variable"]]@@ @@[[/span]]
[[/div]]
[[div_ class="color" style="background-color: rgb(var(--sky-at-dusk));" data-variable="--sky-at-dusk" data-has-light-text="1"]]
Dusk[[span class="css-variable"]]@@--sky-at-dusk@@[[/span]][[span class="css-variable"]]@@ @@[[/span]]
[[/div]]
[[div_ class="color" style="background-color: rgb(var(--sky-at-night));" data-variable="--sky-at-night" data-has-light-text="1"]]
Night[[span class="css-variable"]]@@--sky-at-night@@[[/span]][[span class="css-variable"]]@@ @@[[/span]]
[[/div]]
[[div_ class="color" style="background-color: rgb(var({$subcolor7-variable}));" data-variable="{$subcolor7-variable}" data-has-light-text="{$subcolor7-has-light-text}"]]
{$subcolor7-name}[[span class="css-variable"]]@@{$subcolor7-variable}@@[[/span]][[span class="css-variable"]]{$subcolor7-info}[[/span]]
[[/div]]
[[div_ class="color" style="background-color: rgb(var({$subcolor8-variable}));" data-variable="{$subcolor8-variable}" data-has-light-text="{$subcolor8-has-light-text}"]]
{$subcolor8-name}[[span class="css-variable"]]@@{$subcolor8-variable}@@[[/span]][[span class="css-variable"]]{$subcolor8-info}[[/span]]
[[/div]]
[[div_ class="color" style="background-color: rgb(var({$subcolor9-variable}));" data-variable="{$subcolor9-variable}" data-has-light-text="{$subcolor9-has-light-text}"]]
{$subcolor9-name}[[span class="css-variable"]]@@{$subcolor9-variable}@@[[/span]][[span class="css-variable"]]{$subcolor9-info}[[/span]]
[[/div]]
[[div_ class="color" style="background-color: rgb(var({$subcolor10-variable}));" data-variable="{$subcolor10-variable}" data-has-light-text="{$subcolor10-has-light-text}"]]
{$subcolor10-name}[[span class="css-variable"]]@@{$subcolor10-variable}@@[[/span]][[span class="css-variable"]]{$subcolor10-info}[[/span]]
[[/div]]
[[div_ class="color" style="background-color: rgb(var({$subcolor11-variable}));" data-variable="{$subcolor11-variable}" data-has-light-text="{$subcolor11-has-light-text}"]]
{$subcolor11-name}[[span class="css-variable"]]@@{$subcolor11-variable}@@[[/span]][[span class="css-variable"]]{$subcolor11-info}[[/span]]
[[/div]]
[[div_ class="color" style="background-color: rgb(var({$subcolor12-variable}));" data-variable="{$subcolor12-variable}" data-has-light-text="{$subcolor12-has-light-text}"]]
{$subcolor12-name}[[span class="css-variable"]]@@{$subcolor12-variable}@@[[/span]][[span class="css-variable"]]{$subcolor12-info}[[/span]]
[[/div]]
[[/div]]
[[/div]]
+ 源代码
[[collapsible show="+ 显示源代码" hide="- 隐藏源代码"]]
[[code type="CSS"]]
/* - == === BHL VARIABLES === == - */
/* This is a BHL theme, which is configuration-based, so the root element
* contains variables that will affect the whole theme
*/
:root {
/* S-CSS-P integration */
--theme-base: "black-highlighter";
--theme-id: "swirling-ashes";
--theme-name: "Swirling Ashes Theme";
/* Colours */
--dark-gray-monochrome: 26, 24, 26;
--swatch-topmenu-bg-color: var(--dark-gray-monochrome);
--dark-accent: 63, 9, 143;
--medium-accent: 81, 13, 181;
--bright-accent: 105, 49, 186;
--pale-accent: 128, 80, 200;
/* Sky */
--sky-at-dawn: 236, 112, 99;
--sky-at-morning: 174, 214, 241;
--sky-at-daytime: 249, 231, 159;
--sky-at-evening: 248, 196, 113;
--sky-at-dusk: 140, 50, 70;
--sky-at-night: 50, 40, 67;
--sky-length: 15;
--sky-time: 60s;
/* Header adjustments */
--header-title: "Rat's Nest";
--header-subtitle: "let's begin at the end";
/* Delete the default header background */
--gradient-header: linear-gradient(transparent, transparent);
--diagonal-stripes: linear-gradient(transparent, transparent);
}
:root:lang(cn) {
/* Header adjustments */
--header-title: "鼠巢";
--header-subtitle: "让我们从结局开始";
}
/* - == === HEADER BACKGROUNDS === == - */
/* The header is made up of a million different stacked backgrounds.
* Instead of fucking about with z-index, I've added backgrounds to
* the ::before and ::after of various full-page elements in their
* natural stacking order.
*/
/* The following pseudoelements each contain a different part of the
* header background. They need to be drawn precisely over the header
* and made unclickable so they don't interfere with the links up there.
* They appear on the page in this order, so they'll also be drawn on
* top of each other in this order.
*/
body::before,
div#container-wrap-wrap::before,
div#container-wrap::before,
div#container-wrap-wrap::after,
body::after {
content: "";
position: absolute;
height: var(--header-height-on-desktop); width: 100%; top: 0; left: 0;
pointer-events: none;
}
/* The sky, which loops through a series of colours to evoke the
* unstoppable passing of time
*/
body::before {
background: linear-gradient(
to top,
rgb(var(--sky-at-morning)) 0%,
rgb(var(--sky-at-morning)) 11%,
rgb(var(--sky-at-daytime)) 22%,
rgb(var(--sky-at-daytime)) 33%,
rgb(var(--sky-at-evening)) 44%,
rgb(var(--sky-at-dusk)) 55%,
rgb(var(--sky-at-night)) 66%,
rgb(var(--sky-at-night)) 77%,
rgb(var(--sky-at-dawn)) 88%,
rgb(var(--sky-at-morning)) 100%
);
background-size: 100% calc(var(--header-height-on-desktop)
* var(--sky-length));
animation: sky linear var(--sky-time) infinite;
}
@keyframes sky {
from { background-position: 0 0; }
to {
background-position: 0 calc(var(--header-height-on-desktop)
* var(--sky-length));
}
}
/* The city skyline */
div#container-wrap-wrap::before {
background: url('https://scp-wiki.wdfiles.com/local--files/theme%3Aswirling-ashes/skyline.png');
background-size: auto var(--header-height-on-desktop);
}
/* Two backgrounds: a white and blurred shine on the buildings,
* taken from a brightness threshold of the original skyline
* image; and a white-to-transparent gradient that uses the
* original skyline image as a clipping mask. These appear in
* the day and fade for the night to represent the sun's
* reflection on the buildings.
*/
div#container-wrap::before {
background: url('https://scp-wiki.wdfiles.com/local--files/theme%3Aswirling-ashes/skyline-whitewash.png'),
url('https://scp-wiki.wdfiles.com/local--files/theme%3Aswirling-ashes/skyline-highlight.png');
background-size: auto var(--header-height-on-desktop);
animation: shine ease-in-out var(--sky-time) infinite;
}
@keyframes shine {
0%, 40%, 100% { opacity: 0.2; }
55%, 77% { opacity: 0; }
}
/* The final two pseudoelements contain the ashes: clouds that
* roll past the city at ground level. Two elements are needed
* because the two layers of clouds have different widths and
* move at different speeds.
* The fade animation affords an unobscured view of the city
* every 3rd night.
*/
div#container-wrap-wrap::after, body::after {
background-size: var(--ashes-width) var(--header-height-on-desktop);
background-repeat: repeat-x;
animation: ashes-move linear var(--ashes-move-duration),
ashes-fade ease calc(var(--sky-time) * 3);
animation-iteration-count: infinite;
animation-fill-mode: both;
}
div#container-wrap-wrap::after {
background-image: url('https://scp-wiki.wdfiles.com/local--files/theme%3Aswirling-ashes/ashes-large.png');
--ashes-move-duration: 27s;
--ashes-width: 500px;
--ashes-opacity: 0.5;
}
body::after {
background-image: url('https://scp-wiki.wdfiles.com/local--files/theme%3Aswirling-ashes/ashes-small.png');
--ashes-move-duration: 20s;
--ashes-width: 800px;
--ashes-opacity: 0.4;
}
@keyframes ashes-move {
from { background-position: 0 0; }
to { background-position: var(--ashes-width) 0; }
}
@keyframes ashes-fade {
0%, 85%, 96%, 100% { opacity: var(--ashes-opacity); }
88.66%, 92.33% { opacity: 0.1; }
}
/* - == === BODY BACKGROUNDS === == - */
/* This psuedolement contains the faint purple patchy smog on the page
* just below the header, as a thematic transition from dark to light.
*/
#content-wrap { position: relative; }
#content-wrap::before {
content: "";
position: absolute;
height: 100%; width: 100%; top: 0; left: 0;
background-repeat: repeat-x;
pointer-events: none;
background-image: url('https://scp-wiki.wdfiles.com/local--files/theme%3Aswirling-ashes/purple-smoke.png');
opacity: 0.2;
}
/* - == === MISCELLANEOUS === == - */
/* Add a pinch of extra contrast to the login info */
#login-status {
background: rgba(var(--dark-accent), 0.3);
padding-left: 0.5rem;
}
/* Respect user motion settings */
@media screen and (prefers-reduced-motion: reduce) {
body::before,
div#container-wrap::before,
div#container-wrap-wrap::after,
body::after {
animation: none;
}
}
[[/code]]
[[code type="CSS"]]
:root {
--bright-accent: 105, 49, 186;
--medium-accent: 81, 13, 181;
--dark-accent: 63, 9, 143;
}
[[/code]]
[[/collapsible]]
[[/iftags]]
[[module CSS]]
@import url("https://scp-wiki-cn.wdfiles.com/local--code/theme%3Aswirling-ashes/1");
[[/module]]
[!--
为英站跨维基模块开发的自定义样式组件,基于由 7happy7 与 Sekai-s 开发的中分跨维基模块。
请注意截至 2022-03-15,新版英站跨维基模块仍未在 SCP 维基启用,所以该自定义样式组件将不会生效。
跨维基模块:http://scp-wiki-cn.wikidot.com/nav:interwiki
源代码:https://github.com/scpwiki/interwiki
亦请参见:https://scpwiki.com/how-to-create-a-branch-of-the-scp-foundation
用法:
在需要修改跨维基模块样式的页面中:
[[include :scp-wiki-cn:component:interwiki-style
| priority=X
| type=<跨维基模块类型>
| override=X
| theme=<CSS 样式表的链接>
| css=<经 URI 转义的 CSS>
]]
“priority” 的值必须被设定为比该版式所扩展的版式的 priority 大 1 的数。
举例:
- 网站的基本版式(对于 SCP 维基来说,就是 Sigma-9)的 priority 为 0。
- 一个修改了 Sigma-9 的用在页面中的 CSS 版式(比如一个 Sigma-9 扩展版式)的 priority 应设为 1。
- 黑市版式是黑色标记笔的扩展版式,而后者的 priority 为 2;则黑市版式的 priority 应设为 3。
“type” 的值必须被指定,侧边栏的 type 为 sidebar,而 _404 页面的 type 为 404。
“override” 的值是可选的,当填入 1 时,此自定义样式将强制覆盖同 priority 的其他自定义样式。
“theme” 的值是可选的,可以填入 CSS 样式表(比如一个 CSS 版式)的 URL。
“css” 的值是可选的,且可以是直接应用至跨维基模块的经 URI 转义的 CSS。若需转义 CSS,请参见 https://meyerweb.com/eric/tools/dencoder
--]
[[embed]]
<iframe src="//interwiki.scpwikicn.com/styleFrame.html?priority=1&type=sidebar&override={$override}&theme=https://scp-wiki-cn.wdfiles.com/local--code/theme%3Aswirling-ashes/2&css={$css}" style="display: none"></iframe>
[[/embed]]
[!-- 偷看代码被我抓到了吧(仓鼠迷因) --]
[[iftags +组件]]
若要使用排版工具组,在页面顶部加入这段代码:
> @@[[include :backrooms-wiki-cn:component:layout-helpers]]@@
详细的使用方法请见[[[layout-helpers|排版工具组 2.0 - 说明文档]]]。
[[/iftags]]
[[iftags -组件]]
[[div style="display:none"]]
[[/iftags]]
[[module CSS show="true"]]
:root {
--lh-red: #c0392b;
--lh-blue: #2980b9;
--lh-green: #27ae60;
--lh-dark-green: #16a085;
--lh-purple: #8e44ad;
--lh-orange: #e67e22;
--lh-yellow: #f1c40f;
--lh-paper-bg: 255, 251, 240;
--lh-string-color: 192, 57, 43;
--lh-book-color: var(--gray-monochrome);
--lh-tape-color: 90,90,90,0.3;
--lh-white-bg: 249,249,249;
--lh-dark-bg: 50, 50, 50;
--lh-highlighter: var(--bright-accent);
--lh-border-color: var(--gray-monochrome);
--lh-wiki-note-color: var(--bright-accent)
}
/**
* 旧代码合集
* 为了向下兼容而保留
*/
.grid-container{display:flex;flex-direction:row;flex-wrap:wrap;width:100%}.grid-container,.grid-container [class*=grid]{box-sizing:border-box}[class*=grid]{padding:5px}.grid{width:100%}.grid-large{width:75%}.grid-big{width:50%}.grid-medium{width:33.33%}.grid-small{width:25%}@media screen and (min-width:768px){.wd-grid-large{width:75%}.wd-grid,.wd-grid-big{width:50%}.wd-grid-medium{width:33.33%}.wd-grid-small{width:25%}}.text-hover-hide{opacity:0;transition:opacity .3s}.text-hover-hide:hover{opacity:1}.text-block-hide{background:rgb(var(--black-monochrome));color:rgb(var(--black-monochrome));transition:background .3s}.text-block-hide:hover{background:0 0}.text-blur-hide,.text-blur-hover-hide{filter:blur(.3rem);-webkit-filter:blur(.3rem) transition: blur .3s}.text-blur-hover-hide:hover{filter:blur(0);-webkit-filter:blur(0)}.lyric-box{text-align:center;font-size:1.05rem;display:flex;flex-direction:column;flex-wrap:wrap;justify-content:center}.lyric-box p{margin:1.5em auto}.lyric-box.with-bigger-line p{margin:3em auto}
/**
* 便签纸
* notepaper
*/
.notepaper {
background: linear-gradient(rgb(var(--lh-paper-bg)) 95%, #ddd 0);
line-height: 2em;
background-size: 100% 2em;
background-attachment: local;
border: 2em solid rgb(var(--lh-paper-bg));
box-shadow: 0 0.1rem 0.3rem rgba(0,0,0,0.2);
padding: 0;
margin: 1em auto;
box-sizing: border-box;
position: relative
}
.notepaper p {
margin: 0;
font-size: 1.05rem;
letter-spacing: 0.1rem;
line-height: inherit
}
.notepaper.narrow,
.notepaper.wide {
width: 90%
}
@media screen and (min-width:768px){
.notepaper.narrow {
width: 50%
}
.notepaper.wide {
width: 75%
}
}
.notepaper.tight {
border-width: 1rem;
border-left-width: 1.2rem;
border-right-width: 1.2rem;
line-height: 1.8em;
background-size: 100% 1.8em;
font-size: 13px
}
.notepaper.with-string::before {
content: '';
width: 0.5em;
height: 6rem;
background: rgb(var(--lh-string-color));
top: -2rem; right: -1rem;
display: block;
position: absolute;
box-shadow: 0 0.1em 0.2em rgba(0,0,0,0.2);
clip-path: polygon(-100% -100%,100% 0%,100% 100%,50% 98%,0% 100%);
}
.notepaper.with-tape::before {
content: '';
border: 1px solid #ddd;
background: rgba(var(--lh-tape-color));
width: 1.5em;
height: 4em;
transform: rotate(45deg);
display: block;
position: absolute;
top: -3em;
left: -1.8em
}
.notepaper.tight.with-string::before {
top: -1rem;
right: -0.25rem;
}
.notepaper.tight.with-tape::before {
top: -2.5em;
left: -1.3em
}
.notepaper.page {
min-height: 36em;
counter-increment: page;
display: flex;
flex-direction: column;
justify-content: space-between
}
@media screen and (min-width:768px){
.notepaper.page {
width: 70%
}
}
.notepaper.page:after {
content: counter(page);
display: block;
text-align: center
}
.notepaper-group {
counter-reset: page;
}
.book-pattern {
display: flex;
flex-wrap: wrap;
flex-direction: row
}
.book-pattern .notepaper.page:not(.notepaper > .notepaper) {
width: 100%
}
@media screen and (min-width: 768px) {
.book-pattern .notepaper.page:not(.notepaper > .notepaper) {
width: 50%
}
}
.book-wrapper {
background: rgb(var(--lh-book-color));
padding: 0.5rem;
box-shadow: 0 0.1rem 0.2rem rgba(0,0,0,0.2);
border-radius: 5px;
margin: 1rem auto
}
@media screen and (min-width: 768px) {
.book-wrapper .notepaper {
margin: 0
}
}
/**
* 文字修饰
*/
.text-highlighted {
position: relative
}
.text-highlighted::before {
content: "";
position: absolute;
height: 0.9em;
bottom: 2px;
left: -2px;
width: 105%;
z-index: -1;
background-color: rgb(var(--lh-highlighter));
opacity: .6;
transform: skew(-15deg);
transition: opacity .2s ease;
border-radius: 3px 8px 10px 6px;
transition: 0.1s ease background-color;
}
.text-underlined {
text-decoration: underline;
text-underline-offset: 4px;
text-decoration-thickness: 2px;
text-decoration-color: rgb(var(--lh-highlighter))
}
.text-wavy {
text-decoration: underline wavy;
text-underline-offset: 4px;
text-decoration-color: rgb(var(--lh-highlighter))
}
.text-circled,
.text-squared {
display: inline-block;
border: 2px solid rgb(var(--lh-highlighter));
border-radius: 100%;
box-sizing: border-box
}
.text-squared { border-radius: 0 }
.text-shadow { text-shadow: 0.075em 0.075em 0 rgb(var(--lh-highlighter)) }
.text-highlighted.td-red::before { background: var(--lh-red) }
.text-circled.td-red, .text-squared.td-red { border-color: var(--lh-red) }
.text-underlined.td-red, .text-wavy.td-red { text-decoration-color: var(--lh-red) }
.text-highlighted.td-blue::before { background: var(--lh-blue) }
.text-circled.td-blue, .text-squared.td-blue { border-color: var(--lh-blue) }
.text-underlined.td-blue, .text-wavy.td-blue { text-decoration-color: var(--lh-blue) }
.text-highlighted.td-green::before { background: var(--lh-green) }
.text-circled.td-green, .text-squared.td-green { border-color: var(--lh-green) }
.text-underlined.td-green, .text-wavy.td-green { text-decoration-color: var(--lh-green) }
.text-highlighted.td-darkgreen::before { background: var(--lh-dark-green) }
.text-circled.td-darkgreen, .text-squared.td-darkgreen { border-color: var(--lh-dark-green) }
.text-underlined.td-darkgreen, .text-wavy.td-darkgreen { text-decoration-color: var(--lh-dark-green) }
.text-highlighted.td-purple::before { background: var(--lh-purple) }
.text-circled.td-purple, .text-squared.td-purple { border-color: var(--lh-purple) }
.text-underlined.td-purple, .text-wavy.td-purple { text-decoration-color: var(--lh-purple) }
.text-highlighted.td-yellow::before { background: var(--lh-yellow) }
.text-circled.td-yellow, .text-squared.td-yellow { border-color: var(--lh-yellow) }
.text-underlined.td-yellow, .text-wavy.td-yellow { text-decoration-color: var(--lh-yellow) }
.text-highlighted.td-orange::before { background: var(--lh-orange) }
.text-circled.td-orange, .text-squared.td-orange { border-color: var(--lh-orange) }
.text-underlined.td-orange, .text-wavy.td-orange { text-decoration-color: var(--lh-orange) }
/* 隐藏文字 */
.text-blank { color: rgba(0,0,0,0) }
.text-block {
background: rgb(var(--black-monochrome));
color: rgb(var(--black-monochrome));
}
.text-blur {
filter: blur(0.3em);
-webkit-filter: blur(0.3em)
}
.text-hoverback,
.text-selectback {
transition-duration: 0.3s;
transition-property: background, transform, color
}
.text-blank.text-hoverback:hover,
.text-blank.text-selectback::selection,
.text-blank.text-selectback *::selection { color: rgb(var(--black-monochrome)) }
.text-block.text-hoverback:hover { background: transparent!important }
.text-block.text-selectback::selection,
.text-block.text-selectback *::selection { color: rgb(var(--white-monochrome, 255, 255, 255)) }
.text-blur.text-hoverback:hover { filter: blur(0)!important; -webkit-filter: blur(0)!important }
/**
* 附加项
*/
.with-border, .with-box-style { border: 1px solid rgb(var(--bright-accent)) }
.with-border-dark { border: 1px solid rgb(var(--black-monochrome)) }
.with-border-light { border: 1px solid rgb(var(--white-monochrome)) }
.with-border-thick { border-width: 2px }
.with-shadow-sm { box-shadow: 0 0 0.1em rgba(0,0,0,0.2) }
.with-shadow { box-shadow: 0 0.1em 0.2em rgba(0,0,0,0.2) }
.with-shadow-lg { box-shadow: 0 0.15em 0.3em rgba(0,0,0,0.2) }
.with-shadow-xl { box-shadow: 0 0.2em 0.5em rgba(0,0,0,0.2) }
.with-shadow-xxl { box-shadow: 0 0.25em 0.8em rgba(0,0,0,0.2) }
.with-padding, .with-box-style { padding: 0.25em 1em }
.with-p-sm { padding: 0.125em 0.5em }
.with-p-lg { padding: 0.5em 2em }
.with-margin, .with-box-style { margin: 1em auto }
.with-m-sm { margin: 0.5em auto }
.with-m-lg { margin: 2em auto }
.with-narrow-width {
width: 90%!important;
margin-left: auto;
margin-right: auto
}
@media screen and (min-width: 768px) {
.with-narrow-width { width: 75%!important }
}
[class*="with-bg-"], [class*="with-bg-"] h1 { color: #fff!important }
.with-bg-red { background: var(--lh-red)!important }
.with-bg-blue { background: var(--lh-blue)!important }
.with-bg-green { background: var(--lh-green)!important }
.with-bg-darkgreen { background: var(--lh-dark-green)!important }
.with-bg-yellow { background: var(--lh-yellow)!important }
.with-bg-orange { background: var(--lh-orange)!important }
.with-bg-purple { background: var(--lh-purple)!important }
/**
* 删除类
*/
.offwith-shadow { box-shadow: none!important }
.offwith-border { border: none!important }
.offwith-padding, .offwith-pam { padding: 0!important }
.offwith-margin, .offwith-pam { margin: 0!important }
.offwith-width-limit {
width: auto!important;
margin-left: auto!important;
margin-right: auto!important
}
div[class*="grider"].offwith-grid-gap { grid-gap: 0!important }
/**
* 网格布局
*/
/* Gridder 容器 */
div[class*="gridder"] {
display: grid;
box-sizing: border-box;
grid-gap: 1rem;
padding: 0
}
div[class*="gridder"] * { box-sizing: border-box }
.gridder, .gridder-col-2 {
grid-template-columns: 1fr 1fr;
}
.gridder-col-3 {
grid-template-columns: repeat(3, 1fr);
}
.gridder-col-4 {
grid-template-columns: repeat(4, 1fr);
}
@media screen and (min-width: 768px) {
.pc-gridder, .pc-gridder-col-2 {
grid-template-columns: 1fr 1fr;
}
.pc-gridder-col-3 {
grid-template-columns: repeat(3, 1fr);
}
.pc-gridder-col-4 {
grid-template-columns: repeat(4, 1fr);
}
}
.spanner, .spanner-2 {
grid-column-start: span 2;
}
.spanner-3 {
grid-column-start: span 3;
}
/**
* 告示组件
*/
.signblock,
.signblock-dark,
.signblock-warn {
margin: 1rem auto;
box-shadow: 0 0.1rem 0.3rem rgba(0,0,0,0.4);
background: rgb(var(--lh-white-bg));
font-size: 1.05rem;
padding: 2rem
}
@media screen and (min-width: 768px) {
.signblock,
.signblock-dark,
.signblock-warn {
width: 75%
}
}
.signblock-dark,
.signblock-dark h1 {
background: rgb(var(--lh-dark-bg));
color: #fff
}
.signblock-warn,
.signblock-warn h1 {
background: var(--lh-red);
color: #fff
}
.signblock h1,
.signblock-dark h1,
.signblock-warn h1 {
text-align: center;
font-size: 2rem;
margin: 0;
font-weight: 700
}
.signblock-img {
display: flex;
flex-direction: row;
justify-content: center
}
.signblock-img img {
width: 8em
}
.signblock-footer {
font-size: 0.9em;
text-align: center;
margin: 0.5rem 0;
font-weight: bolder;
display: block
}
/**
* 报告
*/
.reportblock,
.reportblock-dark {
border: 2px solid rgb(var(--lh-border-color));
box-shadow: 0 0.1rem 0.2rem rgba(0,0,0,0.3);
background: rgb(var(--white-monochrome));
padding: 0.8rem 1.5rem;
padding-bottom: 0.4rem;
margin: 1.5rem auto;
margin-bottom: 1rem;
position: relative
}
.reportblock hr,
.reportblock-dark hr {
background-color: rgb(var(--lh-border-color));
margin-left: -1.5rem;
margin-right: -1.5rem
}
.reportblock h1:first-child,
.reportblock-dark h1:first-child {
position: absolute;
top: -1rem;
left: 1.5rem;
font-size: 110%;
font-weight: 600;
background: rgb(var(--lh-border-color));
color: #fff;
padding: 0.2rem 0.5rem;
margin: 0;
}
.reportblock-dark,
.reportblock-dark h1 {
border-color: rgb(var(--lh-white-bg));
background: rgb(var(--lh-dark-bg));
color: #fff
}
.reportblock-dark hr {
background-color: rgb(var(--lh-white-bg));
}
/* 更好的折叠框 */
.bettercollap {
margin: 1em 0;
}
.bettercollap .collapsible-block {
width: auto;
overflow: hidden;
border: 1px solid rgb(var(--lh-border-color))
}
.bettercollap .collapsible-block-content,
.bettercollap .collapsible-block-link {
background: rgb(var(--white-monochrome));
padding: 0.5em
}
.bettercollap .collapsible-block-content {
padding-left: 1em;
padding-right: 1em
}
.bettercollap .collapsible-block-link {
color: rgb(var(--lh-border-color));
background: rgb(var(--white-monochrome));
transition: .3s;
display: block;
}
.bettercollap .collapsible-block-link:hover,
.bettercollap .collapsible-block-unfolded .collapsible-block-link,
.styledcollap.bettercollap .collapsible-block-link {
color: rgb(var(--white-monochrome));
background: rgb(var(--lh-border-color))!important;
text-decoration: none
}
.bettercollap .collapsible-block-link:hover a { color: rgb(var(--white-monochrome)) }
.bettercollap .collapsible-block-link::before {
content: "\25BC";
display: inline-block;
margin-right: 0.5em;
transform: rotate(-90deg) scale(0.9)
}
.bettercollap .collapsible-block-unfolded .collapsible-block-link::before {
transform: rotate(0) scale(0.9)
}
.bettercollap .collapsible-block + .collapsible-block { border-top: none }
.styledcollap.bettercollap .collapsible-block {
border-radius: 2px;
box-shadow: 0 0.1rem 0.2rem rgba(0,0,0,0.3)
}
.styledcollap.bettercollap .collapsible-block-content {
background-color: rgb(var(--pale-gray-monochrome));
border-width: 3px
}
.styledcollap.bettercollap .collapsible-block-link:hover {
background: rgba(var(--lh-border-color),0.95)!important;
}
/**
* 提示框
*/
.infoblock {
color: #f1f1f1;
font-weight: bold;
background: #424242;
padding: 5px 5px 5px 5px;
border-radius: 4px;
margin: -0.5rem 0 1rem 0;
display: block;
width: fit-content;
padding-right: 25px;
}
.infoblock::before {
content: "ⓘ "
}
/**
* 单页迭代
*/
.offset-page:not(:target), .offset-page:target ~ div#u-default-page { display: none }
.offset-page:target { display: block }
[[/module]]
[[iftags -组件]]
[[/div]]
[[/iftags]]
[!-- 判断是否使用维基笔记 --]
[[iftags [[#ifexpr {$wiki-note} == (true) | - ]]]]
[[module CSS]]
/**
* 维基笔记
*/
div.wiki-note {
margin: 1rem 0;
border: 1px dashed rgb(var(--lh-wiki-note-color));
padding: 0 1rem;
position: relative;
text-align: left
}
div.wiki-note::before {
content: var(--lh-note-title, "批注");
color: rgb(var(--white-monochrome));
background: rgb(var(--lh-wiki-note-color));
font-size: 85%;
padding: 0 0.2rem;
position: absolute;
left: 1rem;
top: -0.5rem
}
[[/module]]
[[/iftags]]
[!-- 判断结束 --]
[[module CSS]]
:root {
--logo-image:url(https://arandintday.github.io/thebackhubscn/logo.svg);
}
.styledcollap.bettercollap .collapsible-block-link:hover {
background: rgba(var(--pale-gray-monochrome),0.95)!important;
}
.bettercollap .collapsible-block-link {
color: rgb(var(--dark-accent));
background: rgb(var(--white-monochrome));
}
.bettercollap .collapsible-block-link:hover,
.bettercollap .collapsible-block-unfolded .collapsible-block-link,
.styledcollap.bettercollap .collapsible-block-link {
color: rgb(var(--white-monochrome));
background: rgb(var(--dark-accent))!important;
text-decoration: none
}
.sd-container {
--class-0: 50,110,150;
}
:root:lang(cn) {
--header-title: "The Backrooms";
--header-subtitle: "Welcomed To The Small City In The South";
}
#page-title {
display: none;
}
blockquote {
box-shadow: 0.05rem 0.1rem 0.3rem rgba(var(--black-monochrome), 0.25);
}
.styled-quote {
background-color: rgb(var(--pale-gray-monochrome));
border-left: 0.5rem solid rgba(var(--gray-monochrome));
padding: 0.1rem 1rem;
margin: 0.5rem 0 0.5rem 0.25rem;
box-shadow: 0.05rem 0.1rem 0.3rem rgba(var(--dark-accent), 0.25);
}
.lightblock {
background-color: rgb(var(--pale-gray-monochrome));
padding: 0.01rem 1rem;
margin: 0.5rem 0 0.5rem 0.25rem;
box-shadow: 0 0.2rem 0.3rem rgba(var(--black-monochrome), 0.25);
}
[[/module]]
[[div class="meta-title"]]
[[size 125%]]Level BLHT-1 - “南方小城”[[/size]]
[[/div]]
[[div class="styled-quote"]]
[[iftags -组件]]
[[module CSS]]
@import url("https://hoah.backroomswiki.cn/Backrooms/component-level-class/main.css");
[[/module]]
[[div class="lang-{$lang} sd-container"]]
[[div class="top-box class-0 color-{$clour}" style="--custom-color: {$clour}"]]
[[div class="header-diamond"]]
[[div class="bg"]]
[[/div]]
[[div class="diamondy diamond-color class-0 color-{$clour}" style="--custom-color: {$clour}"]]
[[/div]]
[[div class="diamondy diamond-pattern"]]
[[/div]]
[[div class="diamondy diamond-image class-0 {$image}" style="--custom-image: url("{$image}")"]]
[[/div]]
[[/div]]
[[div class="gradient-box"]]
[[div class="top-text"]]
[[span class="lang-cn"]]生存难度:[[/span]][[span class="lang-tr"]]生存難度:[[/span]]
[[/div]]
[[div class="bottom-text"]]
[[span class="lang-cn"]]等级[[/span]][[span class="lang-tr"]]等級[[/span]] 0
[[/div]]
[[/div]]
[[/div]]
[[div class="bottom-box class-0"]]
* [[span class="{$one}"]]{$one}[[/span]][[span class="default"]]@@ @@[[/span]]
* [[span class="{$two}"]]{$two}[[/span]][[span class="default"]]@@ @@[[/span]]
* [[span class="{$three}"]]{$three}[[/span]][[span class="default"]]@@ @@[[/span]]
[[/div]]
[[/div]]
[[div style="display: none; [[iftags +组件]]display: initial;[[/iftags]]"]]
[[module css]]
.cntr td {
text-align: center;
}
[[/module]]
------
[[div class="blockquote" style="margin: 1rem 0;"]]
++* 翻译者须知:
从 2026 年 5 月 20 日起,后室英文维基开始使用[[[https://backrooms-wiki-cn.wikidot.com/component:sd-class|层级等级(后室英文维基)]]],全面替代此组件。最终的结果是,此组件从 {{component:level-class}} 变成了 {{component:old-level-class}};而 {{component:level-class}} 则被替换成了上述的新组件。
这导致后室英文维基所有使用了生存难度分级组件的页面,都自动更新成另一版本。中文维基不会跟进这一改动,亦不会重命名此组件。**译者可以自由选择在翻译过程中应用新版组件,使之与原文相同;也可以继续使用此组件,即不改动 [[include]] 代码。**
除了外形有所变化,新组件还新增了 1E-5E 的环境危害分级,并稍微扩展了自定义维度;因此部分页面可能有必要更换为新组件,才能正常显示。请译者自行甄别。
[[/div]]
+* 如何使用:
[[div class="code"]]
@@[[include :backrooms-wiki-cn:component:level-class@@
|class=等级
]]
[[/div]]
{{class}} 处的可用参数包括以下内容,支持简繁体及英文输入。
[[table class="wiki-content-table cntr"]]
[[row]]
[[hcell colspan="6"]]English[[/hcell]][[hcell colspan="6"]]简体中文[[/hcell]][[hcell colspan="6"]]繁體中文[[/hcell]]
[[/row]][[row]]
[[cell]]0[[/cell]][[cell]]1[[/cell]][[cell]]2[[/cell]][[cell]]3[[/cell]][[cell]]4[[/cell]][[cell]]5[[/cell]]
[[cell]]0[[/cell]][[cell]]1[[/cell]][[cell]]2[[/cell]][[cell]]3[[/cell]][[cell]]4[[/cell]][[cell]]5[[/cell]]
[[cell]]0[[/cell]][[cell]]1[[/cell]][[cell]]2[[/cell]][[cell]]3[[/cell]][[cell]]4[[/cell]][[cell]]5[[/cell]]
[[/row]][[row]]
[[cell colspan="6"]]unknown[[/cell]][[cell colspan="6"]]未知[[/cell]][[cell colspan="6"]]未知[[/cell]]
[[/row]][[row]]
[[cell colspan="6"]]habitable[[/cell]][[cell colspan="6"]]宜居[[/cell]][[cell colspan="6"]]宜居[[/cell]]
[[/row]][[row]]
[[cell colspan="6"]]deadzone[[/cell]][[cell colspan="6"]]死区[[/cell]][[cell colspan="6"]]死區[[/cell]]
[[/row]][[row]]
[[cell colspan="6"]]pending[[/cell]][[cell colspan="6"]]等待分级[[/cell]][[cell colspan="6"]]等待分級[[/cell]]
[[/row]][[row]]
[[cell colspan="6"]]n/a[[/cell]][[cell colspan="6"]]不适用[[/cell]][[cell colspan="6"]]不適用[[/cell]]
[[/row]][[row]]
[[cell colspan="6"]]amended[[/cell]][[cell colspan="6"]]修正[[/cell]][[cell colspan="6"]]修正[[/cell]]
[[/row]][[row]]
[[cell colspan="6"]]omega[[/cell]][[cell colspan="6"]]终结[[/cell]][[cell colspan="6"]]終結[[/cell]]
[[/row]]
[[/table]]
该组件支持简繁切换,如下方代码所示:
[[div class="code"]]
@@[[include :backrooms-wiki-cn:component:level-class@@
|lang=cn/tr
|class=等级
]]
[[/div]]
在 {{lang}} 处选择语言,cn 表示简体中文,tr 表示繁体中文,不填默认选择简体中文。
------
++* 自定义等级
[[div class="code"]]
@@[[include :backrooms-wiki-cn:component:level-class@@
|lang=cn/tr
|class=等级名字
|color=#000000(带有井号的十六进制色号代码。)
|image=链接(至图片的链接。)
|one=在这
|two=随便
|three=放文字
@@]]@@
[[/div]]
+* 使用 CSS 进行自定义:
你可以使用 CSS 进行额外的自定义,将代码放入到 {{@@[[module css]]@@}} 中或者是放入到页面的版式内都可以。**在这一组件中,不要把 {{@@[[module css]]@@}} 放在 {{@@[[include]]@@}} 里面,把它放在那个的下面或者是页面的顶部或底部。**
将这些代码放入到你的页面/版式中以编辑所有的颜色,因为组件的 {{|color=}} 部分仅能控制背景:
[[div class="code"]]
@@[[module css]]@@
.sd-container {
@@ /* 字体 */@@
@@ --sd-font: Poppins, Noto Sans SC, Noto Serif SC;@@
@@ /* 边框 */@@
@@ --sd-border: var(--gray-monochrome); /* 大多数等级 */@@
@@ --sd-border-secondary: 0, 0, 0; /* 不适用 */@@
@@ --sd-border-deadzone: 20, 0, 0; /* 死区 */@@
@@ /* 标志 */@@
@@ --sd-symbol: var(--sd-border) !important; /* 大多数标志 */@@
@@ --sd-symbol-secondary: 255, 255, 255; /* 4 级以上的是白色 */@@
@@ /* 文本 */@@
@@ --sd-bullets: var(--sd-border) !important; /* 点句符文本颜色 */@@
@@ --sd-text: var(--swatch-text-secondary-color); /* 顶部框文本颜色 */@@
@@ /* 等级颜色 */@@
@@ --class-0: 247, 227, 117;@@
@@ --class-1: 255, 201, 14;@@
@@ --class-2: 245, 156, 0;@@
@@ --class-3: 249, 90, 0;@@
@@ --class-4: 254, 23, 1;@@
@@ --class-5: 175, 6, 6;@@
@@ --class-unknown: 38, 38, 38;@@
@@ --class-habitable: 26, 128, 111;@@
@@ --class-deadzone: 44, 13, 12;@@
@@ --class-pending: 182, 182, 182;@@
@@ --class-n-a: 38, 38, 38;@@
@@ --class-amended: 185, 135, 212;@@
@@ --class-omega: 25, 46, 255;@@
}
@@[[/module]]@@
[[/div]]
++* 旧版颜色:
如果你不喜欢新版的样式,想要用回旧版的红色边框色,只需要在你的页面中与组件一同引入下方的代码:
[[div class="code"]]
@@[[module css]]@@
.sd-container {
@@ --sd-border: 90, 29, 27;@@
@@ --sd-image: 90, 29, 27;@@
@@ --sd-symbol: 90, 29, 27;@@
}
@@[[/module]]@@
[[/div]]
[[/div]]
[[/iftags]]
[[module css]]
.sd-container {
--sd-border: 90, 29, 27;
--sd-symbol: 90, 29, 27;
--sd-image: 90, 29, 27;
}
:root {
--sd-border-deadzone: 90, 29, 27;
}
.top-box .top-text p {
color: rgb(255, 255, 255);
}
.top-box .top-text p {
color: rgb(255, 255, 255);
}
.top-box .bottom-text p, .top-box .bottom-text::after {
color: rgb(255, 255, 255);
}
.bottom-box {
color: rgb(255, 255, 255);
}
.bottom-box ul li {
color: rgb(90, 29, 27);
}
.bottom-box ul li::before {
background: rgb(90, 29, 27);
}
.header-diamond .diamond-image {
position: absolute;
left: 0px;
}
[[/module]]
[[module css]]
@import url(https://brsandbox-mini.wikidot.com/local--files/component:wr-level-class/wr-level-class-css.css);
[[/module]]
[[module css]]
/* 0-to-5 */
/* class-0 */
:is(.class-0) .header-diamond .diamond-image {
-webkit-mask-size: 78%;
-webkit-mask-repeat: no-repeat;
-webkit-mask-size: 78%;
-webkit-mask-repeat: no-repeat;
}
/* class-1 */
:is(.class-1) .header-diamond .diamond-image {
-webkit-mask-size: 78%;
-webkit-mask-repeat: no-repeat;
-webkit-mask-size: 78%;
-webkit-mask-repeat: no-repeat;
}
/* class-2 */
:is(.class-2) .header-diamond .diamond-image {
-webkit-mask-size: 78%;
-webkit-mask-repeat: no-repeat;
-webkit-mask-size: 78%;
-webkit-mask-repeat: no-repeat;
}
/* class-3 */
:is(.class-3) .header-diamond .diamond-image {
-webkit-mask-size: 78%;
-webkit-mask-repeat: no-repeat;
-webkit-mask-size: 78%;
-webkit-mask-repeat: no-repeat;
}
/* class-4 */
:is(.class-4) .header-diamond .diamond-image {
-webkit-mask-size: 78%;
-webkit-mask-repeat: no-repeat;
-webkit-mask-size: 78%;
-webkit-mask-repeat: no-repeat;
}
/* class-5 */
:is(.class-5) {
--sd-symbol: var(--sd-symbol-secondary);
}
:is(.class-5) .header-diamond .diamond-image {
-webkit-mask-size: 78%;
-webkit-mask-repeat: no-repeat;
-webkit-mask-size: 78%;
-webkit-mask-repeat: no-repeat;
}
/* ==== weird classes ==== */
/* habitable */
:is(.class-habitable, .class-宜居) .header-diamond .diamond-image {
-webkit-mask-size: 78%;
-webkit-mask-repeat: no-repeat;
-webkit-mask-size: 78%;
-webkit-mask-repeat: no-repeat;
}
:is(.sd-container[class*="{"], .lang-cn) :is(.class-habitable, .class-宜居).top-box .bottom-text::after {
content: "宜居";
}
.lang-tr :is(.class-habitable, .class-宜居).top-box .bottom-text::after {
content: "宜居";
}
:is(.sd-container[class*="{"], .lang-cn, .lang-tr) :is(.class-habitable, .class-宜居).bottom-box ul li:nth-child(2) > .default::after {
content: "宜居聚居地";
}
/* deadzone */
:is(.class-deadzone, .class-死区, .class-死區) .header-diamond .diamond-image {
-webkit-mask-size: 78%;
-webkit-mask-repeat: no-repeat;
-webkit-mask-size: 78%;
-webkit-mask-repeat: no-repeat;
}
:is(.sd-container[class*="{"], .lang-cn) :is(.class-deadzone, .class-死区, .class-死區).top-box .bottom-text::after {
content: "死区";
}
.lang-tr :is(.class-deadzone, .class-死区, .class-死區).top-box .bottom-text::after {
content: "死區";
}
:is(.sd-container[class*="{"], .lang-cn) :is(.class-deadzone, .class-死区, .class-死區).bottom-box ul li:nth-child(1) > .default::after {
content: "危险环境";
}
.lang-tr :is(.class-deadzone, .class-死区, .class-死區).bottom-box ul li:nth-child(1) > .default::after {
content: "危險環境";
}
:is(.sd-container[class*="{"], .lang-cn) :is(.class-deadzone, .class-死区, .class-死區).bottom-box ul li:nth-child(2) > .default::after {
content: "极度难以生存";
}
.lang-tr :is(.class-deadzone, .class-死区, .class-死區).bottom-box ul li:nth-child(2) > .default::after {
content: "極度難以生存";
}
:is(.sd-container[class*="{"], .lang-cn) :is(.class-deadzone, .class-死区, .class-死區).bottom-box ul li:nth-child(3) > .default::after {
content: "潜在危险实体";
}
.lang-tr :is(.class-deadzone, .class-死区, .class-死區).bottom-box ul li:nth-child(3) > .default::after {
content: "潛在危險實體";
}
/* pending */
:is(.class-pending, .class-等待分级, .class-等待分級) .header-diamond .diamond-image {
-webkit-mask-size: 78%;
-webkit-mask-repeat: no-repeat;
-webkit-mask-size: 78%;
-webkit-mask-repeat: no-repeat;
}
:is(.sd-container[class*="{"], .lang-cn) :is(.class-pending, .class-等待分级, .class-等待分級).bottom-box ul li:nth-child(1) > .default::after {
content: "未知安全等级";
}
.lang-tr :is(.class-pending, .class-等待分级, .class-等待分級).bottom-box ul li:nth-child(1) > .default::after {
content: "未知安全等級";
}
:is(.sd-container[class*="{"], .lang-cn) :is(.class-pending, .class-等待分级, .class-等待分級).bottom-box ul li:nth-child(3) > .default::after {
content: "未知实体数量";
}
.lang-tr :is(.class-pending, .class-等待分级, .class-等待分級).bottom-box ul li:nth-child(3) > .default::after {
content: "未知實體數量";
}
/* N/A */
:is(.class-n\/a, .class-不适用, .class-不適用).top-box .header-diamond .diamond-image {
-webkit-mask-size: 78%;
-webkit-mask-repeat: no-repeat;
-webkit-mask-size: 78%;
-webkit-mask-repeat: no-repeat;
}
:is(.sd-container[class*="{"], .lang-cn) :is(.class-n\/a, .class-不适用, .class-不適用).bottom-box ul li:nth-child(2) > .default::after {
content: "不存在物质";
}
.lang-tr :is(.class-n\/a, .class-不适用, .class-不適用).bottom-box ul li:nth-child(2) > .default::after {
content: "不存在物質";
}
/* omega */
:is(.class-omega, .class-终结, .class-終結).top-box .header-diamond .diamond-image {
-webkit-mask-size: 78%;
-webkit-mask-repeat: no-repeat;
-webkit-mask-size: 78%;
-webkit-mask-repeat: no-repeat;
}
:is(.sd-container[class*="{"], .lang-cn) :is(.class-omega, .class-终结, .class-終結).bottom-box ul li:nth-child(2) > .default::after {
content: "机密属性";
}
.lang-tr :is(.class-omega, .class-终结, .class-終結).bottom-box ul li:nth-child(2) > .default::after {
content: "機密屬性";
}
/* amended */
:is(.class-amended, .class-修正, .class-运变, .class-運變).top-box .header-diamond .diamond-image {
-webkit-mask-size: 78%;
-webkit-mask-repeat: no-repeat;
-webkit-mask-size: 78%;
-webkit-mask-repeat: no-repeat;
}
:is(.class-amended, .class-修正, .class-运变, .class-運變) {
--sd-symbol: var(--sd-symbol-secondary);
}
:is(.sd-container[class*="{"], .lang-cn, .lang=tr) :is(.class-amended, .class-修正, .class-运变, .class-運變).top-box .bottom-text::after {
content: "修正";
}
/* unknown */
:is(.class-unknown, .class-未知).top-box .header-diamond .diamond-image {
-webkit-mask-size: 78%;
-webkit-mask-repeat: no-repeat;
-webkit-mask-size: 78%;
-webkit-mask-repeat: no-repeat;
}
:is(.sd-container[class*="{"], .lang-cn) :is(.class-unknown, .class-未知).top-box .bottom-text::after {
content: "未分级";
}
.lang-tr :is(.class-unknown, .class-未知).top-box .bottom-text::after {
content: "未分級";
}
:is(.sd-container[class*="{"], .lang-cn) :is(.class-unknown, .class-未知).bottom-box ul li:nth-child(1) > .default::after {
content: "神秘属性";
}
.lang-tr :is(.class-unknown, .class-未知).bottom-box ul li:nth-child(1) > .default::after {
content: "神秘屬性";
}
:is(.sd-container[class*="{"], .lang-cn, .lang-tr) :is(.class-unknown, .class-未知).bottom-box ul li:nth-child(2) > .default::after {
content: "未知";
}
:is(.sd-container[class*="{"], .lang-cn) :is(.class-unknown, .class-未知).bottom-box ul li:nth-child(3) > .default::after {
content: "未知实体数";
}
.lang-tr :is(.class-unknown, .class-未知).bottom-box ul li:nth-child(3) > .default::after {
content: "未知實體數";
}
[[/module]]
[[div style="display: none; [[iftags +组件]]display: initial;[[/iftags]]"]]
[[module css]]
.cntr td {
text-align: center;
}
[[/module]]
------
+* 如何使用:
[[div class="code"]]
@@[[include :brsandbox-mini:component:wr-level-class@@
|class=等级
]]
[[/div]]
{{class}} 处的可用参数包括以下内容,支持简繁体及英文输入。
[[table class="wiki-content-table cntr"]]
[[row]]
[[hcell colspan="6"]]English[[/hcell]][[hcell colspan="6"]]简体中文[[/hcell]][[hcell colspan="6"]]繁體中文[[/hcell]]
[[/row]][[row]]
[[cell]]0[[/cell]][[cell]]1[[/cell]][[cell]]2[[/cell]][[cell]]3[[/cell]][[cell]]4[[/cell]][[cell]]5[[/cell]]
[[cell]]0[[/cell]][[cell]]1[[/cell]][[cell]]2[[/cell]][[cell]]3[[/cell]][[cell]]4[[/cell]][[cell]]5[[/cell]]
[[cell]]0[[/cell]][[cell]]1[[/cell]][[cell]]2[[/cell]][[cell]]3[[/cell]][[cell]]4[[/cell]][[cell]]5[[/cell]]
[[/row]][[row]]
[[cell colspan="6"]]unknown[[/cell]][[cell colspan="6"]]未知[[/cell]][[cell colspan="6"]]未知[[/cell]]
[[/row]][[row]]
[[cell colspan="6"]]habitable[[/cell]][[cell colspan="6"]]宜居[[/cell]][[cell colspan="6"]]宜居[[/cell]]
[[/row]][[row]]
[[cell colspan="6"]]deadzone[[/cell]][[cell colspan="6"]]死区[[/cell]][[cell colspan="6"]]死區[[/cell]]
[[/row]][[row]]
[[cell colspan="6"]]pending[[/cell]][[cell colspan="6"]]等待分级[[/cell]][[cell colspan="6"]]等待分級[[/cell]]
[[/row]][[row]]
[[cell colspan="6"]]n/a[[/cell]][[cell colspan="6"]]不适用[[/cell]][[cell colspan="6"]]不適用[[/cell]]
[[/row]][[row]]
[[cell colspan="6"]]amended[[/cell]][[cell colspan="6"]]修正[[/cell]][[cell colspan="6"]]修正[[/cell]]
[[/row]][[row]]
[[cell colspan="6"]]omega[[/cell]][[cell colspan="6"]]终结[[/cell]][[cell colspan="6"]]終結[[/cell]]
[[/row]]
[[/table]]
该组件支持简繁切换,如下方代码所示:
[[div class="code"]]
@@[[include :brsandbox-mini:component:wr-level-class@@
|lang=cn/tr
|class=等级
]]
[[/div]]
在 {{lang}} 处选择语言,cn 表示简体中文,tr 表示繁体中文,不填默认选择简体中文。
------
++* 自定义等级
[[div class="code"]]
@@[[include :brsandbox-mini:component:wr-level-class@@
|lang=cn/tr
|class=等级名字
|color=#000000(带有井号的十六进制色号代码。)
|image=链接(至图片的链接。)
|one=在这
|two=随便
|three=放文字
@@]]@@
[[/div]]
+* 使用 CSS 进行自定义:
你可以使用 CSS 进行额外的自定义,将代码放入到 {{@@[[module css]]@@}} 中或者是放入到页面的版式内都可以。**在这一组件中,不要把 {{@@[[module css]]@@}} 放在 {{@@[[include]]@@}} 里面,把它放在那个的下面或者是页面的顶部或底部。**
将这些代码放入到你的页面/版式中以编辑所有的颜色,因为组件的 {{|color=}} 部分仅能控制背景:
[[div class="code"]]
@@[[module css]]@@
.sd-container {
@@ /* 字体 */@@
@@ --sd-font: Poppins, Noto Sans SC, Noto Serif SC;@@
@@ /* 边框 */@@
@@ --sd-border: var(--gray-monochrome); /* 大多数等级 */@@
@@ --sd-border-secondary: 0, 0, 0; /* 不适用 */@@
@@ --sd-border-deadzone: 90, 29, 27; /* 死区 */@@
@@ /* 标志 */@@
@@ --sd-symbol: var(--sd-border) !important; /* 大多数标志 */@@
@@ --sd-symbol-secondary: 255, 255, 255; /* 4 级以上的是白色 */@@
@@ /* 文本 */@@
@@ --sd-bullets: var(--sd-border) !important; /* 点句符文本颜色 */@@
@@ --sd-text: var(--swatch-text-secondary-color); /* 顶部框文本颜色 */@@
@@ /* 等级颜色 */@@
@@ --class-0: 247, 227, 117;@@
@@ --class-1: 247, 227, 117;@@
@@ --class-1: 255, 201, 14;@@
@@ --class-2: 245, 156, 0;@@
@@ --class-3: 249, 90, 0;@@
@@ --class-4: 254, 23, 1;@@
@@ --class-5: 175, 6, 6;@@
@@ --class-unknown: 38, 38, 38;@@
@@ --class-habitable: 26, 128, 111;@@
@@ --class-deadzone: 44, 13, 12;@@
@@ --class-pending: 182, 182, 182;@@
@@ --class-n-a: 38, 38, 38;@@
@@ --class-amended: 185, 135, 212;@@
@@ --class-omega: 25, 46, 255;@@
}
@@[[/module]]@@
[[/div]]
[[/div]]
[[/div]]
[[div class="styled-quote"]]
+ 基本概述:
[[f>toc]]
**Level BLHT-1**的主体区域表现为一座面积粗略估测约**391.77平方公里**的城市。经过勘探,层级整体空间可到达区域并非是无限延伸的,面积约**2277平方千米**;然而,在该区域外仍能看到拥有未勘探的区域,但进入它们之中以后,将会抵达其他与进入区域周围环境相似的其他层级。但**少数情况下**流浪者仍可原路返回该层级。
在**Level BLHT-1**内,流浪者随身携带,乃至人工制造的、具有异常性质的物品:如**[https://backrooms-wiki-cn.wikidot.com/object-9 Object-9 - “傻瓜口香糖”]**、**[https://backrooms-wiki-cn.wikidot.com/object-20 Object-20 - “瑞撒毒气]”**、**[https://backrooms-wiki-cn.wikidot.com/object-99 Object-99 - “赫尔墨斯装置”]**等后室物品,将会失去原先的异常和性质,变得与其外观类似的常规物品无异,这极有可能导致流浪者难以适应。庆幸的是,这些物品会在离开层级并抵达一个不属于**“平滑阈界”**[[footnote]] 离开层级过程的环境过渡并非一刻间完成的,而是更为平滑的,这意味着周边环境会逐步变化。在这些情况下,流浪者只需深入特定区域,便可到达其他层级/该层级 [[/footnote]]的双向通行层级后恢复原先的性质。
由于层级内存在与前厅中**中华人民共和国**相同的县级行政机构,因而流浪者的一些在后室内理论上正常的举动,可能会被当地居民所上报,并被当地的警务机构处理。因此大部分流浪者需要重新找回在前厅内的最基本人际将往能力。同时我们建议任何流浪者在有计划居住于该层级后,阅读该层级的**民法典**、**刑法**、**宪法**;尤其是部分在前厅内属于非**中华人民共和国公民**的流浪者。
所有第一次进入**Level BLHT-1**的流浪者的位置并不是一致的。调查发现,这取决于流浪者自身在坠入后室前[[footnote]] 出生于后室的流浪者取决于出生层级 [[/footnote]]故乡的行政区划等级[[footnote]] 或整体建筑群规模及风格 [[/footnote]]。例如:故乡为屯、村及乡级的流浪者第一次进入该层级时会出现在该层级内一座相似于其故乡的村屯中,故乡为镇、县及市级的同理。在进入过一次**Level BLHT-1**后,流浪者的进入层级时所处的环境位置将变得固定。
**Level BLHT-1**内存在与**[https://backrooms-wiki-cn.wikidot.com/the-frontrooms 前厅]**相同的天气变化、昼夜变化及季节更替。气候与气温类似于**[https://backrooms-wiki-cn.wikidot.com/the-frontrooms 前厅]**中中国南部拥有海岸线的省份的气候,且随着层级内的季节更替而发生变化。
[[/div]]
[[div class="styled-quote"]]
+ 县城:
**县城**是大部分流浪者第一次抵达**Level BLHT-1**的区域。它在外观上表现为一座面积约**391.77平方公里**的县城,被当地行政部门称为“城厢镇”。
**县城**的四面被起伏的山野围绕。值得注意的是,**城厢镇**与北部的高山之间存在一片地形少有起伏的地带,直至延伸一定距离之后,会突然性的升高变为山野。此外,有数条双向单车道的沥青路面与**城厢镇**的主要道路所连接。其中,位于**城厢镇**东侧的、向北的道路最终会在延伸一段相对较短的距离后离开层级范围,抵至另一层级。
此外值得注意的是,有一条贯穿**城厢镇**东偏北部的宽阔的江流,其整体与**城厢镇**的地面高度落差巨大,但并非突然的降低,而是平缓的斜坡,并每隔一段距离出现一段石质楼梯,江流的岸边上被修建了一条延伸至两端的、长度未知的石制小道,一侧拥有木质的护栏。然而,小道以下大部分时候都仍存在着一片由大量鹅软石、沙子及偶尔出现的小型礁石组成的浅滩,具体面积随着江流的水位而定。
[[div class="scp-image-block block-right" style="width:300px;"]]
[[image http://brsandbox-mini.wikidot.com/local--files/fragment:level-to-71-00/levelto71-main-road.jpg {$alt}="{$alt-text}" link=#]]
[[div class="scp-image-caption" style="displ{$captionless}y:none;"]]
于**主要干道**一侧建筑楼顶拍摄
[[/div]]
[[/div]]
**城厢镇**城区内的道路由一条主要干道延伸开大量的次级干道。主要干道为一条整体位于**城厢镇**南端的,于中部存在一个较大型十字路口的,整体呈**“T”**字形的干道,并在一些路段与其他次级干道交汇;主要干道被中央的水泥隔离带分为了双向车道,而一条车道则被白色的涂漆分为了三条机动车道与一条贴近人行道的非机动车道;此外,中央的水泥隔离带上存在着间隔数十米的路灯,并在夜间提供照明。**次级干道**是这个**城厢镇**分布最多的道路;通常,**次级干道**拥有水泥或沥青铺就的路面,并往往被白色涂漆分为了双向单车道;它们在外观上显得相对老旧,但不会影响驾驶。
[[div class="scp-image-block block-left" style="width:300px;"]]
[[image http://brsandbox-mini.wikidot.com/local--files/fragment:level-to-71-00/levelto71-ightlife.jpg {$alt}="{$alt-text}" link=#]]
[[div class="scp-image-caption" style="displ{$captionless}y:none;"]]
**商业步行街**一角
[[/div]]
[[/div]]
**城厢镇**的建筑密度并不是一致的。大部分区域并非都如同**[https://backrooms-wiki-cn.wikidot.com/latest:level-11 Level 11]**那般的摩天大楼,而是一般仅有四至五层的独栋住宅,且一层往往被进行出租,少有的高层建筑仅为位于农贸市场附近的公寓楼:通常可达二十至三十层。值得注意的是,由**兴隆路**、**国泰街**、**江滨路**组成的**商业步行街**中心附近的建筑大多都相对低矮,并都被改造为商店,而建筑之间的小巷则更为宽大;而位于边缘地带的则突兀的为大型公寓社区,建筑的高度往往在三十至四十层。
**城厢镇**的供电来源于大量铺设于地面之下的电缆,这些电缆的电力来源似乎为数座不属于层级范围内的、可被观测到的水力发电站,但流浪者似乎永远无法抵达它们的所在地。此外,**城厢镇**内的大部分有人类居住的建筑都配有供水及排污系统,其供水与排污皆位于层级境内,但并不建议流浪者前往。
[[/div]]
[[div class="styled-quote"]]
+ 屯、村、镇及乡:
**屯、村、镇及乡**是大多距离**城厢镇**较近,但面积皆小于**城厢镇**的数座具有被划分了行政区划的区域。这些乡与镇皆拥有着连接**城厢镇**及其他**乡与镇**的交通系统:为数条由水泥混凝土或沥青组成的二级公路。
[[div class="scp-image-block block-right" style="width:300px;"]]
[[image http://brsandbox-mini.wikidot.com/local--files/fragment:level-to-71-00/levelto71-village.jpg {$alt}="{$alt-text}" link=#]]
[[div class="scp-image-caption" style="displ{$captionless}y:none;"]]
于▒▒屯所拍摄的图像
[[/div]]
[[/div]]
行政区域划分为**“镇”**的区域[[footnote]] **城厢镇**除外 [[/footnote]]的建筑风格基本与**县城**无异,但值得注意的是,大多数行政区划为**“镇”**的区域内的民用私人住宅并不存在超过十层以上的建筑,同时区域内的交通系统不存在双向双车道与存在水泥隔离带的道路,即使是主要干道。同时区域内的基础设施相对于**城厢镇**而言而言较为老式,包括浑黄的路灯灯光等。但行政划分为**镇**的区域内仍拥有大部分的民用公共设施:包括银行、警局及农贸市场等。
**屯及村**是目前层级内区域数量最多的行政区域。大部分属于该种行政划分的区域的地形与地处大部分都是平缓而广阔的;然而少部分**屯乡**会因它们所属的**乡镇**的地处而变得多有斜坡,乃至被高山所环绕。值得注意的是,在这些**屯乡**的盆地内、乃至群山外的平缓地带,常可发现间隔数百米的电塔;电塔沿着地形延伸至远方,尝试寻找它们的起点或终点的尝试被认为是不可能的;电塔的作用被认为是向着这些**屯村**及**乡镇**供应电力,除此以外似乎并无其他特殊用途。
------
@@@@
[[div class="bettercollap"]]
[[collapsible show="所有屯、乡、镇及乡列表" hide="收起内容"]]
||~ 行政区名称 ||~ 附属行政村名称 ||
|| **城厢镇** || 四兴、那可、宝塔、西宁、震东、小林、大林、旺中、东安、东信、良兴、良一、良二、良安 ||
|| **南圩镇** || 光明、三宝、大同、望朝、南兴、多林、四联、帮宁、古信、灵利、连安、万朗、联造、那湾、西安、爱华、銮正、联伍 ||
|| **雁江镇** || 红良、福颜、和济、联隆、龙庄、那朗、东义、东礼、渌龙 ||
|| **那桐镇** || 方村、浪湾、那元、镇流、龙江、大滕、定江、那重、那门、下邓、上邓 ||
|| **乔建镇** || 太阳升、培正、龙扶、龙弟、龙念、鹭鸶、慕恭、儒浩、新都、博浪、廷罗、罗村、新光、龙尧 ||
|| **丁当镇** || 俭安、英敏、定坤、华岳、乔联、红阳、保湾、白马、联合、森岭 ||
|||| ||
|| **布泉乡** || 兴隆、岑山、高峰、新盏、欧亚、龙会、巴香、龙礼 ||
|| **都结乡** || 三乐、天隆、吉隆、林利、陆连、荣朋、平荣、平养、达利、念潭、欧里、陇选、更明、龙民、陇割、同乐、红光、普权、新风 ||
|| **屏山乡** || 雅梨、上孟、万岭、上琴、群力、刘家、团结、文化、布也 ||
|| **古潭乡** || 马村、中真、定军、育英、振义、九甲 ||
[[/collapsible]]
[[/div]][[/div]]
[[div class="styled-quote"]]
+ 实体:
++ 居民
**居民**是一种仅栖居于**Level BLHT-1**内的实体。在外观上,它们与一般的正常流浪者完全相同,且在解剖一具**居民**尸体后,确认身体的内部器官与构造也与一般流浪者无异。通常,他们都是友善的,除非流浪者对于他们的私人财产或人身安全造成危害,他们会给予流浪者适当的反击,且通常会上报层级内的警务机构,这通常将导致流浪者无法在短期内离开层级。尝试向他们询问或交谈有关**后室**的行为被认为是不可能的,这也是他们被归类为实体的原因。
[[/div]]
[[div class="styled-quote"]]
+ 基地、前哨与社区
该层级内不存在任何的由正常流浪者基地、前哨或社区。
[[/div]]
[[div class="styled-quote"]]
+ 入口与出口:
++ 入口
* 有时,经由**[https://backrooms-wiki-cn.wikidot.com/the-frontrooms 前厅]**切入**BLHT**层群的流浪者并不会抵达**[[[Level BLTH-0]]]**,而抵达了**Level BLHT-1**。
* 在**[https://backrooms-wiki-cn.wikidot.com/level-c-1980 Level C-1980 - “小乡村,我的家”]**的**村子**区域内的的一条随机的、平缓的道路行走时,可能会在一段平滑的环境过渡之后抵达该层级。
* 在**[https://backrooms-wiki-cn.wikidot.com/level-c-304 Level C-304 - “小镇”]**内时,发现层级的真实环境后,在雨中彷徨一段时间后,有概率切入即将发生大范围降雨的**Level BLHT-1**。
* 可直接经由**[https://backrooms-wiki-cn.wikidot.com/level-c-34 Level C-34 - “归乡”]**田野内的一条极度偏僻的,随机的道路进入该层级。
++ 出口:
* 主动使用身体撞击**Level BLHT-1**境内的随机电塔直至昏迷,有极低概率会切入**[https://backrooms-wiki-cn.wikidot.com/level-6034 Level 603 - “鮟鱇鱼”]**,但目前仅有一例切入案例。
* 少数的**屯或村**拥有一条直接通向层级范围外的土路,沿其行走至层级范围之外后,环境将过渡为**[https://backrooms-wiki-cn.wikidot.com/level-c-34 Level C-34 - “归乡”]**的层级环境。
* 主动性地跳入江流中,顺着江流而下,有极高的概率进入**[[[level BLTH-2]]]**。
[[/div]]
[[div class="lightblock"]]
------
[[=]]
[[module rate]]
------
[[collapsible show="作者信息" hide="折叠"]]
写得有些仓促了,哪里不好的话就帮我改正一下吧。
谢谢。
------
**作者:**[[*user 114ghzz]]
图片均为自摄。
------
[[size 140%]]未得到应用的部分[[/size]]
[[div class="styled-quote"]]
[[size 170%]]**现象:**[[/size]]
[[div class="scp-image-block block-right" style="width:300px;"]]
[[image http://brsandbox-mini.wikidot.com/local--files/fragment:level-to-71-00/levelto71-raining.jpg {$alt}="{$alt-text}" link=#]]
[[div class="scp-image-caption" style="displ{$captionless}y:none;"]]
雨中景观
[[/div]]
[[/div]]
[[size 160%]]**“雨静”**[[/size]]
[[<]]
**雨静**是仅会一种发生在**Level BLHT-1**内的现象,发生频率相对较少,且仅会发生在**Level BLHT-1**内大范围的降雨时。目前未观察到该现象对身处**Level BLHT-1**内的流浪者表现出危害。该现象对一类特殊群体具有额外的效应,这类群体为那些童年时在**[https://backrooms-wiki-cn.wikidot.com/the-frontrooms 前厅]**内生活过,并在成年或青壮年时期坠入后是的流浪者。此外,该现象的影响似乎仅限于流浪者,而不会影响层级内**居民**。
当该现象发生时,受影响的流浪者通常会在无目的时不自觉地在建筑物的屋檐下观赏雨中的景观,即使流浪者本身并不对降雨具有喜爱或厌恶。此外,受影响的流浪者还会感受到莫名的平静与放松。
[[/<]]
[[/div]]
[[/collapsible]]
------
[[/=]]
[[div class="footer-wikiwalk-nav"]]
[[=]]
<< [[[Level BLTH-0]]] | Level BLTH-1 | [[[Level BLTH-2]]] >>
[[/=]]
[[/div]][[/div]]
[[module css]]
:is(.sd-container[class*="{"], .lang-cn) .bottom-box.class-0 ul li:nth-child(3) > .default::after {
content: "无有害实体";
}
:is(.class-0) {
--sd-symbol: var(--sd-symbol-secondary);
}
[[/module]]注:删除政策已更新,移至deleted:分类下的页面亦会保留源代码,除非作者无意愿保留。
若您对此网站有建议,请发布在讨论区或联系BLHT A。


