ACS动画
2021年2月26日
修订 6
评分
10
↑ 10
↓ 0
支持率
100%
总票数 10
Wilson 95% 下界
72.2%
在相同票数下更稳健的支持率估计
争议指数
0.000
评分趋势
按周聚合 加载图表中...
最近修订
1 / 3
修改标签
1 年前
已新增标签:组件。 移除标签:样版。
SOURCE_CHANGED
1 年前
版本52
SOURCE_CHANGED
4 年前
更新至版本42
最近投票
1 / 1
2025-07-01
2024-09-03
2022-09-15
2022-05-24
2022-05-24
2022-05-24
2022-05-24
2022-05-24
2022-05-24
2022-05-24
相关页面
暂无推荐
页面源码
[[iftags +组件]]
[[div style="border: solid 2px #ededed; padding: 0.5rem; margin: 4px;"]]
这是一个给**[[[anomaly-classification-system-guide|ACS版头]]]**加上加载动画的组件。
++ 如何使用:
把这个放在文章的任意位置:
[[div class="blockquote" style="font-family: monospace; font-size: 120%;"]]
@@[[include :scp-wiki-cn:component:acs-animation]]@@
[[/div]]
然后就完成了!
//例子://**[[[SCP-5935|]]]**
@@ @@
-----
++ 注意
- 有两个变量,//@@--timeScale@@//与//@@--timeDelay@@//,控制着动画的时序。举例:
[[div class="blockquote" style="font-family: monospace; font-size: 120%;"]]
@@[[module CSS]]@@
:root {
@@ --timeScale: 2;@@
@@ --timeDelay: 0.5s;@@
}
@@[[/module]]@@
[[/div]]
//@@--timeScale@@//能把整个动画速度放慢至原来的½,而//@@--timeDelay@@//会将动画的起始点延迟半秒。默认的值分别为1和0秒。
若需改变默认值,需将以上的代码放到{{[[include]]}}的后面。若ACS不是第一个页面元素,或者你想要与其它动画模组(仿照**[[[component:fade-in|]]]**)一同使用,则推荐设置一个//@@--timeDelay@@//。
@@ @@
- 似乎与其它种类的ACS版头*不兼容。
*若要与[[*user PeppersGhost]]的[[[component:acs-peppo-lite|小型化ACS]]]一同使用,在{{[[include]]}}后面加上如下补丁:
[[div class="blockquote" style="font-family: monospace; font-size: 120%;"]]
@@[[module CSS]]@@
@@/*-- 小型化ACS动画适应性补丁 --*/@@
.anom-bar > .bottom-box::before { display: none; }
.anom-bar > .bottom-box { box-shadow: none!important; }
div.diamond-part { clip-path: none; animation: none; box-shadow: none!important; }
@media (max-width: 480px) {
div.top-right-box { clip-path: polygon(0% -30%, 100% -30%, 100% 130%, 0% 130%); }
}
@@[[/module]]@@
[[/div]]
@@ @@
- 作品灵感来自于[[*user AnAnomalousWriter]]。
[[/div]]
-----
++ 源代码:
[[code type="CSS"]]
:root {
--timeScale: 1;
--timeDelay: 0s;
}
/* Converting middle divider from box-shadow to ::before pseudo-element */
.anom-bar > div.bottom-box { box-shadow: none; position: relative; }
.anom-bar > div.bottom-box::before {
position: absolute;
content: " ";
width: 100%;
height: 0.5rem;
bottom: 100%; left: 0;
background-color: rgb(var(--swatch-menubg-black-color, 12, 12, 12));
}
/* DIVIDER */
.anom-bar > .bottom-box::before {
animation-name: divider;
animation-duration: calc(0.74s * var(--timeScale));
animation-delay: calc(0.1s * var(--timeScale) + var(--timeDelay));
animation-iteration-count: 1;
animation-timing-function: cubic-bezier(.32,.38,.39,.94);
animation-fill-mode: backwards;
}
/* CLASSIFIED LEVEL BARS */
div.top-center-box > * {
animation-name: bar;
animation-duration: calc(0.45s * var(--timeScale));
animation-iteration-count: 1;
animation-timing-function: ease-out;
animation-fill-mode: backwards;
}
div.top-center-box > :nth-child(1) { animation-delay: calc(0.2s * var(--timeScale) + var(--timeDelay)); }
div.top-center-box > :nth-child(2) { animation-delay: calc(0.32s * var(--timeScale) + var(--timeDelay)); }
div.top-center-box > :nth-child(3) { animation-delay: calc(0.45s * var(--timeScale) + var(--timeDelay)); }
div.top-center-box > :nth-child(4) { animation-delay: calc(0.61s * var(--timeScale) + var(--timeDelay)); }
div.top-center-box > :nth-child(5) { animation-delay: calc(0.75s * var(--timeScale) + var(--timeDelay)); }
div.top-center-box > :nth-child(6) { animation-delay: calc(0.95s * var(--timeScale) + var(--timeDelay)); }
/* TOP TEXT */
div.top-left-box, div.top-right-box {
clip-path: polygon( 0% -50%, 150% -50%, 150% 100%, 0% 100%);
}
div.top-left-box > *, div.top-right-box > * {
position: relative;
animation-name: bottomup;
animation-duration: calc(0.65s * var(--timeScale));
animation-delay: calc(0.5s * var(--timeScale) + var(--timeDelay));
animation-iteration-count: 1;
animation-timing-function: ease-out;
animation-fill-mode: backwards;
}
/*-----------------------------------*/
/*-----------------------------------*/
/* CONTAINMENT, DISRUPTION, RISK CLASSES */
div.text-part > * {
clip-path: polygon( 0% 0%, 100% 0%, 100% 100%, 0% 100%);
animation-name: expand2;
animation-duration: calc(0.5s * var(--timeScale));
animation-iteration-count: 1;
animation-timing-function: cubic-bezier(.12,.41,.27,.99);
animation-fill-mode: backwards;
}
div.text-part > :nth-child(1) {
animation-name: expand1;
}
div.text-part > :nth-child(1) { animation-delay: calc(0.6s * var(--timeScale) + var(--timeDelay)); }
div.text-part > :nth-child(2) { animation-delay: calc(0.75s * var(--timeScale) + var(--timeDelay)); }
div.text-part > :nth-child(3) { animation-delay: calc(0.86s * var(--timeScale) + var(--timeDelay)); }
div.main-class::before, div.main-class::after {
animation-name: iconslide;
animation-duration: calc(0.45s * var(--timeScale));
animation-delay: calc(0.8s * var(--timeScale) + var(--timeDelay));
animation-iteration-count: 1;
animation-timing-function: cubic-bezier(.12,.41,.27,.99);
animation-fill-mode: backwards;
}
/* BOTTOM TEXT */
div.main-class > *, div.disrupt-class > *, div.risk-class > * {
white-space: nowrap;
animation-name: flowIn;
animation-duration: calc(0.42s * var(--timeScale));
animation-delay: calc(0.75s * var(--timeScale) + var(--timeDelay));
animation-iteration-count: 1;
animation-timing-function: ease-out;
animation-fill-mode: backwards;
}
/*-----------------------------------*/
/*-----------------------------------*/
/* DIAMOND */
div.arrows {
animation-name: arrowspin;
animation-duration: calc(0.65s * var(--timeScale));
animation-delay: calc(0.55s * var(--timeScale) + var(--timeDelay));
animation-iteration-count: 1;
animation-timing-function: cubic-bezier(.12,.41,.27,.99);
animation-fill-mode: backwards;
}
div.quadrants > * {
animation-name: fade;
animation-duration: calc(0.3s * var(--timeScale));
animation-delay: calc(1.4s * var(--timeScale) + var(--timeDelay));
animation-iteration-count: 1;
animation-timing-function: cubic-bezier(.12,.41,.27,.99);
animation-fill-mode: backwards;
}
div.top-icon, div.right-icon, div.left-icon, div.bottom-icon {
animation-name: nodegrow;
animation-duration: calc(0.4s * var(--timeScale));
animation-delay: calc(1.4s * var(--timeScale) + var(--timeDelay));
animation-iteration-count: 1;
animation-timing-function: cubic-bezier(.12,.41,.27,.99);
animation-fill-mode: backwards;
}
.bottom-box > div.diamond-part {
box-shadow: none;
}
.bottom-box > div.diamond-part::before {
content: "";
position: absolute;
width: 0.5rem; height: 100%;
top: 0; right: 100%;
background-color: rgb(var(--swatch-menubg-black-color, 12, 12, 12));
animation-name: diamondBorder;
animation-duration: calc(0.475s * var(--timeScale));
animation-delay: calc(0.775s * var(--timeScale) + var(--timeDelay));
animation-iteration-count: 1;
animation-timing-function: cubic-bezier(.28,.72,.55,.91);
animation-fill-mode: backwards;
}
/* MOBILE QUERY */
@media (max-width: 480px ) {
.anom-bar > div.bottom-box { position: initial; }
.anom-bar > div.bottom-box::before { bottom: initial; top: 40vw; }
div.top-center-box > * {
animation-name: bar-mobile;
animation-duration: calc(0.9s * var(--timeScale));
}
div.top-center-box > :nth-child(1) { animation-delay: calc(0.1s * var(--timeScale) + var(--timeDelay)); }
div.top-center-box > :nth-child(2) { animation-delay: calc(0.2s * var(--timeScale) + var(--timeDelay)); }
div.top-center-box > :nth-child(3) { animation-delay: calc(0.3s * var(--timeScale) + var(--timeDelay)); }
div.top-center-box > :nth-child(4) { animation-delay: calc(0.4s * var(--timeScale) + var(--timeDelay)); }
div.top-center-box > :nth-child(5) { animation-delay: calc(0.5s * var(--timeScale) + var(--timeDelay)); }
div.top-center-box > :nth-child(6) { animation-delay: calc(0.6s * var(--timeScale) + var(--timeDelay)); }
}
/*--- Motion Accessibility ---*/
@media screen and (prefers-reduced-motion: reduce) {
div.anom-bar-container { --timeScale: 0!important; }
}
/*-------------------------*/
@keyframes divider {
from { max-width: 0%; }
to { max-width: 100%; }
}
@keyframes bar {
from { max-width: 0%; }
to { max-width: 100%; }
}
@keyframes bar-mobile {
from { max-height: 0%; }
to { max-height: 100%; }
}
@keyframes bottomup {
from { top: 100px; }
to { top: 0; }
}
@keyframes expand1 {
from { opacity: 0; clip-path: inset(0 calc(100% - 0.75rem) 0 0); }
to { opacity: 1; clip-path: inset(0); }
}
@keyframes iconslide {
from { opacity: 0; transform: translateX(-5rem); }
to { opacity: 1; transform: translateX(0); }
}
@keyframes expand2 {
from { opacity: 0; width: 1%; }
to { opacity: 1; width: calc(100% - 0.25rem); }
}
@keyframes fade {
from { opacity: 0; }
to { opacity: 1; }
}
@keyframes flowIn {
from { opacity: 0; transform: translateY(20px); }
to { opacity: 1; transform: translateY(0); }
}
@keyframes arrowspin {
from { clip-path: circle(0%); transform: rotate(135deg); }
to { clip-path: circle(75%); transform: rotate(0deg); }
}
@keyframes nodegrow {
from { transform: scale(0);}
to { transform: scale(1);}
}
@keyframes diamondBorder {
from { height: 0; }
to { height: 100%; }
}
[[/code]]
[[/iftags]]
[[module CSS]]
@import url('https://scp-wiki-cn.wdfiles.com/local--code/component%3Aacs-animation/1');
[[/module]]