feat: add back-and-forth animation for media title and artist overflow labels

This commit is contained in:
mr. M
2025-03-16 23:29:09 +01:00
parent fe9eb8884e
commit 401085f231
4 changed files with 40 additions and 9 deletions

View File

@@ -290,3 +290,23 @@
transform: scale(1); transform: scale(1);
} }
} }
@keyframes zen-back-and-forth-text {
0%,
20% {
transform: translateX(0);
left: 0;
}
50%,
60% {
transform: translateX(calc(-100% - 5px));
left: 100%;
}
80%,
100% {
transform: translateX(0);
left: 0;
}
}

View File

@@ -75,11 +75,6 @@
} }
&:hover { &:hover {
& #zen-media-main-vbox {
transition-delay: 0s;
gap: 6px;
}
.show-on-hover { .show-on-hover {
max-height: 50px; max-height: 50px;
padding: 5px; padding: 5px;
@@ -220,7 +215,7 @@
background: linear-gradient(to right, var(--zen-media-control-bg) 0%, transparent 100%); background: linear-gradient(to right, var(--zen-media-control-bg) 0%, transparent 100%);
pointer-events: none; pointer-events: none;
top: 6px; top: 6px;
left: -2px; left: 0;
height: calc(100% - 6px); height: calc(100% - 6px);
z-index: 1; z-index: 1;
} }
@@ -229,14 +224,17 @@
min-height: 16px; min-height: 16px;
margin-left: 0; margin-left: 0;
font-weight: 500; font-weight: 500;
position: relative; /* For the animation */
&[overflow] {
animation: zen-back-and-forth-text 8s infinite ease-in-out;
}
} }
} }
#zen-media-main-vbox { #zen-media-main-vbox {
height: 100%; height: 100%;
justify-content: space-between; justify-content: space-between;
transition: gap 0.3s ease;
gap: 0px;
} }
#zen-media-progress-hbox { #zen-media-progress-hbox {

View File

@@ -269,7 +269,7 @@
&:not([src]), &:not([src]),
&:-moz-broken { &:-moz-broken {
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100' height='100'%3E%3C/svg%3E") !important; content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100' height='100'%3E%3C/svg%3E") !important;
background: color-mix(in srgb, var(--zen-primary-color) 70%, transparent 30%); background: color-mix(in srgb, var(--zen-primary-color) 30%, transparent 70%);
} }
} }

View File

@@ -168,9 +168,22 @@ class ZenMediaController {
}, },
{} {}
); );
this.addLabelOverflows();
}); });
} }
addLabelOverflows() {
const elements = [this.mediaTitle, this.mediaArtist];
for (const element of elements) {
const parent = element.parentElement;
if (element.scrollWidth > parent.clientWidth) {
element.setAttribute('overflow', '');
} else {
element.removeAttribute('overflow');
}
}
}
setupMediaController(mediaController, browser) { setupMediaController(mediaController, browser) {
this._currentMediaController = mediaController; this._currentMediaController = mediaController;
this._currentBrowser = browser; this._currentBrowser = browser;