我有兩種類型的元素,我們稱它們爲.a
和.b
。將元素的屬性強制爲某個值,即使它正在動畫
他們可能會設置一些CSS動畫。我無法控制這些關鍵幀,無論它們是否設置,以及它們的動畫效果如何。他們可能會動畫opacity
。不過,我希望我的元素上的opacity
保持一定的值,比如說1
,無論它是否爲動畫。
考慮下面的代碼,在那裏我有三種情況:
- 沒有在我的元素被設置
- 有一個動畫的動畫,但它不是動畫
opacity
- 有一個動畫和
opacity
是屬性之間進行動畫
div {
/* some dummy styles so we can see stuff */
display: inline-block;
width: 5em; height: 5em;
background: purple;
}
[class*='ani'] { animation: a 1s ease-out infinite alternate }
.ani--one { animation-name: ani-one }
@keyframes ani-one { to { transform: scale(.5) } }
.ani--two { animation-name: ani-two }
@keyframes ani-two {
to {
opacity: 0;
background: orange;
}
}
<div class='a'></div>
<div class='b'></div>
<div class='a ani--one'></div>
<div class='b ani--one'></div>
<div class='a ani--two'></div>
<div class='b ani--two'></div>
在在前兩種情況下(1 =無關鍵幀動畫和2 =關鍵幀動畫,但它不是動畫opacity
)我不需要做任何事情。
在最後一種情況,但是,我需要以某種方式強制.a
元素的opacity
到1
,取消只是屬性的動畫效果。
我無法從.a
元素中刪除關鍵幀動畫,因爲我希望其他屬性(本例中爲background
,其他任何可能在一般情況下)繼續保持動畫效果。
我不能改變動畫,因爲我想讓它像最初指定的那樣工作,爲其他元素(.b
)設置動畫opacity
。
所以,問題是,我怎麼能檢測如果一個.a
元素,在opacity
屬性被動畫,如果是這樣,我怎麼能強迫它的價值留在1
,而其他屬性通過設置相同的關鍵幀正在動畫?
我想用香草JS解決這個問題,沒有庫。
而(真){elem.opacity = 1;}!但那是相當哈克...... –