Мне не удалось найти решение.
Поэтому я решил использовать JavaScript, чтобы решить мою проблему. onmouseover
и onmouseout
используются для переключения видимости.
Позже я обнаружил, что Safari не очень хорошо работает с группами селекторов (многие селекторы разделены запятой). И мне пришлось продублировать мой стиль, чтобы сохранить эффект наведения на Css для других браузеров и другой идентичный стиль в классе для Safari.
/* This does not work
.controls button:hover,
.controls button.is-hover */
.controls button:hover {
background-color: white;
color: blue;
}
.controls button.is-hover {
background-color: white;
color: blue;
}
var controls = document.querySelectorAll('.video-controls li');
var showControls = function() {
controls.forEach(function(control){
control.style.visibility = 'visible';
});
};
var hideControls = function() {
controls.forEach(function(control){
control.style.visibility = 'hidden';
});
};
document.querySelectorAll('.container, .controls, .controls li, .controls button').forEach(function(el){
el.onmouseover = showControls;
el.onmouseout = hideControls;
});
Это решило все подобные проблемы с псевдоклассами, такими как :hover
и :fullscreen
.
Обратите внимание, что hideControls
и showControls
должны объединяться с помощью одной ограниченной функции; el.onmouseover = setVisibility.bind('visible')
. Но я не пробовал.