mirror of
https://github.com/zoriya/v10.git
synced 2026-08-16 02:45:09 +00:00
fix(skin): add subtle control transitions on touch devices (#985)
This commit is contained in:
@@ -17,7 +17,7 @@
|
||||
color: oklch(0 0 0);
|
||||
font-weight: 500;
|
||||
text-align: center;
|
||||
transition-property: background-color, color, outline-offset, transform;
|
||||
transition-property: background-color, color, outline-offset, scale;
|
||||
transition-duration: 150ms;
|
||||
transition-timing-function: ease-out;
|
||||
cursor: pointer;
|
||||
@@ -58,7 +58,7 @@
|
||||
}
|
||||
|
||||
&:active {
|
||||
transform: scale(0.9);
|
||||
scale: 0.9;
|
||||
}
|
||||
|
||||
& .media-icon {
|
||||
|
||||
@@ -3,31 +3,20 @@
|
||||
========================================================================== */
|
||||
|
||||
.media-default-skin {
|
||||
--media-caption-track-duration: 150ms;
|
||||
--media-caption-track-delay: 600ms;
|
||||
--media-caption-track-duration: var(--media-controls-transition-duration);
|
||||
--media-caption-track-delay: calc(var(--media-controls-transition-delay) + 25ms);
|
||||
--media-caption-track-y: -0.5rem;
|
||||
|
||||
&:has(.media-controls[data-visible]) {
|
||||
--media-caption-track-delay: 25ms;
|
||||
--media-caption-track-y: -3.5rem;
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
--media-caption-track-duration: 50ms;
|
||||
}
|
||||
}
|
||||
|
||||
.media-default-skin video::-webkit-media-text-track-container {
|
||||
/* NOTE: The delay must account for the controls delay/duration */
|
||||
transition: transform var(--media-caption-track-duration) ease-out;
|
||||
transition: translate var(--media-caption-track-duration) ease-out;
|
||||
transition-delay: var(--media-caption-track-delay);
|
||||
transform: translateY(var(--media-caption-track-y)) scale(0.98);
|
||||
translate: 0 var(--media-caption-track-y);
|
||||
scale: 0.98;
|
||||
z-index: 1;
|
||||
font-family: inherit;
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
.media-default-skin video::-webkit-media-text-track-container {
|
||||
transition-duration: 50ms;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
border-radius: 1.75rem;
|
||||
color: oklch(1 0 0);
|
||||
font-size: 0.875rem;
|
||||
transition-property: opacity, transform;
|
||||
transition-property: opacity, scale;
|
||||
transition-duration: 500ms;
|
||||
transition-delay: 100ms;
|
||||
transition-timing-function: linear(
|
||||
@@ -46,7 +46,7 @@
|
||||
.media-default-skin .media-error[data-starting-style] .media-error__dialog,
|
||||
.media-default-skin .media-error[data-ending-style] .media-error__dialog {
|
||||
opacity: 0;
|
||||
transform: scale(0.5);
|
||||
scale: 0.5;
|
||||
}
|
||||
|
||||
.media-default-skin .media-error__content {
|
||||
@@ -63,6 +63,7 @@
|
||||
|
||||
.media-default-skin .media-error__description {
|
||||
opacity: 0.7;
|
||||
overflow-wrap: anywhere;
|
||||
}
|
||||
|
||||
.media-default-skin .media-error__actions {
|
||||
|
||||
@@ -8,13 +8,13 @@
|
||||
border: 0;
|
||||
color: inherit;
|
||||
overflow: visible;
|
||||
transition-property: transform, scale, opacity, filter;
|
||||
transition-property: scale, opacity, filter;
|
||||
transition-duration: 150ms;
|
||||
|
||||
&[data-starting-style],
|
||||
&[data-ending-style] {
|
||||
opacity: 0;
|
||||
transform: scale(0.5);
|
||||
scale: 0.5;
|
||||
filter: blur(8px);
|
||||
}
|
||||
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
translate: -50% -50%;
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
.media-default-skin .media-slider__thumb {
|
||||
z-index: 10;
|
||||
position: absolute;
|
||||
transform: translate(-50%, -50%);
|
||||
translate: -50% -50%;
|
||||
width: 0.625rem;
|
||||
height: 0.625rem;
|
||||
background-color: currentColor;
|
||||
|
||||
@@ -29,11 +29,27 @@
|
||||
--media-surface-shadow-color: oklch(0 0 0 / 0.15);
|
||||
--media-surface-backdrop-filter: blur(16px) saturate(1.5);
|
||||
--media-video-border-radius: var(--media-border-radius, 2rem);
|
||||
--media-controls-transition-duration: 100ms;
|
||||
--media-controls-transition-delay: 0ms;
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
--media-border-color: oklch(1 0 0 / 0.15);
|
||||
}
|
||||
|
||||
&:has(.media-controls:not([data-visible])) {
|
||||
/* Slight delay to hide controls on non-touch devices after interaction */
|
||||
@media (pointer: fine) {
|
||||
--media-controls-transition-delay: 500ms;
|
||||
--media-controls-transition-duration: 300ms;
|
||||
}
|
||||
@media (pointer: coarse) {
|
||||
--media-controls-transition-duration: 150ms;
|
||||
}
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
--media-controls-transition-duration: 100ms;
|
||||
}
|
||||
}
|
||||
|
||||
/* Inner border ring */
|
||||
&::after {
|
||||
content: "";
|
||||
@@ -60,41 +76,45 @@
|
||||
inset-inline: 0.75rem;
|
||||
z-index: 10;
|
||||
color: var(--media-color-primary, oklch(1 0 0));
|
||||
will-change: scale, transform, filter, opacity;
|
||||
transition-timing-function: ease-out;
|
||||
transition-duration: var(--media-controls-transition-duration);
|
||||
transition-delay: var(--media-controls-transition-delay);
|
||||
transform-origin: bottom;
|
||||
|
||||
@media (pointer: fine) {
|
||||
transition-property: scale, transform, filter, opacity;
|
||||
transition-duration: 100ms;
|
||||
transition-delay: 0ms;
|
||||
will-change: scale, filter, opacity;
|
||||
transition-property: scale, filter, opacity;
|
||||
}
|
||||
|
||||
@media (pointer: coarse) {
|
||||
will-change: scale, opacity;
|
||||
transition-property: scale, opacity;
|
||||
}
|
||||
|
||||
&:not([data-visible]) {
|
||||
opacity: 0;
|
||||
pointer-events: none;
|
||||
scale: 0.9;
|
||||
filter: blur(8px);
|
||||
|
||||
@media (pointer: fine) {
|
||||
transition-duration: 300ms;
|
||||
transition-delay: 500ms;
|
||||
filter: blur(8px);
|
||||
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
transition-duration: 100ms;
|
||||
filter: blur(0);
|
||||
}
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
scale: 1;
|
||||
filter: blur(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Hide cursor when controls are hidden in fullscreen */
|
||||
.media-default-skin--video:fullscreen:has(.media-controls:not([data-visible])) {
|
||||
cursor: none;
|
||||
@media (pointer: fine) {
|
||||
.media-default-skin--video:fullscreen:has(.media-controls:not([data-visible])) {
|
||||
cursor: none;
|
||||
}
|
||||
}
|
||||
|
||||
/* ==========================================================================
|
||||
@@ -117,6 +137,7 @@
|
||||
transition-property: scale, opacity, filter;
|
||||
transition-duration: 150ms;
|
||||
transform-origin: bottom;
|
||||
pointer-events: none;
|
||||
|
||||
& .media-preview__thumbnail {
|
||||
max-width: 11rem;
|
||||
|
||||
Reference in New Issue
Block a user