[CSSチュートリアル】ネイティブCSSでテキストの無制限回転を実現する汎用的な方法
テキストローテーションは生活に密着しており、様々なスーパーマーケットや実店舗には、たいていテキストローテーションの看板が設置されています。
シナリオ
店頭の広告塔で、文字が横に動く告知を表示する必要がある(見やすくするためにボーダーを追加)。
画像
ロジックの説明
テキストの無限回転を実現するためのロジックは、大きく2つのポイントに分かれます。
- テキストが水平に移動する
- テキストの最初と最後
1点目は、CSSアニメーション、transform: translateX(-50%)を使って、自分自身の半分を左にパンすることで実現しています。
2つ目の実装は、1つ目のポイントに関連しています。CSSアニメーションはデフォルトで変異しています。つまり、再生が終了すると位置が初期位置に変異するので(変異は瞬間的で人間の目には認識できません)、変異を利用してテキストの最初と最後を実現することができるのです。
同じテキストを2つ使い、1つ目のテキストが終了して2つ目のテキストの再生が始まると、アニメーションの変異により再び1つ目のテキストの再生が始まりますが、2つのテキストの内容は同じなので、ユーザーには知覚されないのです。
考える
現在の実装は万能か?
この方法で、実はほとんどのニーズは解決しているのですが、テキストが少ない場合や、テキストの幅がウィンドウの幅より小さい場合に問題があり、私が描いた回転ロジックの模式図は、その一例に過ぎないのです。
テキストの幅がウィンドウの幅より小さい場合、どうすれば実現できますか?
理由は同じです。コアテキストの回転の1つは、2つの同じテキストを必要としますが、1つのテキストの幅がウィンドウの幅より大きくなければならないことが前提となっています。
この前提条件を満たすにはどうしたらいいのでしょうか?
答えは、テキストの幅がウィンドウの幅より大きくなるまで全体としてコピーし、それを2つの同じ段落に加工することです。
要約する
テキストの無限回転の要点は以下の通りです。
- テキストの幅がウィンドウの幅より大きいこと、テキストの幅が足りない場合は、テキストの幅がウィンドウの幅より大きくなるまでテキストを全体としてコピーすること
- 同じテキストが2つある場合
- 距離の50%移動
コード
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title> text-infinite rotation</title>
<style>
body {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
}
#wrap {
overflow: hidden;
position: relative;
width: 200px;
height: 20px;
white-space: nowrap;
}
#inner {
position: absolute;
animation: slide 5s linear infinite;
}
#first{
display: inline-block;
border: 1px solid red;
}
#second{
display: inline-block;
border: 1px solid green;
}
@keyframes slide {
0% {
transform: translateX(0);
}
100% {
transform: translateX(-50%);
}
}
</style>
</head>
<body>
<div id="wrap">
<div id="inner">
<span id="first"> Our main business is ramen, knife-cutting noodles, chow mein, covered rice</span>
<span id="second">This restaurant specializes in ramen, knife-cutting noodles, chow mein, and topped rice</span>
</div>
</div>
</body>
</html>
ネイティブCSSのこの記事は、これに導入され、無制限のテキストの回転を達成するために、より多くの関連するCSSは、以前の記事のスクリプトのホームを検索してくださいまたは次の関連記事を閲覧し続け、私はあなたが将来的にもっとスクリプトのホームをサポートすることを願っています!.
関連
-
[CSSチュートリアル】よくある2D変換を5つ実現するCSS
-
[CSSレイアウト例】float(フロート)、position(ポジション)プロパティの差分によるCSSレイアウト
-
[CSSチュートリアル】検索ボックスの非表示機能を実現するCSS(アニメーションの順送り・逆戻りシーケンス)
-
[CSSチュートリアル】CSS3Animationで実現する簡単な指のクリックアニメーションの例
-
[CSSチュートリアル】position:stickyでトップ吸い上げアプレット問題を完璧に解決
-
[CSSチュートリアル]CSS動的高さ遷移のアニメーション効果の実装の
-
フロントエンドの落とし穴 リソースはスタイルシートとして解釈されるが、MIMEタイプはtext/htmlで転送される。"<URL>". css スタイルの失敗
-
[CSSチュートリアル】SVGを使ったCSSアニメーションでエネルギーフローを表現する
-
[ブラウザ互換性チュートリアル】クロスドメイン実装を可能にする新版chromeブラウザの設定について
-
[CSSチュートリアル】CSS擬似クラス:empty makes my eyes shine(コード例)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[CSSチュートリアル】Pure CSSカスタム複数行抜け問題(原理から実装まで)
-
[CSSチュートリアル】クールなネオン効果を実現するピュアCSS(デモあり)
-
[css3]css3アニメーションマウスが絵の上に置かれると徐々に大きくなり、マウスが絵から離れると徐々に縮む効果
-
[CSSチュートリアル】子要素のmargin-topが親要素の移動を引き起こす問題解決
-
[css3]css3によるフレックスレイアウト幅の解決方法が有効でない件
-
[CSSチュートリアル】背景画像画面の適応的な実装を実現するCSS
-
[CSSチュートリアル】テーブルの最大幅と最小幅の相性問題と解決策を解説
-
[css3] 翻訳効果のあるcss3例(翻訳:translate)
-
[CSSチュートリアル]フレックス内のボタンを縦に中央寄せにしない意外な解決法
-
[CSSチュートリアル】CSSマージンの重なりと解決策を詳しく探る