mirror of
https://github.com/ZZZure/ZZZ-Plugin.git
synced 2025-12-16 13:17:32 +00:00
feat:abyss
This commit is contained in:
parent
cf4c27da44
commit
9f8e50ac33
11 changed files with 1025 additions and 32 deletions
BIN
resources/abyss/images/BgFrame01.png
Normal file
BIN
resources/abyss/images/BgFrame01.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 996 KiB |
BIN
resources/abyss/images/bg2.jpg
Normal file
BIN
resources/abyss/images/bg2.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 234 KiB |
BIN
resources/abyss/images/status.png
Normal file
BIN
resources/abyss/images/status.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 302 KiB |
230
resources/abyss/index.css
Normal file
230
resources/abyss/index.css
Normal file
|
|
@ -0,0 +1,230 @@
|
|||
.container {
|
||||
background-image: url("./images/bg2.jpg");
|
||||
}
|
||||
|
||||
.card {
|
||||
margin: 0 1em;
|
||||
}
|
||||
.card .user-info {
|
||||
margin: 0 1em;
|
||||
}
|
||||
.card .status {
|
||||
background: url("./images/status.png") no-repeat center center;
|
||||
background-size: 110% 160%;
|
||||
aspect-ratio: 2.4;
|
||||
overflow: hidden;
|
||||
margin: 0 1em;
|
||||
margin-bottom: 1.5em;
|
||||
padding-top: 5.2em;
|
||||
padding-left: 2em;
|
||||
padding-right: 2em;
|
||||
justify-content: space-around;
|
||||
}
|
||||
.card .status .info {
|
||||
display: flex;
|
||||
font-size: 2em;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin-bottom: 1.1em;
|
||||
padding: 0 0.6em;
|
||||
}
|
||||
.card .status .info .time {
|
||||
color: rgb(127, 127, 127);
|
||||
}
|
||||
.card .status .info .ranks {
|
||||
display: flex;
|
||||
gap: 0.5em;
|
||||
}
|
||||
.card .status .info .ranks .rank {
|
||||
width: 1.5em;
|
||||
position: relative;
|
||||
}
|
||||
.card .status .info .ranks .rank .count {
|
||||
position: absolute;
|
||||
bottom: -0.3em;
|
||||
right: -0.5em;
|
||||
font-size: 0.6em;
|
||||
border-radius: 50%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width: 1.2em;
|
||||
height: 1.2em;
|
||||
background-color: rgba(0, 0, 0, 0.5);
|
||||
}
|
||||
.card .status .cost {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
.card .status .cost .item {
|
||||
display: flex;
|
||||
align-items: flex-end;
|
||||
gap: 0.5em;
|
||||
}
|
||||
.card .status .cost .item .label {
|
||||
font-size: 0.68em;
|
||||
margin-bottom: 0.1em;
|
||||
color: rgb(176, 176, 176);
|
||||
}
|
||||
.card .item-card {
|
||||
border-image-source: url("./images/BgFrame01.png");
|
||||
border-image-slice: 200 100 70 280 fill;
|
||||
border-image-width: 2em 1em 0.7em 2.8em;
|
||||
border-image-outset: 0em 0em 0em 0em;
|
||||
border-image-repeat: stretch stretch;
|
||||
padding: 0.8em 0.5em;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
.card .item-card .title {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
background-color: rgba(0, 0, 0, 0.5);
|
||||
gap: 0.5em;
|
||||
padding: 0.2em 0.5em;
|
||||
font-size: 1.2em;
|
||||
box-shadow: 0 0.1em 0.05em rgba(0, 0, 0, 0.5);
|
||||
}
|
||||
.card .item-card .title .rank-icon {
|
||||
width: 1em;
|
||||
}
|
||||
.card .item-card .title .content {
|
||||
z-index: 0;
|
||||
position: relative;
|
||||
}
|
||||
.card .item-card .title .content::after {
|
||||
content: attr(data-content);
|
||||
-webkit-text-stroke: 0.22em #000;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
z-index: -1;
|
||||
}
|
||||
.card .item-card .title.a, .card .item-card .title.A {
|
||||
color: rgb(195, 56, 240);
|
||||
}
|
||||
.card .item-card .title.b, .card .item-card .title.B {
|
||||
color: rgb(93, 189, 246);
|
||||
}
|
||||
.card .item-card .title.s, .card .item-card .title.S {
|
||||
color: rgb(240, 145, 53);
|
||||
}
|
||||
.card .item-card .team {
|
||||
padding: 0.5em 2em;
|
||||
}
|
||||
.card .item-card .team .info {
|
||||
display: flex;
|
||||
background-color: rgba(0, 0, 0, 0.2);
|
||||
align-items: center;
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
.card .item-card .team .info .label {
|
||||
margin-right: auto;
|
||||
padding: 0 0.5em;
|
||||
}
|
||||
.card .item-card .team .info .time {
|
||||
background-color: rgba(23, 135, 255, 0.2);
|
||||
padding: 0 0.2em;
|
||||
font-size: 0.7em;
|
||||
color: rgba(255, 255, 255, 0.8);
|
||||
}
|
||||
.card .item-card .team .info .advantage {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-left: 0.3em;
|
||||
font-size: 0.8em;
|
||||
gap: 0.3em;
|
||||
background-color: rgba(0, 0, 0, 0.6);
|
||||
backdrop-filter: blur(0.1em);
|
||||
height: 100%;
|
||||
padding: 0.1em 0.4em;
|
||||
border-radius: 0.4em 0 0 0.4em;
|
||||
min-width: 5.5em;
|
||||
}
|
||||
.card .item-card .team .info .advantage .property {
|
||||
width: 1em;
|
||||
}
|
||||
.card .item-card .team .list {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr 1fr 0.8fr;
|
||||
align-items: flex-end;
|
||||
gap: 2em;
|
||||
}
|
||||
.card .item-card .team .list .item {
|
||||
width: 100%;
|
||||
position: relative;
|
||||
}
|
||||
.card .item-card .team .list .item > * {
|
||||
position: inherit;
|
||||
z-index: 1;
|
||||
}
|
||||
.card .item-card .team .list .item.bangboo {
|
||||
font-size: 0.8em;
|
||||
}
|
||||
.card .item-card .team .list .item::after {
|
||||
content: "";
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: 0.2em;
|
||||
left: -0.2em;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: rgb(138, 51, 183);
|
||||
z-index: 0;
|
||||
}
|
||||
.card .item-card .team .list .item .rank {
|
||||
position: absolute;
|
||||
top: 0.2em;
|
||||
left: 0.1em;
|
||||
width: 1.5em;
|
||||
color: white;
|
||||
z-index: 2;
|
||||
}
|
||||
.card .item-card .team .list .item.rankS::after {
|
||||
background: rgb(230, 119, 51);
|
||||
}
|
||||
.card .item-card .team .list .item.rankB::after {
|
||||
background: rgb(93, 183, 249);
|
||||
}
|
||||
.card .item-card .team .list .item .image {
|
||||
width: 100%;
|
||||
aspect-ratio: 0.8;
|
||||
background-color: #e2e2e2;
|
||||
}
|
||||
.card .item-card .team .list .item .image img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: contain;
|
||||
display: block;
|
||||
}
|
||||
.card .item-card .team .list .item .c-info {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
background: rgb(0, 0, 0);
|
||||
color: white;
|
||||
display: flex;
|
||||
text-align: center;
|
||||
}
|
||||
.card .item-card .team .list .item .c-info .level {
|
||||
flex-grow: 1;
|
||||
flex-shrink: 1;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
text-align: center;
|
||||
}
|
||||
.card .item-card .team .list .item .property {
|
||||
position: absolute;
|
||||
top: 0.2em;
|
||||
right: 0.1em;
|
||||
width: 1.6em;
|
||||
background-color: #000;
|
||||
border-radius: 50%;
|
||||
border: solid 0.1em #000;
|
||||
color: white;
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
/*# sourceMappingURL=index.css.map */
|
||||
140
resources/abyss/index.html
Normal file
140
resources/abyss/index.html
Normal file
|
|
@ -0,0 +1,140 @@
|
|||
{{extend defaultLayout}}
|
||||
|
||||
{{block 'css'}}
|
||||
<link rel="stylesheet" href="{{@sys.currentPath}}/index.css">
|
||||
{{/block}}
|
||||
|
||||
{{block 'main'}}
|
||||
<div class="card">
|
||||
{{include sys.playerInfo}}
|
||||
<div class="status">
|
||||
<div class="info">
|
||||
<div class="time">{{abyss.begin_time}}</div>
|
||||
<div class="ranks">
|
||||
<div class="rank">
|
||||
<div class="rank-icon s"></div>
|
||||
<div class="count">{{abyss.rate_count.S}}</div>
|
||||
</div>
|
||||
<div class="rank">
|
||||
<div class="rank-icon a"></div>
|
||||
<div class="count">{{abyss.rate_count.A}}</div>
|
||||
</div>
|
||||
<div class="rank">
|
||||
<div class="rank-icon b"></div>
|
||||
<div class="count">{{abyss.rate_count.B}}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="time">{{abyss.end_time}}</div>
|
||||
</div>
|
||||
<div class="cost">
|
||||
<div class="item">
|
||||
<div class="label">当期最快通关时间</div>
|
||||
<div class="value">{{abyss.fast_layer_time_str}}</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="label">最高通关防线</div>
|
||||
<div class="value">第{{abyss.max_layer}}防线</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<% include(sys.specialTitle, {en: 'ABYSS' , cn: '式舆防卫战' }) %>
|
||||
|
||||
{{each abyss.all_floor_detail floor i}}
|
||||
<div class="item-card">
|
||||
<div class="title {{floor.rating}}">
|
||||
<div class="rank-icon {{floor.rating}}"></div>
|
||||
<div class="content" data-content="{{floor.zone_name}}">{{floor.zone_name}}</div>
|
||||
</div>
|
||||
<div class="team">
|
||||
<div class="info">
|
||||
<div class="label">队伍1</div>
|
||||
<div class="time">{{floor.formattedTime}}</div>
|
||||
<div class="advantage">
|
||||
<span>有利</span>
|
||||
{{each floor.node_1.elements element i}}
|
||||
<div class="property {{element}}"></div>
|
||||
{{/each}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="list">
|
||||
<% for(let i=0 ; i < 3 ; i++) { %>
|
||||
{{if floor.node_1.avatars?.[i]}}
|
||||
<div class="item char rank{{floor.node_1.avatars[i].rarity}}">
|
||||
<div class="rank rank-icon {{floor.node_1.avatars[i].rarity}}"></div>
|
||||
<div class="property {{floor.node_1.avatars[i].element}}"></div>
|
||||
<div class="image">
|
||||
<img src="{{floor.node_1.avatars[i].square_icon}}" alt="">
|
||||
</div>
|
||||
<div class="c-info">
|
||||
<div class="level">等级{{floor.node_1.avatars[i].level}}</div>
|
||||
</div>
|
||||
</div>
|
||||
{{else}}
|
||||
<div class="item bangboo rankb"></div>
|
||||
{{/if}}
|
||||
<% } %>
|
||||
{{if floor.node_1.buddy}}
|
||||
<div class="item bangboo rank{{floor.node_1.buddy.rarity}}">
|
||||
<div class="rank rank-icon {{floor.node_1.buddy.rarity}}"></div>
|
||||
<div class="image">
|
||||
<img src="{{floor.node_1.buddy.square_icon}}" alt="">
|
||||
</div>
|
||||
<div class="c-info">
|
||||
<div class="level">等级{{floor.node_1.buddy.level}}</div>
|
||||
</div>
|
||||
</div>
|
||||
{{else}}
|
||||
<div class="item bangboo rankb"></div>
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="team">
|
||||
<div class="info">
|
||||
<div class="label">队伍2</div>
|
||||
<div class="time">{{floor.formattedTime}}</div>
|
||||
<div class="advantage">
|
||||
<span>有利</span>
|
||||
{{each floor.node_2.elements element i}}
|
||||
<div class="property {{element}}"></div>
|
||||
{{/each}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="list">
|
||||
<% for(let i=0 ; i < 3 ; i++) { %>
|
||||
{{if floor.node_2.avatars?.[i]}}
|
||||
<div class="item char rank{{floor.node_2.avatars[i].rarity}}">
|
||||
<div class="rank rank-icon {{floor.node_2.avatars[i].rarity}}"></div>
|
||||
<div class="property {{floor.node_2.avatars[i].element}}"></div>
|
||||
<div class="image">
|
||||
<img src="{{floor.node_2.avatars[i].square_icon}}" alt="">
|
||||
</div>
|
||||
<div class="c-info">
|
||||
<div class="level">等级{{floor.node_2.avatars[i].level}}</div>
|
||||
</div>
|
||||
</div>
|
||||
{{else}}
|
||||
<div class="item bangboo rankb"></div>
|
||||
{{/if}}
|
||||
<% } %>
|
||||
{{if floor.node_2.buddy}}
|
||||
<div class="item bangboo rank{{floor.node_2.buddy.rarity}}">
|
||||
<div class="rank rank-icon {{floor.node_2.buddy.rarity}}"></div>
|
||||
<div class="image">
|
||||
<img src="{{floor.node_2.buddy.square_icon}}" alt="">
|
||||
</div>
|
||||
<div class="c-info">
|
||||
<div class="level">等级{{floor.node_2.buddy.level}}</div>
|
||||
</div>
|
||||
</div>
|
||||
{{else}}
|
||||
<div class="item bangboo rankb"></div>
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
|
||||
{{/block}}
|
||||
235
resources/abyss/index.scss
Normal file
235
resources/abyss/index.scss
Normal file
|
|
@ -0,0 +1,235 @@
|
|||
.container {
|
||||
background-image: url('./images/bg2.jpg');
|
||||
}
|
||||
.card {
|
||||
margin: 0 1em;
|
||||
.user-info {
|
||||
margin: 0 1em;
|
||||
}
|
||||
.status {
|
||||
background: url('./images/status.png') no-repeat center center;
|
||||
background-size: 110% 160%;
|
||||
aspect-ratio: 2.4;
|
||||
overflow: hidden;
|
||||
margin: 0 1em;
|
||||
margin-bottom: 1.5em;
|
||||
padding-top: 5.2em;
|
||||
padding-left: 2em;
|
||||
padding-right: 2em;
|
||||
justify-content: space-around;
|
||||
.info {
|
||||
display: flex;
|
||||
font-size: 2em;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin-bottom: 1.1em;
|
||||
padding: 0 0.6em;
|
||||
.time {
|
||||
color: rgb(127, 127, 127);
|
||||
}
|
||||
.ranks {
|
||||
display: flex;
|
||||
gap: 0.5em;
|
||||
.rank {
|
||||
width: 1.5em;
|
||||
position: relative;
|
||||
.count {
|
||||
position: absolute;
|
||||
bottom: -0.3em;
|
||||
right: -0.5em;
|
||||
font-size: 0.6em;
|
||||
border-radius: 50%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width: 1.2em;
|
||||
height: 1.2em;
|
||||
background-color: rgba(0, 0, 0, 0.5);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.cost {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
font-size: 1.2em;
|
||||
.item {
|
||||
display: flex;
|
||||
align-items: flex-end;
|
||||
gap: 0.5em;
|
||||
.label {
|
||||
font-size: 0.68em;
|
||||
margin-bottom: 0.1em;
|
||||
color: rgb(176, 176, 176);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.item-card {
|
||||
border-image-source: url('./images/BgFrame01.png');
|
||||
border-image-slice: 200 100 70 280 fill;
|
||||
border-image-width: 2em 1em 0.7em 2.8em;
|
||||
border-image-outset: 0em 0em 0em 0em;
|
||||
border-image-repeat: stretch stretch;
|
||||
padding: 0.8em 0.5em;
|
||||
margin-bottom: 1em;
|
||||
.title {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
background-color: rgba(0, 0, 0, 0.5);
|
||||
gap: 0.5em;
|
||||
padding: 0.2em 0.5em;
|
||||
font-size: 1.2em;
|
||||
box-shadow: 0 0.1em 0.05em rgba(0, 0, 0, 0.5);
|
||||
.rank-icon {
|
||||
width: 1em;
|
||||
}
|
||||
.content {
|
||||
z-index: 0;
|
||||
position: relative;
|
||||
&::after {
|
||||
content: attr(data-content);
|
||||
-webkit-text-stroke: 0.22em #000;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
z-index: -1;
|
||||
}
|
||||
}
|
||||
&.a,
|
||||
&.A {
|
||||
color: rgb(195, 56, 240);
|
||||
}
|
||||
&.b,
|
||||
&.B {
|
||||
color: rgb(93, 189, 246);
|
||||
}
|
||||
&.s,
|
||||
&.S {
|
||||
color: rgb(240, 145, 53);
|
||||
}
|
||||
}
|
||||
|
||||
.team {
|
||||
padding: 0.5em 2em;
|
||||
.info {
|
||||
display: flex;
|
||||
background-color: rgba(0, 0, 0, 0.2);
|
||||
align-items: center;
|
||||
margin-bottom: 0.5em;
|
||||
.label {
|
||||
margin-right: auto;
|
||||
padding: 0 0.5em;
|
||||
}
|
||||
.time {
|
||||
background-color: rgba(23, 135, 255, 0.2);
|
||||
padding: 0 0.2em;
|
||||
font-size: 0.7em;
|
||||
color: rgba(255, 255, 255, 0.8);
|
||||
}
|
||||
.advantage {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-left: 0.3em;
|
||||
font-size: 0.8em;
|
||||
gap: 0.3em;
|
||||
background-color: rgba(0, 0, 0, 0.6);
|
||||
backdrop-filter: blur(0.1em);
|
||||
height: 100%;
|
||||
padding: 0.1em 0.4em;
|
||||
border-radius: 0.4em 0 0 0.4em;
|
||||
min-width: 5.5em;
|
||||
.property {
|
||||
width: 1em;
|
||||
}
|
||||
}
|
||||
}
|
||||
.list {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr 1fr 0.8fr;
|
||||
align-items: flex-end;
|
||||
gap: 2em;
|
||||
.item {
|
||||
width: 100%;
|
||||
position: relative;
|
||||
> * {
|
||||
position: inherit;
|
||||
z-index: 1;
|
||||
}
|
||||
&.bangboo {
|
||||
font-size: 0.8em;
|
||||
}
|
||||
&::after {
|
||||
content: '';
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: 0.2em;
|
||||
left: -0.2em;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: rgb(138, 51, 183);
|
||||
z-index: 0;
|
||||
}
|
||||
.rank {
|
||||
position: absolute;
|
||||
top: 0.2em;
|
||||
left: 0.1em;
|
||||
width: 1.5em;
|
||||
color: white;
|
||||
z-index: 2;
|
||||
}
|
||||
&.rankS {
|
||||
&::after {
|
||||
background: rgb(230, 119, 51);
|
||||
}
|
||||
}
|
||||
&.rankB {
|
||||
&::after {
|
||||
background: rgb(93, 183, 249);
|
||||
}
|
||||
}
|
||||
.image {
|
||||
width: 100%;
|
||||
aspect-ratio: 0.8;
|
||||
background-color: #e2e2e2;
|
||||
img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: contain;
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
.c-info {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
background: rgb(0, 0, 0);
|
||||
color: white;
|
||||
display: flex;
|
||||
text-align: center;
|
||||
.level {
|
||||
flex-grow: 1;
|
||||
flex-shrink: 1;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
.property {
|
||||
position: absolute;
|
||||
top: 0.2em;
|
||||
right: 0.1em;
|
||||
width: 1.6em;
|
||||
background-color: #000;
|
||||
border-radius: 50%;
|
||||
border: solid 0.1em #000;
|
||||
color: white;
|
||||
z-index: 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue