Skip to content

Commit 8d5d11d

Browse files
committed
Move short player animation layer
1 parent 02f292a commit 8d5d11d

File tree

2 files changed

+84
-12
lines changed

2 files changed

+84
-12
lines changed

ui/component/shortsActions/view.jsx

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -87,26 +87,28 @@ const ShortsActions = React.memo<Props>(
8787
const slimeEffectTimeout = React.useRef(null);
8888

8989
React.useEffect(() => {
90-
const el = document.querySelector('.shorts__viewer');
90+
const el = document.querySelector('.shorts__viewer') || document.querySelector('.content__cover--shorts');
9191
if (!el) return;
92+
const cls = el.classList.contains('shorts__viewer') ? 'shorts__viewer--fire-glow' : 'content__cover--fire-glow';
9293
if (fireEffect) {
93-
el.classList.remove('shorts__viewer--fire-glow');
94+
el.classList.remove(cls);
9495
void el.offsetWidth;
95-
el.classList.add('shorts__viewer--fire-glow');
96+
el.classList.add(cls);
9697
} else {
97-
el.classList.remove('shorts__viewer--fire-glow');
98+
el.classList.remove(cls);
9899
}
99100
}, [fireEffect]);
100101

101102
React.useEffect(() => {
102-
const el = document.querySelector('.shorts__viewer');
103+
const el = document.querySelector('.shorts__viewer') || document.querySelector('.content__cover--shorts');
103104
if (!el) return;
105+
const cls = el.classList.contains('shorts__viewer') ? 'shorts__viewer--slime-glow' : 'content__cover--slime-glow';
104106
if (slimeEffect) {
105-
el.classList.remove('shorts__viewer--slime-glow');
107+
el.classList.remove(cls);
106108
void el.offsetWidth;
107-
el.classList.add('shorts__viewer--slime-glow');
109+
el.classList.add(cls);
108110
} else {
109-
el.classList.remove('shorts__viewer--slime-glow');
111+
el.classList.remove(cls);
110112
}
111113
}, [slimeEffect]);
112114

@@ -336,9 +338,12 @@ const ShortsActions = React.memo<Props>(
336338
</div>
337339
);
338340

339-
const shortsViewer = typeof document !== 'undefined' ? document.querySelector('.shorts__viewer') : null;
341+
const portalTarget =
342+
typeof document !== 'undefined'
343+
? document.querySelector('.shorts__viewer') || document.querySelector('.content__cover--shorts')
344+
: null;
340345

341-
const effectOverlays = shortsViewer && (
346+
const effectOverlays = portalTarget && (
342347
<>
343348
{fireEffect &&
344349
createPortal(
@@ -354,9 +359,9 @@ const ShortsActions = React.memo<Props>(
354359
/>
355360
))}
356361
</div>,
357-
shortsViewer
362+
portalTarget
358363
)}
359-
{slimeEffect && createPortal(<div className="shorts-viewer-slime" />, shortsViewer)}
364+
{slimeEffect && createPortal(<div className="shorts-viewer-slime" />, portalTarget)}
360365
</>
361366
);
362367

ui/scss/component/_content.scss

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1485,6 +1485,73 @@
14851485
}
14861486
}
14871487

1488+
.content__cover--shorts {
1489+
&.content__cover--fire-glow {
1490+
transition: none !important;
1491+
animation: shortsFireGlow 2s ease-out forwards;
1492+
}
1493+
1494+
&.content__cover--slime-glow::after {
1495+
content: '';
1496+
position: absolute;
1497+
inset: 0;
1498+
border-radius: inherit;
1499+
pointer-events: none;
1500+
z-index: 1;
1501+
animation: shortsSlimeInset 3s ease-out forwards;
1502+
}
1503+
1504+
.shorts-viewer-flames {
1505+
position: absolute;
1506+
left: 0;
1507+
right: 0;
1508+
bottom: -40px;
1509+
height: calc(60% + 40px);
1510+
z-index: 10;
1511+
pointer-events: none;
1512+
overflow: hidden;
1513+
filter: blur(2px);
1514+
animation: shortsFlamesContainer 2s ease-out forwards;
1515+
}
1516+
1517+
.shorts-viewer-flames__particle {
1518+
position: absolute;
1519+
bottom: -20px;
1520+
width: 70px;
1521+
height: 70px;
1522+
border-radius: 50%;
1523+
background-image: radial-gradient(rgb(255, 80, 0) 20%, rgba(255, 80, 0, 0) 70%);
1524+
mix-blend-mode: screen;
1525+
opacity: 0;
1526+
animation: shortsFlameRise 1s ease-in infinite;
1527+
}
1528+
1529+
.shorts-viewer-slime {
1530+
position: absolute;
1531+
inset: 0;
1532+
z-index: 10;
1533+
pointer-events: none;
1534+
border-radius: inherit;
1535+
background: radial-gradient(ellipse, rgba(129, 197, 84, 0.75) 40%, transparent 70%),
1536+
radial-gradient(ellipse, rgba(100, 180, 60, 0.7) 40%, transparent 70%),
1537+
radial-gradient(ellipse, rgba(129, 197, 84, 0.65) 40%, transparent 70%),
1538+
radial-gradient(ellipse, rgba(110, 190, 70, 0.7) 40%, transparent 70%),
1539+
radial-gradient(ellipse, rgba(129, 197, 84, 0.6) 40%, transparent 70%),
1540+
radial-gradient(ellipse, rgba(90, 170, 50, 0.65) 40%, transparent 70%),
1541+
radial-gradient(ellipse, rgba(120, 190, 75, 0.7) 40%, transparent 70%),
1542+
radial-gradient(ellipse, rgba(129, 197, 84, 0.6) 40%, transparent 70%),
1543+
radial-gradient(ellipse, rgba(95, 175, 55, 0.7) 40%, transparent 70%),
1544+
radial-gradient(ellipse, rgba(129, 197, 84, 0.65) 40%, transparent 70%),
1545+
radial-gradient(ellipse, rgba(110, 185, 65, 0.6) 40%, transparent 70%),
1546+
radial-gradient(ellipse, rgba(129, 197, 84, 0.7) 40%, transparent 70%);
1547+
background-size: 22px 35px, 16px 50px, 28px 30px, 14px 55px, 20px 40px, 18px 48px, 12px 42px, 24px 32px, 15px 52px,
1548+
20px 36px, 10px 45px, 26px 28px;
1549+
background-repeat: no-repeat;
1550+
filter: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='f'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.03 0.06' numOctaves='4' seed='3'/%3E%3CfeDisplacementMap in='SourceGraphic' scale='25'/%3E%3C/filter%3E%3C/svg%3E#f");
1551+
animation: shortsSlimeDrip 3s ease-in forwards;
1552+
}
1553+
}
1554+
14881555
@media (max-width: 1020px) {
14891556
.shorts-page {
14901557
width: 100vw !important;

0 commit comments

Comments
 (0)