注意:这是本网站使用的组件页面
组件页面一般通过[[include]]方式使用。
请不要随意编辑此页面以免造成不必要的崩溃。
如果你需要报告错误,请前往页面讨论区。
警告:你使用的浏览器似乎不支持此组件。
这意味着你无法得到此组件的正确效果,请不要在当前浏览环境下使用此组件。
如果你希望使用此组件,请按照以下的说明更新你的浏览器。
此组件可能会引起性能问题
此组件使用的函数会引起网页回流及重绘,它们可能给浏览器带来过重的负担造成页面卡顿。
在通常情况下不会如此,如果需要,您可以放心使用。
此组件的兼容性存在问题
令此组件生效所要求的浏览器及其最低版本为:Edge 115、Chrome 115、Opera 101,目前所有版本的 Firefox 以及 Safari 浏览器均不支持此组件。如需使用此组件,请自行承担由于其他用户的浏览器不支持对应效果导致阅读体验变差的风险。
此组件当前存在跨站点限制
当前,此组件基于明日方舟同人中文站的默认主题系列(Terrae)开发。现阶段若在本站与沙盒站之外的站点引用,你需要按照下文进行额外的配置。
此组件允许高度自定义
源代码已经在末尾提供,若模板提供的参数无法提供预期效果,你可以自行搭建。
开发者信息
此组件由
Senioriousc于2024年2月1日开发。
参数信息与说明
- 允许使用所有颜色格式。
- 数值只能使用px/rem类型,包括单位。
- <terminal-picture>必须为svg类型图片的链接或者URL转码结果1。
- 若你使用的是Terrae的主题,即使部分参数不填写,进度条也可以正常显示;如果你的页面使用了此外的主题,你需要填入所有的数值型参数,并且在页面顶部加入如下代码:
[[module CSS]]
:root {
--banner-width: <length>; /* 滚动可视区域距离视窗顶部的距离 */
}
[[/module]]- 当您不填写某些参数时,组件会使用默认值。所有的默认参数如下:
[[include :arknights:component:scroll-progress-base
…
|max-length=60
|bar-width=6px
|color-stop-1=var(--hightlight-secondary-color)
|color-stop-2=var(--hightlight-primary-color) //变量仅在Terrae系列主题下生效。
|terminal-picture=见下文图
|terminal-size=2rem
完整参数列表
[[include :arknights:component:scroll-progress-base |$default-type=--] 非必需,选择默认类型
|direction=Vertical/Horizontal 选择进度条显示的方向,前者为垂直方向,后者为水平方向
|function=symmetric/terminal 选择进度条的显示函数,前者从中间对称展开/消去,后者从端点处展开/消去
|trend=forward/reverse 非必需,仅用于端点型进度条。选择起始/结束端点,前者将应用左(下)端点,后者将应用右(上)端点
|method=fade/null 非必需,选择进度条初始状态,若填写,则进度条初始显示为100%并不断下降
|max-length=<percentage> 必填。填写进度条满时占页面宽/高的百分比,仅填写数字,推荐值为40-80
|bar-width=<length> 必填。填写进度条的宽度,推荐值为4px-12px
|color-stop-1=<color> 填写进度条一侧端点的颜色/页面初始处的颜色
|color-stop-2=<color> 填写进度条另外一端的颜色/页面最终处的颜色,如果需要纯色进度条,请保持与上一个值一致
|terminal-picture=<URL> 非必需,仅用于对称型进度条。自定义端点图片,如需去掉端点图片请留空。
|terminal-size=<length> 非必需,仅用于对称型进度条,自定义端点图片大小,实际显示大小为所填值的√2/2倍
]]


由
组件适配
该组件和 直达快捷键组件 特别适配!
尝试一下!
使用方法
普通类型
- 组件一共提供了十二类基础的滚动条样式,根据前四个参数(<direction><function><trend><method>)组合得到,建议自行在沙盒中测试使用,此处限于篇幅不展示demo。请留意完整参数列表中的说明和必要性,如果遇到问题,请询问开发者。
- 一个页面中可以同时使用多个不同的进度条!但是你无法分别设定它们的长度与大小,最终显示的大小决定于你在最后一个[[include]]中填入的数值2。例如:
在页面中使用:
[[include :arknights:component:scroll-progress-base
|direction=Horizontal
|function=symmetric
|method=fade
|max-length=90
|bar-width=12px
|terminal-size=3rem
]]
[[include :arknights:component:scroll-progress-base
|direction=Vertical
|function=symmetric
|method=fade
|max-length=60
|bar-width=6px
|terminal-size=1.5rem
]]
你最终会得到两个分别在垂直方向和水平方向的、最大显示长度为滚动区域的60%,宽度6px,端点图片大小为1.5rem的进度条,颜色是预设的颜色(如果是在不使用Terrae主题的站点则不会显示)。
特殊类型
此外,组件额外提供一个特别的类型,该类型不支持自定义,通过如下代码使用:
[[include :arknights:component:scroll-progress-base |arcaea-type=--]
]]
此部分可能会更新,即更多的特别类型进度条。
自定义说明
由于参数传递的限制,仅通过[[include]]可能无法调整出令你满意的进度条。因此本组件开源,并允许你高度自定义进度条。你可以在下方查看组件对应的所有源代码。(不包括参数传递和层叠部分)
- 本组件需要你在页面中添加空的CSS实体以显示进度条。
- 本组件的动画函数部分(即/* Functions */一节)已经采用完备的参数计算使得端点图片始终和进度条精确对齐,你最好不要改动关于translate的部分并始终保持其为从左往右的第一个transform函数,否则你最后可能需要使用近似值替代原有的计算函数。如果你希望加上端点图片的旋转或者缩放,只需要在translate之后加上rotate或者scale函数。
- 滚动条被包裹在滚动区域中,请通过调整滚动区域(.u-VerticalScroll_Area和.u-HorizontalScroll_Area)的CSS声明来修改滚动条的位置,最好不要直接改动滚动条(.u-Progress_Line.*.*.*)的位置属性。
CSS部分
/* Sources */ :root { --endpage-mask: url("data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 255.12 255.12'%3E%3Cdefs%3E%3Cstyle%3E .cls-1, .cls-2, .cls-3 %7B fill: %23231815; %7D .cls-4 %7B filter: url(%23drop-shadow-4); %7D .cls-2 %7B filter: url(%23drop-shadow-1); %7D .cls-3 %7B filter: url(%23drop-shadow-2); %7D %3C/style%3E%3Cfilter id='drop-shadow-1' filterUnits='userSpaceOnUse'%3E%3CfeOffset dx='0' dy='0'/%3E%3CfeGaussianBlur result='blur' stdDeviation='8.5'/%3E%3CfeFlood flood-color='%23040000' flood-opacity='1'/%3E%3CfeComposite in2='blur' operator='in'/%3E%3CfeComposite in='SourceGraphic'/%3E%3C/filter%3E%3Cfilter id='drop-shadow-2' filterUnits='userSpaceOnUse'%3E%3CfeOffset dx='0' dy='0'/%3E%3CfeGaussianBlur result='blur-2' stdDeviation='1.42'/%3E%3CfeFlood flood-color='%23040000' flood-opacity='.5'/%3E%3CfeComposite in2='blur-2' operator='in'/%3E%3CfeComposite in='SourceGraphic'/%3E%3C/filter%3E%3Cfilter id='drop-shadow-4' filterUnits='userSpaceOnUse'%3E%3CfeOffset dx='0' dy='0'/%3E%3CfeGaussianBlur result='blur-3' stdDeviation='1.42'/%3E%3CfeFlood flood-color='%23040000' flood-opacity='1'/%3E%3CfeComposite in2='blur-3' operator='in'/%3E%3CfeComposite in='SourceGraphic'/%3E%3C/filter%3E%3C/defs%3E%3Cg id='_1' data-name='1'%3E%3Cpath class='cls-2' d='M127.51,25.69L25.69,127.51l101.82,101.82,101.82-101.82L127.51,25.69ZM38.42,127.51L127.51,38.42l89.1,89.1-89.1,89.1L38.42,127.51Z'/%3E%3C/g%3E%3Cg id='_2' data-name='2'%3E%3Cpath class='cls-3' d='M127.51,51.14L51.14,127.51l76.37,76.37,76.37-76.37L127.51,51.14Zm-54,85.37v-18h108v18H73.51Z'/%3E%3Cg class='cls-4'%3E%3Cpath class='cls-1' d='M81.27,123.05v3.66h7.08v2.54h-7.08v3.44h7.98v2.52h-10.78v-14.64h10.78v2.48h-7.98Z'/%3E%3Cpath class='cls-1' d='M104.55,135.21l-9.62-8.7v8.7h-2.8v-14.62h.3l9.62,8.84v-8.84h2.8v14.62h-.3Z'/%3E%3Cpath class='cls-1' d='M113.82,135.21h-5.77v-14.64h5.77c2.09,0,3.81,.61,5.15,1.84,.72,.65,1.26,1.44,1.63,2.37,.37,.93,.55,1.96,.55,3.11s-.18,2.2-.55,3.13c-.37,.93-.91,1.72-1.63,2.37-.65,.6-1.42,1.05-2.29,1.36-.87,.31-1.83,.46-2.87,.46Zm-2.97-2.48h2.98c.52,0,1.05-.06,1.58-.18,.53-.12,1.02-.36,1.45-.71,.43-.35,.79-.84,1.07-1.47s.42-1.45,.42-2.46-.14-1.84-.42-2.47c-.28-.63-.64-1.12-1.08-1.47-.44-.35-.93-.58-1.46-.7s-1.05-.18-1.56-.18h-2.98v9.64Z'/%3E%3Cpath class='cls-1' d='M130.29,120.57c.72,0,1.4,.14,2.03,.41,.63,.27,1.18,.64,1.65,1.11,.47,.47,.84,1.02,1.11,1.65,.27,.63,.41,1.31,.41,2.03s-.12,1.39-.36,2c-.24,.61-.59,1.15-1.06,1.61s-1.06,.82-1.77,1.08c-.71,.26-1.54,.39-2.47,.39h-3.26v4.36h-2.8v-14.64h6.52Zm0,7.76c.41,0,.77-.07,1.08-.21s.56-.33,.75-.57c.19-.24,.34-.51,.43-.82,.09-.31,.14-.63,.14-.96s-.06-.66-.18-.99c-.12-.33-.29-.62-.52-.87-.23-.25-.51-.46-.84-.62-.33-.16-.72-.24-1.16-.24h-3.42v5.28h3.72Z'/%3E%3Cpath class='cls-1' d='M133.77,135.21l7.48-14.62h.28l7.48,14.62h-3.04l-1.14-2.3h-6.9l-1.12,2.3h-3.04Zm5.52-4.74h4.18l-2.08-4.42-2.1,4.42Z'/%3E%3Cpath class='cls-1' d='M164.01,127.21c-.01,.28-.02,.54-.02,.78-.01,.21-.02,.42-.02,.63s0,.36-.02,.47c-.08,.92-.33,1.77-.75,2.56s-.96,1.46-1.62,2.03c-.66,.57-1.42,1.01-2.28,1.33-.86,.32-1.76,.48-2.71,.48-1.04,0-2.02-.2-2.94-.6-.92-.4-1.73-.94-2.42-1.63-.69-.69-1.24-1.49-1.64-2.41s-.6-1.9-.6-2.94,.2-2.02,.6-2.95,.95-1.73,1.64-2.42c.69-.69,1.5-1.23,2.42-1.63,.92-.4,1.9-.6,2.94-.6,1.32,0,2.53,.31,3.63,.92,1.1,.61,1.99,1.43,2.67,2.46l-2.4,1.46c-.43-.63-.98-1.15-1.67-1.58s-1.43-.64-2.23-.64c-.67,0-1.29,.14-1.87,.41-.58,.27-1.09,.64-1.52,1.09s-.78,.98-1.03,1.59c-.25,.61-.38,1.24-.38,1.89s.13,1.3,.38,1.9c.25,.6,.6,1.13,1.03,1.58s.94,.82,1.52,1.09,1.2,.41,1.87,.41c.51,0,.99-.08,1.46-.23,.47-.15,.89-.37,1.28-.65,.39-.28,.72-.61,1.01-1,.29-.39,.5-.81,.63-1.28h-5.4v-2.52h8.44Z'/%3E%3Cpath class='cls-1' d='M169.15,123.05v3.66h7.08v2.54h-7.08v3.44h7.98v2.52h-10.78v-14.64h10.78v2.48h-7.98Z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E"); --symWidth:6px; --termWidth:6px; } :root { --specWidth: 1.5rem; --specHeight: 20rem; --numPadding: 2px; --tairitsu-primary:80,57,96; --tairitsu-secondary:171,112,188; --tairitsu-third:134,139,186; --hikari-primary:143,240,236; --hikari-secondary:126,174,196; --hikari-third:162,148,195 } /* Basic Functions */ @keyframes V_ScrollProgeressSymmetric { 0% {height: 0%;background:rgb(var(--highlight-secondary-color));box-shadow: 0 0 0 rgb(var(--scale-4));} 100% {height: 60%;background:rgb(var(--highlight-primary-color));box-shadow: 0 0 2px rgb(var(--scale-4));} } @keyframes V_ScrollIndicatorSymmetric { 0% {transform:translate(calc(-50% + calc(var(--symWidth)/2)),-50%);background:rgb(var(--highlight-secondary-color))} 100% {transform:translate(calc(-50% + calc(var(--symWidth)/2)),-50%);background:rgb(var(--highlight-primary-color))} } @keyframes V_ScrollIndicatorSymmetricReverse { 0% {transform:translate(calc(-50% + calc(var(--symWidth))/2),-150%);background:rgb(var(--highlight-secondary-color))} 100% {transform:translate(calc(-50% + calc(var(--symWidth))/2),calc(calc(100vh - var(--banner-height))*0.6 - 150%));background:rgb(var(--highlight-primary-color))} } @keyframes V_ScrollProgeressTerminalForward { 0% {background-position-y: 100%;box-shadow: 0 0 0 rgb(var(--scale-4));} 100% {background-position-y:0%;box-shadow: 0 0 2px rgb(var(--scale-4));} } @keyframes V_ScrollProgeressTerminalReverse { 0% {background-position-y: -100%;box-shadow: 0 0 0 rgb(var(--scale-4));} 100% {background-position-y:0%;box-shadow: 0 0 2px rgb(var(--scale-4));} } @keyframes H_ScrollProgeressSymmetric { 0% {width: 0%;background:rgb(var(--highlight-secondary-color));box-shadow: 0 0 0 rgb(var(--scale-4));} 100% {width: 60%;background:rgb(var(--highlight-primary-color));box-shadow: 0 0 2px rgb(var(--scale-4));} } @keyframes H_ScrollIndicatorSymmetric { 0% {transform:translate(-50%,calc(-50% + calc(var(--symWidth)/2)));background:rgb(var(--highlight-secondary-color))} 100% {transform:translate(-50%,calc(-50% + calc(var(--symWidth)/2)));background:rgb(var(--highlight-primary-color))} } @keyframes H_ScrollIndicatorSymmetricReverse { 0% {transform:translate(-50%,calc(-150% + calc(var(--symWidth)/2)));background:rgb(var(--highlight-secondary-color))} 100% {transform:translate(calc(100vw*0.6 - 50%),calc(-150% + calc(var(--symWidth)/2)));background:rgb(var(--highlight-primary-color))} } @keyframes H_ScrollProgeressTerminalForward { 0% {background-position-x: 100%;box-shadow: 0 0 0 rgb(var(--scale-4));} 100% {background-position-x:0%;box-shadow: 0 0 2px rgb(var(--scale-4));} } @keyframes H_ScrollProgeressTerminalReverse { 0% {background-position-x: -100%;box-shadow: 0 0 0 rgb(var(--scale-4));} 100% {background-position-x:0%;box-shadow: 0 0 2px rgb(var(--scale-4));} } /* Arcaea Functions */ @property --percentage { syntax:'<integer>'; inherits: false; initial-value: 0; } @keyframes DigitalFollow { 0% {transform: translateY(calc(var(--specHeight) - var(--numPadding) - calc(var(--specHeight)*0.06)))} 6% {transform: translateY(calc(var(--specHeight) - var(--numPadding) - calc(var(--specHeight)*0.06)))} 100% {transform: translateY(0)} } @keyframes BackgroundFollow { 0%, 1%, 2%, 3%, 4%, 5%, 6%, 7%, 8%, 9%, 10%, 11%, 12%, 13%, 14%, 15%, 16%, 17%, 18%, 19%, 20%, 21%, 22%, 23%, 24%, 25%, 26%, 27%, 28%, 29%, 30%, 31%, 32%, 33%, 34%, 35%, 36%, 37%, 38%, 39%, 40%, 41%, 42%, 43%, 44%, 45%, 46%, 47%, 48%, 49%, 50%, 51%, 52%, 53%, 54%, 55%, 56%, 57%, 58%, 59%, 60%, 61%, 62%, 63%, 64%, 65%, 66%, 67%, 68%, 69%, 70% {background-image: linear-gradient(180deg, rgb(var(--tairitsu-secondary)) 0%, rgb(var(--tairitsu-third)) 50%, #fff 51%, #fff 100%)} 70%, 71%, 72%, 73%, 74%, 75%, 76%, 77%, 78%, 79%, 80%, 81%, 82%, 83%, 84%, 85%, 86%, 87%, 88%, 89%, 90%, 91%, 92%, 93%, 94%, 95%, 96%, 97%, 98%, 99%, 100% {background-image: linear-gradient(180deg, rgb(var(--hikari-primary)) 0%, rgb(var(--hikari-secondary)) 25%, rgb(var(--hikari-third)) 50%, #fff 51%, #fff 100%)} } @keyframes BackgroundOpacity { 0% {opacity: .1;} 50% {opacity: .2;} 100% {opacity: .1;} } @keyframes V_ScrollProgeressArcaea { 0% {background-position-y: -100%;} 100% {background-position-y:0%;} } @keyframes ProgressTraversal {0% { --percentage: 0; } 1% { --percentage: 1; } 2% { --percentage: 2; } 3% { --percentage: 3; } 4% { --percentage: 4; } 5% { --percentage: 5; } 6% { --percentage: 6; } 7% { --percentage: 7; } 8% { --percentage: 8; } 9% { --percentage: 9; } 10% { --percentage: 10; } 11% { --percentage: 11; } 12% { --percentage: 12; } 13% { --percentage: 13; } 14% { --percentage: 14; } 15% { --percentage: 15; } 16% { --percentage: 16; } 17% { --percentage: 17; } 18% { --percentage: 18; } 19% { --percentage: 19; } 20% { --percentage: 20; } 21% { --percentage: 21; } 22% { --percentage: 22; } 23% { --percentage: 23; } 24% { --percentage: 24; } 25% { --percentage: 25; } 26% { --percentage: 26; } 27% { --percentage: 27; } 28% { --percentage: 28; } 29% { --percentage: 29; } 30% { --percentage: 30; } 31% { --percentage: 31; } 32% { --percentage: 32; } 33% { --percentage: 33; } 34% { --percentage: 34; } 35% { --percentage: 35; } 36% { --percentage: 36; } 37% { --percentage: 37; } 38% { --percentage: 38; } 39% { --percentage: 39; } 40% { --percentage: 40; } 41% { --percentage: 41; } 42% { --percentage: 42; } 43% { --percentage: 43; } 44% { --percentage: 44; } 45% { --percentage: 45; } 46% { --percentage: 46; } 47% { --percentage: 47; } 48% { --percentage: 48; } 49% { --percentage: 49; } 50% { --percentage: 50; } 51% { --percentage: 51; } 52% { --percentage: 52; } 53% { --percentage: 53; } 54% { --percentage: 54; } 55% { --percentage: 55; } 56% { --percentage: 56; } 57% { --percentage: 57; } 58% { --percentage: 58; } 59% { --percentage: 59; } 60% { --percentage: 60; } 61% { --percentage: 61; } 62% { --percentage: 62; } 63% { --percentage: 63; } 64% { --percentage: 64; } 65% { --percentage: 65; } 66% { --percentage: 66; } 67% { --percentage: 67; } 68% { --percentage: 68; } 69% { --percentage: 69; } 70% { --percentage: 70; } 71% { --percentage: 71; } 72% { --percentage: 72; } 73% { --percentage: 73; } 74% { --percentage: 74; } 75% { --percentage: 75; } 76% { --percentage: 76; } 77% { --percentage: 77; } 78% { --percentage: 78; } 79% { --percentage: 79; } 80% { --percentage: 80; } 81% { --percentage: 81; } 82% { --percentage: 82; } 83% { --percentage: 83; } 84% { --percentage: 84; } 85% { --percentage: 85; } 86% { --percentage: 86; } 87% { --percentage: 87; } 88% { --percentage: 88; } 89% { --percentage: 89; } 90% { --percentage: 90; } 91% { --percentage: 91; } 92% { --percentage: 92; } 93% { --percentage: 93; } 94% { --percentage: 94; } 95% { --percentage: 95; } 96% { --percentage: 96; } 97% { --percentage: 97; } 98% { --percentage: 98; } 99% { --percentage: 99; } 100% { --percentage: 100; }} /* Arcaea Type */ .u-VerticalScroll_Area .u-Progress_Line.arcaea { height: var(--specHeight); width: var(--specWidth); box-shadow:0 0 4px rgb(var(--tairitsu-primary),.9); background-size: 100% 200%; background-repeat: no-repeat; background-position-x: center; animation: BackgroundFollow steps(2,end),V_ScrollProgeressArcaea linear,ProgressTraversal steps(100,end); animation-timeline: scroll(); counter-reset: progress var(--percentage); filter: contrast(1.4) saturate(1.4); } .u-VerticalScroll_Area .u-Progress_Line.arcaea::before { content: counter(progress); position: fixed; display: flex; justify-content: center; align-items: center; width: var(--specWidth); height: calc(var(--specHeight)*0.06); padding: var(--numPadding) 0; font-family: 'Exo', sans-serif !important; font-size: 75%; font-weight: 900; color: #fff; text-shadow: 0 0 0.5px rgb(var(--tairitsu-primary)),0 0 0.5px rgb(var(--tairitsu-primary)),0 0 0.5px rgb(var(--tairitsu-primary)),0 0 0.5px rgb(var(--tairitsu-primary)),0 0 0.5px rgb(var(--tairitsu-primary)),0 0 0.5px rgb(var(--tairitsu-primary)),0 0 0.5px rgb(var(--tairitsu-primary)),0 0 0.5px rgb(var(--tairitsu-primary)),0 0 0.5px rgb(var(--tairitsu-primary)),0 0 0.5px rgb(var(--tairitsu-primary)),0 0 0.5px rgb(var(--tairitsu-primary)); font-family: var(--UI-font); animation: DigitalFollow; animation-timing-function: linear; animation-timeline: scroll(); z-index: 2; } .u-VerticalScroll_Area .u-Progress_Line.arcaea:after { content: ""; display: inline-flex; position: relative; width: var(--specWidth); height: var(--specHeight); background-image: repeating-linear-gradient(45deg,rgb(51 51 51 / 40%),rgb(51 51 51 / 40%) 1px,#fff0 0,#fff0 4px); } .u-VerticalScroll_Area .u-Progress_Line.arcaea .u-Progress_LineAppendency { display: flex; position: absolute; z-index: -1; height: var(--specHeight); width: var(--specWidth); box-shadow: inset 0 0 1px .25px rgb(var(--tairitsu-primary)); background-image: url(https://arknights.wdfiles.com/local--files/component%3Ascroll-progress-base/Progress_LineAppendency.png); background-position: center; background-size: contain; filter: grayscale(.6); animation: BackgroundOpacity 4s cubic-bezier(0.7, 0, 0.3, 1) infinite; z-index: 1; } .u-VerticalScroll_Area .u-Progress_Line.arcaea .u-Progress_LineAppendency:after { content: ""; display: flex; position: absolute; z-index: -1; height: var(--specHeight); width: var(--specWidth); background-color: rgb(201 201 201 / 40%); -webkit-clip-path: polygon(100% 0, 100% 27%, 50% 31%, 0 26%, 0 0); clip-path: polygon(100% 0, 100% 27%, 50% 31%, 0 26%, 0 0); } .u-VerticalScroll_Area .u-Progress_Line.arcaea .u-Progress_LineAppendency:before { content: ""; display: flex; position: absolute; z-index: 1; height: var(--specHeight); width: var(--specWidth); background-color:rgb(0 0 0 / 50%); -webkit-clip-path: polygon(50% 31%, 100% 26%, 100% 100%, 0 100%, 0 27%); clip-path: polygon(50% 31%, 100% 26%, 100% 100%, 0 100%, 0 27%); } /* Vertical Support */ .u-VerticalScroll_Area { position: fixed; height: calc(100vh - var(--banner-height)); width: 15vw; top:var(--banner-height); right: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; } .u-VerticalScroll_Area .u-Progress_Line.symmetric { width: var(--symWidth); animation: V_ScrollProgeressSymmetric; animation-timing-function: linear; animation-timeline: scroll(); } .u-VerticalScroll_Area .u-Progress_Line.symmetric.fade { width: var(--symWidth); animation: V_ScrollProgeressSymmetric; animation-timing-function: linear; animation-direction: reverse; animation-timeline: scroll(); } .u-VerticalScroll_Area .u-Progress_Line.symmetric:before,.u-VerticalScroll_Area .u-Progress_Line.symmetric:after { content: ""; height: 2rem; width: 2rem; display: block; -webkit-mask-image: var(--endpage-mask); mask-image: var(--endpage-mask); -webkit-mask-position: center; -webkit-mask-repeat: no-repeat; -webkit-mask-size: contain; mask-position: center; mask-repeat: no-repeat; mask-size: contain; animation: V_ScrollIndicatorSymmetric; animation-timing-function: linear; animation-timeline: scroll(); } .u-VerticalScroll_Area .u-Progress_Line.symmetric:after { animation: V_ScrollIndicatorSymmetricReverse; animation-timing-function: linear; animation-timeline: scroll(); } .u-VerticalScroll_Area .u-Progress_Line.symmetric.fade:before,.u-VerticalScroll_Area .u-Progress_Line.symmetric.fade:after { content: ""; height: 2rem; width: 2rem; display: block; -webkit-mask-image: var(--endpage-mask); mask-image: var(--endpage-mask); -webkit-mask-position: center; -webkit-mask-repeat: no-repeat; -webkit-mask-size: contain; mask-position: center; mask-repeat: no-repeat; mask-size: contain; animation: V_ScrollIndicatorSymmetric; animation-timing-function: linear; animation-direction: reverse; animation-timeline: scroll(); } .u-VerticalScroll_Area .u-Progress_Line.symmetric.fade:after { animation: V_ScrollIndicatorSymmetricReverse; animation-timing-function: linear; animation-direction: reverse; animation-timeline: scroll(); } .u-VerticalScroll_Area :is(.u-Progress_Line.terminal.forward, .u-Progress_Line.terminal.reverse){ height: 60%; width: var(--termWidth); background-size: 100% 200%; background-repeat: no-repeat; background-position-x: center; background-image: linear-gradient(180deg, rgb(var(--highlight-primary-color)) 0%, rgb(var(--highlight-secondary-color)) 50%, transparent 50%, transparent 100%); animation: V_ScrollProgeressTerminalForward; animation-timing-function: linear; animation-timeline: scroll(); } .u-VerticalScroll_Area :is(.u-Progress_Line.terminal.forward.fade, .u-Progress_Line.terminal.reverse.fade){ height: 60%; width: var(--termWidth); background-size: 100% 200%; background-repeat: no-repeat; background-position-x: center; background-image: linear-gradient(180deg, rgb(var(--highlight-primary-color)) 0%, rgb(var(--highlight-secondary-color)) 50%, transparent 50%, transparent 100%); animation: V_ScrollProgeressTerminalForward; animation-timing-function: linear; animation-direction: reverse; animation-timeline: scroll(); } .u-VerticalScroll_Area .u-Progress_Line.terminal.reverse{ animation: V_ScrollProgeressTerminalReverse; animation-timing-function: linear; animation-timeline: scroll(); } .u-VerticalScroll_Area .u-Progress_Line.terminal.reverse.fade { animation: V_ScrollProgeressTerminalReverse; animation-timing-function: linear; animation-direction: reverse; animation-timeline: scroll(); } /* Horizontal Support */ .u-HorizontalScroll_Area { position: fixed; height: 10vh; width: 100vw; top:var(--banner-height); right: 0; display: flex; flex-direction: row; align-items: center; justify-content: center; } .u-HorizontalScroll_Area .u-Progress_Line.symmetric { height: var(--symWidth); animation: H_ScrollProgeressSymmetric; animation-timing-function: linear; animation-timeline: scroll(); } .u-HorizontalScroll_Area .u-Progress_Line.symmetric.fade { width: var(--symWidth); animation: H_ScrollProgeressSymmetric; animation-timing-function: linear; animation-direction: reverse; animation-timeline: scroll(); } .u-HorizontalScroll_Area .u-Progress_Line.symmetric:before,.u-HorizontalScroll_Area .u-Progress_Line.symmetric:after { content: ""; height: 2rem; width: 2rem; display: block; -webkit-mask-image: var(--endpage-mask); mask-image: var(--endpage-mask); -webkit-mask-position: center; -webkit-mask-repeat: no-repeat; -webkit-mask-size: contain; mask-position: center; mask-repeat: no-repeat; mask-size: contain; animation: H_ScrollIndicatorSymmetric; animation-timing-function: linear; animation-timeline: scroll(); } .u-HorizontalScroll_Area .u-Progress_Line.symmetric:after { animation: H_ScrollIndicatorSymmetricReverse; animation-timing-function: linear; animation-timeline: scroll(); } .u-HorizontalScroll_Area .u-Progress_Line.symmetric.fade:before,.u-HorizontalScroll_Area .u-Progress_Line.symmetric.fade:after { content: ""; height: 2rem; width: 2rem; display: block; -webkit-mask-image: var(--endpage-mask); mask-image: var(--endpage-mask); -webkit-mask-position: center; -webkit-mask-repeat: no-repeat; -webkit-mask-size: contain; mask-position: center; mask-repeat: no-repeat; mask-size: contain; animation: H_ScrollIndicatorSymmetric; animation-timing-function: linear; animation-direction: reverse; animation-timeline: scroll(); } .u-HorizontalScroll_Area .u-Progress_Line.symmetric.fade:after { animation: H_ScrollIndicatorSymmetricReverse; animation-timing-function: linear; animation-direction: reverse; animation-timeline: scroll(); } .u-HorizontalScroll_Area :is(.u-Progress_Line.terminal.forward, .u-Progress_Line.terminal.reverse){ width: 60%; height: var(--termWidth); background-size: 200% 100%; background-repeat: no-repeat; background-position-y: center; background-image: linear-gradient(90deg, rgb(var(--highlight-primary-color)) 0%, rgb(var(--highlight-secondary-color)) 50%, transparent 50%, transparent 100%); animation: H_ScrollProgeressTerminalForward; animation-timing-function: linear; animation-timeline: scroll(); } .u-HorizontalScroll_Area .u-Progress_Line.terminal.reverse{ animation: H_ScrollProgeressTerminalReverse; animation-timing-function: linear; animation-timeline: scroll(); } .u-HorizontalScroll_Area :is(.u-Progress_Line.terminal.forward.fade, .u-Progress_Line.terminal.reverse.fade){ width: 60%; height: var(--termWidth); background-size: 200% 100%; background-repeat: no-repeat; background-position-y: center; background-image: linear-gradient(90deg, rgb(var(--highlight-primary-color)) 0%, rgb(var(--highlight-secondary-color)) 50%, transparent 50%, transparent 100%); animation: H_ScrollProgeressTerminalForward; animation-timing-function: linear; animation-direction: reverse; animation-timeline: scroll(); } .u-HorizontalScroll_Area .u-Progress_Line.terminal.reverse.fade{ animation: H_ScrollProgeressTerminalReverse; animation-timing-function: linear; animation-direction: reverse; animation-timeline: scroll(); } /* Mobile Formatting */ @media only screen and(max-width:767px) { .u-VerticalScroll_Area { height: calc(100vh - var(--topbar-height-on-mobile)); width: 10vw; top: var(--topbar-height-on-mobile); } .u-HorizontalScroll_Area { height: 5vh; top: var(--topbar-height-on-mobile); } }
正文部分(全部可选)
/* == 垂直方向 == */
/* 对称展开 */
[[div_ class="u-VerticalScroll_Area"]]
[[div_ class="u-Progress_Line symmetric"]]
[[/div]]
[[/div]]
/* 对称消去 */
[[div_ class="u-VerticalScroll_Area"]]
[[div_ class="u-Progress_Line symmetric fade"]]
[[/div]]
[[/div]]
/* 端点展开(从上向下) */
[[div_ class="u-VerticalScroll_Area"]]
[[div_ class="u-Progress_Line terminal forward"]]
[[/div]]
[[/div]]
/* 端点展开(从下向上) */
[[div_ class="u-VerticalScroll_Area"]]
[[div_ class="u-Progress_Line terminal reverse"]]
[[/div]]
[[/div]]
/* 端点消去(从下向上) */
[[div_ class="u-VerticalScroll_Area"]]
[[div_ class="u-Progress_Line terminal forward fade"]]
[[/div]]
[[/div]]
/* 端点消去(从上向上) */
[[div_ class="u-VerticalScroll_Area"]]
[[div_ class="u-Progress_Line terminal reverse fade"]]
[[/div]]
[[/div]]
/* == 水平方向 == */
/* 对称展开 */
[[div_ class="u-HorizontalScroll_Area"]]
[[div_ class="u-Progress_Line symmetric"]]
[[/div]]
[[/div]]
/* 对称消去 */
[[div_ class="u-HorizontalScroll_Area"]]
[[div_ class="u-Progress_Line symmetric fade"]]
[[/div]]
[[/div]]
/* 端点展开(从上向下) */
[[div_ class="u-HorizontalScroll_Area"]]
[[div_ class="u-Progress_Line terminal forward"]]
[[/div]]
[[/div]]
/* 端点展开(从下向上) */
[[div_ class="u-HorizontalScroll_Area"]]
[[div_ class="u-Progress_Line terminal reverse"]]
[[/div]]
[[/div]]
/* 端点消去(从下向上) */
[[div_ class="u-HorizontalScroll_Area"]]
[[div_ class="u-Progress_Line terminal forward fade"]]
[[/div]]
[[/div]]
/* 端点消去(从上向上) */
[[div_ class="u-HorizontalScroll_Area"]]
[[div_ class="u-Progress_Line terminal reverse fade"]]
[[/div]]
[[/div]]
/* 特殊类型 */
[[div_ class="u-VerticalScroll_Area"]]
[[div_ class="u-Progress_Line arcaea"]]
[[/div]]
[[/div]]