2016-12-09 107 views
0

我發現this awesome CSS-Marquee,它幾乎適用於所有瀏覽器,但不幸的是不在MS Edge上。當你將鼠標懸停在字幕是應該停止,但邊緣不喜歡MS邊緣上的CSS Marquee

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

它甚至更糟,因爲邊緣使其無法標誌着字幕文本和跑馬燈各個環節都壞了。

下面是完整的代碼:

<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? 對於不同的文本長度,可以使動畫速度相同嗎?編輯: 行!所以,我發現了一個方法,使速度與不同的文本lenght相同:

<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> 

但仍有問題,該邊緣不喜歡「動畫播放狀態:暫停;」並打破Marquee中的所有鏈接

+0

我不知道CSS是否可能只針對Edge,但您可以嘗試像將動畫部分放在'.marquee span:not(:hover)'中,這樣您就可以避免使用動畫播放功能, state'。 –

+1

此功能已過時。雖然它可能在某些瀏覽器中仍然有效,但它的使用是不鼓勵的,因爲它可以在任何時候被刪除。儘量避免使用它。 https://developer.mozilla.org/en-US/docs/Web/HTML/Element/marquee –

+0

我不使用舊的默認!這是一個CSS動畫! – Exo

回答

0

好的!這是我的解決方案! 它現在有不同的文本長度相同的速度,如果使用Edge,我會覆蓋css。現在,如果您將鼠標懸停在「選取框」上並處於「邊緣」動畫播放狀態,幾乎每個瀏覽器都會停止選取框:已暫停;更改爲動畫播放狀態:正在運行;

下面是相同的速度碼:

<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> 

這裏是邊緣代碼:

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

如果您有在動畫與邊緣停止其中一個更好的解決方案,比請發佈!