mirror of
https://github.com/mediacms-io/mediacms.git
synced 2025-11-07 07:58:53 -05:00
211 lines
5.9 KiB
CSS
211 lines
5.9 KiB
CSS
/* ===== UNIFIED BUTTON TOOLTIP SYSTEM ===== */
|
|
/* Comprehensive tooltip styles for all VideoJS buttons */
|
|
|
|
/* Base tooltip styles using ::after pseudo-element */
|
|
.video-js .vjs-control-bar .vjs-control {
|
|
position: relative;
|
|
}
|
|
|
|
/* Universal tooltip styling for all buttons */
|
|
.video-js .vjs-control-bar .vjs-control::after {
|
|
content: attr(title);
|
|
position: absolute;
|
|
bottom: 100%;
|
|
left: 50%;
|
|
transform: translateX(-50%);
|
|
background: rgba(0, 0, 0, 0.9);
|
|
color: white;
|
|
padding: 8px 12px;
|
|
border-radius: 6px;
|
|
font-size: 13px;
|
|
white-space: nowrap;
|
|
pointer-events: none;
|
|
opacity: 0;
|
|
visibility: hidden;
|
|
transition:
|
|
opacity 0.2s ease,
|
|
visibility 0.2s ease,
|
|
transform 0.2s ease;
|
|
z-index: 1000;
|
|
margin-bottom: 10px;
|
|
font-family:
|
|
-apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans",
|
|
"Droid Sans", "Helvetica Neue", sans-serif;
|
|
font-weight: 500;
|
|
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4);
|
|
border: 1px solid rgba(255, 255, 255, 0.15);
|
|
backdrop-filter: blur(8px);
|
|
-webkit-backdrop-filter: blur(8px);
|
|
}
|
|
|
|
/* Show tooltip on hover and focus for desktop */
|
|
@media (hover: hover) and (pointer: fine) {
|
|
.video-js .vjs-control-bar .vjs-control:hover::after,
|
|
.video-js .vjs-control-bar .vjs-control:focus::after {
|
|
opacity: 1;
|
|
visibility: visible;
|
|
transform: translateX(-50%) translateY(-2px);
|
|
}
|
|
}
|
|
|
|
/* Specific button tooltips - override content when needed */
|
|
.video-js .vjs-play-control::after {
|
|
content: attr(title);
|
|
}
|
|
|
|
.video-js .vjs-mute-control::after {
|
|
content: attr(title);
|
|
}
|
|
|
|
.video-js .vjs-fullscreen-control::after {
|
|
content: attr(title);
|
|
}
|
|
|
|
.video-js .vjs-picture-in-picture-toggle::after {
|
|
content: attr(title);
|
|
}
|
|
|
|
.video-js .vjs-subtitles-button::after {
|
|
content: attr(title);
|
|
}
|
|
|
|
.video-js .vjs-chapters-button::after {
|
|
content: attr(title);
|
|
}
|
|
|
|
/* Custom button tooltips */
|
|
.video-js .vjs-autoplay-toggle::after {
|
|
content: attr(title);
|
|
}
|
|
|
|
.video-js .vjs-next-video-button::after {
|
|
content: attr(title);
|
|
}
|
|
|
|
.video-js .vjs-settings-button::after {
|
|
content: attr(title);
|
|
}
|
|
|
|
.video-js .vjs-remaining-time::after {
|
|
content: attr(title);
|
|
}
|
|
|
|
/* Touch device support - show tooltips on tap */
|
|
@media (hover: none) and (pointer: coarse) {
|
|
/* Hide tooltips by default on touch devices */
|
|
.video-js .vjs-control-bar .vjs-control::after {
|
|
display: none;
|
|
}
|
|
|
|
/* Show tooltip when touch-active class is added */
|
|
.video-js .vjs-control-bar .vjs-control.touch-tooltip-active::after {
|
|
display: block;
|
|
opacity: 1;
|
|
visibility: visible;
|
|
transform: translateX(-50%) translateY(-2px);
|
|
}
|
|
}
|
|
|
|
/* Tablet-specific adjustments */
|
|
@media (min-width: 768px) and (max-width: 1024px) and (hover: none) {
|
|
.video-js .vjs-control-bar .vjs-control.touch-tooltip-active::after {
|
|
font-size: 14px;
|
|
padding: 10px 14px;
|
|
}
|
|
}
|
|
|
|
/* Mobile-specific adjustments */
|
|
@media (max-width: 767px) {
|
|
.video-js .vjs-control-bar .vjs-control.touch-tooltip-active::after {
|
|
font-size: 12px;
|
|
padding: 6px 10px;
|
|
margin-bottom: 8px;
|
|
}
|
|
}
|
|
|
|
/* Exclude volume and time components from tooltips */
|
|
.video-js .vjs-volume-panel::after,
|
|
.video-js .vjs-volume-panel::before,
|
|
.video-js .vjs-mute-control::after,
|
|
.video-js .vjs-mute-control::before,
|
|
.video-js .vjs-volume-control::after,
|
|
.video-js .vjs-volume-control::before,
|
|
.video-js .vjs-volume-bar::after,
|
|
.video-js .vjs-volume-bar::before,
|
|
.video-js .vjs-remaining-time::after,
|
|
.video-js .vjs-current-time-display::after,
|
|
.video-js .vjs-duration-display::after,
|
|
.video-js .vjs-progress-control::after {
|
|
display: none !important;
|
|
opacity: 0 !important;
|
|
visibility: hidden !important;
|
|
content: none !important;
|
|
}
|
|
|
|
/* Specifically target volume panel and all its children to remove tooltips */
|
|
.video-js .vjs-volume-panel[title],
|
|
.video-js .vjs-volume-panel *[title],
|
|
.video-js .vjs-mute-control[title],
|
|
.video-js .vjs-volume-control[title],
|
|
.video-js .vjs-volume-control *[title],
|
|
.video-js .vjs-volume-bar[title] {
|
|
/* These selectors target elements with title attributes */
|
|
}
|
|
|
|
/* Force remove tooltips from volume components using attribute selector */
|
|
.video-js .vjs-volume-panel,
|
|
.video-js .vjs-mute-control,
|
|
.video-js .vjs-volume-control {
|
|
/* Remove title attribute via CSS (not possible, but we can override the tooltip) */
|
|
}
|
|
|
|
.video-js .vjs-volume-panel:hover::after,
|
|
.video-js .vjs-volume-panel:focus::after,
|
|
.video-js .vjs-mute-control:hover::after,
|
|
.video-js .vjs-mute-control:focus::after {
|
|
display: none !important;
|
|
opacity: 0 !important;
|
|
visibility: hidden !important;
|
|
content: none !important;
|
|
}
|
|
|
|
/* Tooltip arrow removed - no more triangles */
|
|
.video-js .vjs-control-bar .vjs-control::before {
|
|
display: none !important;
|
|
}
|
|
|
|
/* Disable native VideoJS tooltips to prevent conflicts */
|
|
.video-js .vjs-control-bar .vjs-control .vjs-control-text {
|
|
position: absolute !important;
|
|
left: -9999px !important;
|
|
width: 1px !important;
|
|
height: 1px !important;
|
|
overflow: hidden !important;
|
|
clip: rect(1px, 1px, 1px, 1px) !important;
|
|
}
|
|
|
|
/* Specifically hide play/pause button text that appears inside the icon */
|
|
.video-js .vjs-play-control .vjs-control-text,
|
|
.video-js .vjs-play-control span.vjs-control-text {
|
|
display: none !important;
|
|
visibility: hidden !important;
|
|
opacity: 0 !important;
|
|
}
|
|
|
|
/* Override VideoJS native control text tooltips completely */
|
|
.video-js button.vjs-button:hover span.vjs-control-text {
|
|
opacity: 0 !important;
|
|
visibility: hidden !important;
|
|
display: none !important;
|
|
}
|
|
|
|
/* Re-enable for screen readers only when focused */
|
|
.video-js .vjs-control-bar .vjs-control:focus .vjs-control-text {
|
|
position: absolute !important;
|
|
left: -9999px !important;
|
|
width: 1px !important;
|
|
height: 1px !important;
|
|
overflow: hidden !important;
|
|
clip: rect(1px, 1px, 1px, 1px) !important;
|
|
}
|