feat: Refactor stick device positioning for improved responsiveness and animation
This commit is contained in:
@@ -3074,6 +3074,9 @@ p:last-child { margin-bottom: 0; }
|
||||
align-self: center;
|
||||
}
|
||||
.ts-stage {
|
||||
--ts-stick-right: -96px;
|
||||
--ts-stick-start-x: 80px;
|
||||
--ts-stick-plug-x: 0px;
|
||||
position: relative;
|
||||
width: 100%;
|
||||
aspect-ratio: 4/3;
|
||||
@@ -3451,9 +3454,9 @@ p:last-child { margin-bottom: 0; }
|
||||
/* ── Stick device ── */
|
||||
.ts-stick {
|
||||
position: absolute;
|
||||
right: -44px;
|
||||
right: var(--ts-stick-right);
|
||||
top: 50%;
|
||||
transform: translateY(-50%) translateX(80px) scaleX(-1);
|
||||
transform: translateY(-50%) translateX(var(--ts-stick-start-x)) scaleX(-1);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
opacity: 0;
|
||||
@@ -3522,20 +3525,22 @@ p:last-child { margin-bottom: 0; }
|
||||
animation: ts-slide-in 1.4s cubic-bezier(0.22, 0.61, 0.36, 1) forwards;
|
||||
}
|
||||
@keyframes ts-slide-in {
|
||||
0% { opacity: 0; transform: translateY(-50%) translateX(80px) scaleX(-1); }
|
||||
20% { opacity: 1; transform: translateY(-50%) translateX(60px) scaleX(-1); }
|
||||
70% { transform: translateY(-50%) translateX(8px) scaleX(-1); }
|
||||
85% { transform: translateY(-50%) translateX(12px) scaleX(-1); }
|
||||
100% { opacity: 1; transform: translateY(-50%) translateX(6px) scaleX(-1); }
|
||||
0% { opacity: 0; transform: translateY(-50%) translateX(var(--ts-stick-start-x)) scaleX(-1); }
|
||||
20% { opacity: 1; transform: translateY(-50%) translateX(calc(var(--ts-stick-start-x) - 20px)) scaleX(-1); }
|
||||
70% { transform: translateY(-50%) translateX(calc(var(--ts-stick-plug-x) + 8px)) scaleX(-1); }
|
||||
85% { transform: translateY(-50%) translateX(calc(var(--ts-stick-plug-x) + 12px)) scaleX(-1); }
|
||||
100% { opacity: 1; transform: translateY(-50%) translateX(var(--ts-stick-plug-x)) scaleX(-1); }
|
||||
}
|
||||
/* Responsive scale-down */
|
||||
@media (max-width: 900px) {
|
||||
.ts-stage { --ts-stick-right: -84px; }
|
||||
.ts-tv__body { width: 320px; height: 188px; }
|
||||
.ts-tv__feet { width: 178px; }
|
||||
.ts-stick__body { width: 68px; height: 26px; }
|
||||
.ts-stage { padding-right: 72px; }
|
||||
}
|
||||
@media (max-width: 640px) {
|
||||
.ts-stage { --ts-stick-right: -66px; }
|
||||
.ts-tv__body { width: 240px; height: 142px; }
|
||||
.ts-tv__feet { width: 134px; }
|
||||
.ts-stick__body { width: 52px; height: 20px; }
|
||||
@@ -3547,7 +3552,7 @@ p:last-child { margin-bottom: 0; }
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
.ts-stage .ts-stick {
|
||||
opacity: 1;
|
||||
transform: translateY(-50%) translateX(6px) scaleX(-1);
|
||||
transform: translateY(-50%) translateX(var(--ts-stick-plug-x)) scaleX(-1);
|
||||
}
|
||||
.ts-stage.is-animating .ts-stick { animation: none; }
|
||||
.ts-stage.is-plugged .ts-tv__screen { animation: none; }
|
||||
|
||||
Reference in New Issue
Block a user