2016-12-09 3 views
0

Я нашел this awesome CSS-Marquee и работает почти на каждом браузере, но, к сожалению, не на MS Edge. При наведении курсора на Marquee это должно остановить, но края не нравитсяCSS Marquee on MS Edge

.marquee span:hover 
{ 
    animation-play-state: paused; 
} 

Это еще хуже, потому что край делает это невозможным, чтобы отметить текст в Marquee и все ссылки в Marquee сломаны.

Вот полный код:

<div class="marquee"> 
    <span>Some long text with a few <a href="#">Links</a> and bla bla</span> 
</div> 

/* define the animation */ 
@keyframes marquee 
{ 
    0% { transform: translate(0, 0); } 
    100% { transform: translate(-100%, 0); } 
} 

/* define your limiting container */ 
.marquee 
{ 
    width: 100%; 
    margin: 0 auto; 
    white-space: nowrap; 
    overflow: hidden; 
    box-sizing: border-box; 
} 

/* this is the tray moving around your container */ 
.marquee span 
{ 
    display: inline-block; 
    padding-left: 100%; 
    text-indent: 0; 
    animation: marquee 60s linear infinite; /* here you select the animation */ 
} 

/* pause the animation on mouse over */ 
.marquee span:hover 
{ 
    animation-play-state: paused; 
} 

Любые решения для этого? Может быть, отдельный CSS для Edge? И можно ли сделать скорость анимации одинаковой для разной длины текста?

EDIT: OK! Таким образом, я нашел способ сделать скорость то же самое с другой текстовой клыков:

<script> 
function calcSpeed(speed) { 
// Time = Distance/Speed 
var spanSelector = document.querySelector('.marquee span'); 
var spanLength = spanSelector.offsetWidth; 
var timeTaken = spanLength/speed; 
spanSelector.style.animationDuration = timeTaken + "s"; 
} 
calcSpeed(100); 
</script> 

Но есть еще проблема, что край не нравится «анимация-плей-состояние: приостановлена;» и сломать все ссылки в шатре

+0

Я не знаю, возможно ли для CSS ориентироваться только на Edge, но вы можете попробовать что-то вроде помещения анимационной части в '.marquee span: not (: hover)', чтобы вы могли избежать «анимации- state'. –

+1

Эта функция устарела. Хотя он может по-прежнему работать в некоторых браузерах, его использование не рекомендуется, поскольку оно может быть удалено в любое время. Старайтесь не использовать его. https://developer.mozilla.org/en-US/docs/Web/HTML/Element/marquee –

+0

Я не использую старый по умолчанию !!! Это анимация CSS !!! – Exo

ответ

0

Ok! Это мое решение! Теперь он имеет ту же скорость с разной длиной текста, и я перезаписываю css, если используется Edge. Теперь Marquee останавливается почти в каждом браузере, если вы наведите указатель мыши на Marquee и в Edge состояние анимации: приостановлено; изменяется на режим анимации: выполняется;

Вот код для той же скорости:

<script> 
function calcSpeed(speed) { 
// Time = Distance/Speed 
var spanSelector = document.querySelector('.marquee span'); 
var spanLength = spanSelector.offsetWidth; 
var timeTaken = spanLength/speed; 
spanSelector.style.animationDuration = timeTaken + "s"; 
} 
calcSpeed(100); 
</script> 

А вот код Edge:

@supports (-ms-ime-align:auto) { 
    .marquee span:hover { animation-play-state: running; } 
} 

Если у вас есть лучшее решение для этого, где анимация останавливается с краю, чем pls вывешивают его !!!

Смежные вопросы