リスト内の単語をループし、いつでもそのうちの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
、line-height
に変更する必要があります。リスト内の項目数を変更するには、アニメーションchange
を直接変更する必要があります。
私は同じ効果を達成したいと思いますが、フォントサイズとリスト内の項目の数には依存しません(画面サイズはそれほど心配していませんが、 )。誰もそれを行う方法のアイデアを持っていますか?
お返事ありがとうございます。しかし、アイテム数やフォントサイズを変更しても問題はあります。理想的にはスロットマシンは 'ul'の子供の数に応じて翻訳を適応させる必要があります。 – dangom
JavaScriptを使わないでリスト項目の数を検討する方法はありません。オプションとして、さまざまなアイテム数のアニメーションクラスを事前定義し、バックエンドまたはjsで正しいクラスを設定することができます。私のバージョンでは、フォントのサイズではなく、アイテムの高さに依存します。 –
はい、私はあなたに同意します。残念ながら、私のユースケースではセキュリティ上の理由からJSが許可されていません。ハードコードされたソリューションは機能しますが、再利用したいときは柔軟性がありません。 – dangom