fix(ui): update halo image version and enhance header styles with animations
这个提交包含在:
@@ -1,6 +1,6 @@
|
|||||||
services:
|
services:
|
||||||
halo:
|
halo:
|
||||||
image: registry.fit2cloud.com/halo/halo:2.20.10
|
image: registry.fit2cloud.com/halo/halo:2.22.12
|
||||||
volumes:
|
volumes:
|
||||||
- ./data:/root/.halo2
|
- ./data:/root/.halo2
|
||||||
- ../:/root/.halo2/themes/theme-terminal
|
- ../:/root/.halo2/themes/theme-terminal
|
||||||
|
|||||||
+86
-1
@@ -13,10 +13,95 @@
|
|||||||
|
|
||||||
.dividing {
|
.dividing {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
background: repeating-linear-gradient(90deg, var(--foreground), var(--foreground) 2px, transparent 0, transparent 10px);
|
|
||||||
display: block;
|
display: block;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 25px;
|
height: 25px;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
// 虚线背景层 - 带遮罩
|
||||||
|
&::before {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background: repeating-linear-gradient(
|
||||||
|
90deg,
|
||||||
|
var(--foreground),
|
||||||
|
var(--foreground) 2px,
|
||||||
|
transparent 0,
|
||||||
|
transparent 10px
|
||||||
|
);
|
||||||
|
background-size: 10px 100%;
|
||||||
|
animation: line-flow 3s linear infinite;
|
||||||
|
|
||||||
|
// 遮罩层实现虚线淡入淡出效果
|
||||||
|
mask-image: linear-gradient(
|
||||||
|
90deg,
|
||||||
|
transparent 0%,
|
||||||
|
black 3%,
|
||||||
|
black 97%,
|
||||||
|
transparent 100%
|
||||||
|
);
|
||||||
|
-webkit-mask-image: linear-gradient(
|
||||||
|
90deg,
|
||||||
|
transparent 0%,
|
||||||
|
black 3%,
|
||||||
|
black 97%,
|
||||||
|
transparent 100%
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 扫描光效 - 模拟终端扫描线
|
||||||
|
&::after {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
left: -30%;
|
||||||
|
top: 50%;
|
||||||
|
transform: translateY(-50%);
|
||||||
|
width: 30%;
|
||||||
|
height: 120%;
|
||||||
|
filter: blur(4px);
|
||||||
|
background: linear-gradient(
|
||||||
|
90deg,
|
||||||
|
transparent 0%,
|
||||||
|
var(--green) 80%,
|
||||||
|
transparent 100%
|
||||||
|
);
|
||||||
|
opacity: 0.3;
|
||||||
|
animation: scan-line 5s ease-in-out infinite;
|
||||||
|
pointer-events: none;
|
||||||
|
z-index: 10;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 虚线流动动画 - 模拟加载进度
|
||||||
|
@keyframes line-flow {
|
||||||
|
0% {
|
||||||
|
background-position: 0 0;
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
background-position: 10px 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 扫描线动画 - 模拟终端扫描效果
|
||||||
|
@keyframes scan-line {
|
||||||
|
0% {
|
||||||
|
left: -20%;
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
30% {
|
||||||
|
opacity: .3;
|
||||||
|
}
|
||||||
|
70% {
|
||||||
|
opacity: .3;
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
left: 80%;
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.menu {
|
.menu {
|
||||||
|
|||||||
@@ -51,6 +51,7 @@
|
|||||||
<a
|
<a
|
||||||
class="text-gray-600 hover:text-blue-600"
|
class="text-gray-600 hover:text-blue-600"
|
||||||
th:href="${menuItem.status.href}"
|
th:href="${menuItem.status.href}"
|
||||||
|
th:target="${menuItem.spec.target?.value}"
|
||||||
th:text="${menuItem.status.displayName + (not #lists.isEmpty(menuItem.children) ? '▾' : '')}"
|
th:text="${menuItem.status.displayName + (not #lists.isEmpty(menuItem.children) ? '▾' : '')}"
|
||||||
></a>
|
></a>
|
||||||
<ul
|
<ul
|
||||||
@@ -61,8 +62,9 @@
|
|||||||
<li th:each="childMenuItem : ${menuItem.children}">
|
<li th:each="childMenuItem : ${menuItem.children}">
|
||||||
<a
|
<a
|
||||||
class="text-gray-600 hover:text-blue-600"
|
class="text-gray-600 hover:text-blue-600"
|
||||||
th:href="${childMenuItem.status.href} "
|
th:href="${childMenuItem.status.href}"
|
||||||
th:text="${childMenuItem.status.displayName} "
|
th:target="${childMenuItem.spec.target?.value}"
|
||||||
|
th:text="${childMenuItem.status.displayName}"
|
||||||
></a>
|
></a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|||||||
在新议题中引用
屏蔽一个用户