1
我遇到了一個有趣的動畫,它循環顯示列表中的單詞,並且在任何給定時間僅顯示其中一個單詞。你可以在這裏看到原文:https://codepen.io/yoannhel/pen/sJpDj。獨立於字體大小和列表項數量的CSS文本動畫
剝離一切都沒有關係,我們只剩下下面的HTML和CSS動畫:
.visible {
font-weight:600;
overflow:hidden;
height:40px;
padding:0 40px;
}
ul {
margin-top:0;
padding-left:110px;
text-align:left;
list-style:none;
-webkit-animation-name: change;
-webkit-animation-duration: 6s;
-webkit-animation-iteration-count: infinite;
animation-name: change;
animation-duration: 6s;
animation-iteration-count: infinite;
}
ul li {
line-height:40px;
margin:0;
}
@-webkit-keyframes change {
0%, 12%, 100% {transform:translateY(0);}
17%,29% {transform:translateY(-25%);}
34%,46% {transform:translateY(-50%);}
51%,63% {transform:translateY(-75%);}
68%,80% {transform:translateY(-50%);}
85%,97% {transform:translateY(-25%);}
}
@keyframes change {
0%, 12%, 100% {transform:translateY(0);}
17%,29% {transform:translateY(-25%);}
34%,46% {transform:translateY(-50%);}
51%,63% {transform:translateY(-75%);}
68%,80% {transform:translateY(-50%);}
85%,97% {transform:translateY(-25%);}
}
<div class='visible'>
<ul>
<li>world !</li>
<li>Bob !</li>
<li>users !</li>
<li>everybody !</li>
<li>Stack Overflow !</li>
</ul>
</div>
因爲在CSS最值是硬編碼,添加額外的項目例如,到ul
列表已經打破了動畫(如上面的片段所示)。
我已經試過擺弄數值,但作爲初學者,我還沒有想出所有參數之間的相互關係。看起來改變字體大小需要改變.visible
的高度和li
元素的line-height
;並且更改列表中項目的數量需要直接更改動畫change
。
我想達到同樣的效果,但是與列表中的字體大小和項目數量無關(我並不擔心屏幕大小,儘管在窄屏幕上工作也很酷)。有沒有人有如何做到這一點的想法?
感謝您的回答。但是,如果我更改項目數或字體大小,它仍然存在問題。理想情況下,老虎機將不得不根據'ul'中兒童的數量來適應翻譯,我猜... – dangom
我沒有看到任何方式來考慮沒有JavaScript的列表項的數量。作爲一個選項,您可以爲不同數量的項目預定義這些動畫類,並在後端或js上設置正確的類。在我的版本中,它取決於li項目的高度,而不是字體大小。 –
是的,我同意你的意見。不幸的是我的用例不允許JS出於安全原因。儘管硬編碼解決方案有效,但我想重用時卻不靈活。 – dangom