我有以下的CSS程式碼; 問題在於動畫在我想要的方式下運作,但在10秒結束後重置,看起來很醜。理想情況下,我希望有一個無限動畫,而不是重新啟動,而是將圖像包裝起來,當圖像的左側超出畫布時,從右側回來。
@keyframes scrollRight { 0% { background-position-x: 30%; } 100% { background-position-x: 130%; } } .onrir { background-image: url('./text.svg'); background-repeat: no-repeat; background-size: cover; background-position: center; -webkit-text-fill-color: transparent; -webkit-background-clip: text; -webkit-text-stroke: 0.8px #fff; font-size: 10rem; line-height: 100%; background-size: 120% 120%; background-position: 30% -30%; animation: scrollRight 10s infinite linear forwards; }
我不知道如何在keyframes之外實現這個。
編輯:與此一起的html tailwind程式碼。
<h1 class="font-bold text-center text-white"> <span class="onrir xs text-transparent bg-clip-text"> Who am I? </span> </h1>
P粉8525780752024-03-21 09:21:42
您需要確保動畫在相同的位置結束,就像開始時一樣...
將100%
改為50%
,並新增100%
(與0%
相同)。 (將動畫持續時間乘以2,以適應原始持續時間)。
(未經測試(無法完全複製),但應該可以工作)
@keyframes scrollRight { 0% { background-position-x: 30%; } 50% { background-position-x: 130%; } 100% { background-position-x: 30%; } } .onrir { background-image: url('./text.svg'); background-repeat: no-repeat; background-size: cover; background-position: center; -webkit-text-fill-color: transparent; -webkit-background-clip: text; -webkit-text-stroke: 0.8px #fff; font-size: 10rem; line-height: 100%; background-size: 120% 120%; background-position: 30% -30%; animation: scrollRight 20s infinite linear forwards; }
示範:(希望這是您所指的)
*{ padding:0; margin:0; } .smooth,.jumps{ width: 100px; height: 100px; background: red; position: relative; font-size: 2rem; text-align: center; } .jumps{ animation: jumps 2s infinite; } .smooth{ animation: smooth 4s infinite; } @keyframes jumps{ 0%{ left: 0px; } 100%{ left: 200px; } } @keyframes smooth{ 0%{ left: 0px; } 50%{ left: 200px; } 100%{ left: 0px; } } .canvas{ position: absolute; left: 100px; width:100px; height:250px; background: lightgray; opacity: 0.5; z-index: 1; }
<div class="canvas"></div> <div class="jumps">jumps</div> <div style="height:50px"></div> <div class="smooth">smooth</div>