ホームページ ウェブフロントエンド htmlチュートリアル twitterの詳しい説明はanimation_html/css_WEB-ITnoseなど

twitterの詳しい説明はanimation_html/css_WEB-ITnoseなど

Jun 24, 2016 am 11:31 AM

今日、@老气网红丝丝による Weibo の投稿を目にしました。Codepen がアドレス http://codepen.io/yisi/pen/ LpXVJb で Twitter のようなアニメーション効果のソース コードを投稿しました。見てみましたが、ソースコードも非常にシンプルで、CSS3 で使用されているテクニックをいくつか紹介します。

最初にレンダリングを見てみましょう。明確に見るために、アニメーションの時間間隔を長く設定しました。

ソースコードを投稿します: js は使用されず、html と css のみが使用されます。

htmlコードは以下の通り

<h1>Twitter heart button animation</h1><input type="checkbox" name="" id="btn" /><label class="btn-love" for="btn"></label><a href="http://codepen.io/chrisgannon/pen/NGLKWO" target="_blank">The SVG version</a>
ログイン後にコピー

css コードは以下の通り

 1     body { 2           text-align: center; 3     } 4  5     h1 { 6       text-align: center; 7       color: #555; 8       font-weight: normal; 9     }10 11     #btn {12       position: absolute;13       left: -100%;14       top: -100%;15       opacity: 0;16       z-index: -1;17     }18 19     .btn-love {20       position: absolute;21       z-index: -1;22       left: 0;23       right: 0;24       top: 0;25       bottom: 0;26       margin: auto;27       height: 100%;28       width: 100%;29       cursor: pointer;30     }31     .btn-love:after {32       content: "";33       position: absolute;34       left: 0;35       right: 0;36       top: 100px;37       margin: 0 auto;38       background: url(https://abs.twimg.com/a/1446862637/img/t1/web_heart_animation.png) 0 0 no-repeat;39       background-size: 2900%;40       height: 100px;41       width: 100px;42     }43 44     #btn:checked + .btn-love:after {45       -webkit-animation: heart-burst steps(28) .8s 1 both;46               animation: heart-burst steps(28) .8s 1 both;47     }48 49     @-webkit-keyframes heart-burst {50       0% {51         background-position: left;52       }53       100% {54         background-position: right;55       }56     }57 58     @keyframes heart-burst {59       0% {60         background-position: left;61       }62       100% {63         background-position: right;64       }65     }
ログイン後にコピー

css 先ほどのコードもわかりやすいので、31行目から説明します。これは、クラス「btn-love」を持つ以前の対応するラベルの背景画像を設定するためです。背景画像にリンクが追加されており、このリンクの後の背景画像が以下の長い画像であることがわかります。

看到这里大家也能猜到,就是用个长图设置开始显示的位置和结束时的位置,并设置其变化的时间,一帧一帧的播放,来模拟一个动画效果。
ログイン後にコピー

#btn:checked + .btn-love:after {      -webkit-animation: heart-burst steps(28) .8s 1 both;              animation: heart-burst steps(28) .8s 1 both;    }
ログイン後にコピー

:checked は、選択されたすべての入力要素と一致するために css3 で使用されます。これについては疑いの余地はありません。

中括弧内のアニメーション効果を見てください。これは CSS3 のアニメーション属性を使用します。この属性は、次のアニメーション属性を設定するために使用される省略された属性です。

animation-name: セレクターにバインドする必要があるキーフレーム名を指定します。

animation-duration: アニメーションの完了にかかる時間を秒またはミリ秒で指定します。

animation-timing-function: アニメーションのスピード カーブを指定します。値は、e​​ase-in |ease-in-out | cubic-bezier(x1, y1) です。 , x2, y2)

animation-delay: アニメーションが開始するまでの遅延を指定します。

animation-iteration-count: アニメーションを再生する回数を指定します。

animation-direction: アニメーションを順番に逆方向に再生するかどうかを指定します。

animation-play-state: 属性はアニメーションが実行中か一時停止かを指定します。

animation-fill-mode: アニメーションの再生前後にアニメーション効果を表示するかどうかを指定します。

括弧内には合計5つの値が設定されます。

最初の値はアニメーション名に設定されます。 heart-burstはこのアニメーションに設定されているアニメーション名です。

2 番目の値は、animation-timing-function に設定されます。ステップ(28)は何を意味しますか?上記のアニメーションは線形ではなく、画像をフレーム単位で再生するのと似ているため、step() 関数を導入する必要があります。この関数とこの属性の具体的な使用方法については、以下で詳しく説明します。

animation-timing-function 属性は次の値を取ることができます。

ease: アニメーションはゆっくり始まり、その後加速し、最後に遅くなります。

linear: アニメーションの速度は最初から最後まで同じです。

ease-in: 低速で開始します。

ease-out: 低速で終了;

ease-in-out: アニメーションは低速で開始および終了します

step 関数はステップ関数を指定します

最初のパラメータは間隔の数を指定します。時間関数 (ゼロより大きい正の整数である必要があります)。アニメーションをさまざまなステップに分割します。

2 番目のパラメータはオプションで、start と end の 2 つの値を受け入れ、各間隔の開始点または終了点でのステップ変化を指定します。デフォルトは end です。

step-start は、steps(1,start) と同等で、アニメーションは 1 つのステップに分割され、start の左端の部分がアニメーション実行時の開始となります。ステップ(1,end): アニメーションは 1 つのステップに分割され、アニメーションの実行は終了エンドポイントから開始され、デフォルト値は end です。

そして、animation-timing-function 属性は、@keyframes 全体ではなく、アニメーションの各フレームおよび各フレームの設定用であり、@keyframes で設定されたキーフレームと同等ではありません。

今の例も例として考えてみましょう。以下のコードは 0% から 100% に直接変化することがわかります。

@keyframes heart-burst {      0% {        background-position: left;      }      100% {        background-position: right;      }    }
ログイン後にコピー

0% と 100% に任意の状態を追加すると、次のようなアニメーションになります。明らかな観察ですが、アニメーション時間はまだ延長されています)

アニメーションに問題があることがわかります。

3 番目の値は、略語順にアニメーション遅延にする必要がありますか?実際にはそうではなく、アニメーション期間である必要があります。アニメーションで秒またはミリ秒の値のみを設定する場合、その値はデフォルトのanimation-durationの値になります。 2 つの値が設定されている場合、最初にアニメーション期間、次にアニメーション遅延の順に対応する値が割り当てられます。したがって、0.8 秒はアニメーション全体を完了するのにかかる合計時間です。 0.8 秒の値を大きく設定してみると、アニメーション設定の遅延が大きくなったのではなく、アニメーションが遅くなったことがわかり、私の発言が検証されました。

4 番目の値は、animation-iteration-count の値を設定することです。つまり、1 セットはアニメーションのループ数を設定するもので、これを 2 に変更すると、最初の再生が終了した後に 2 回目のアニメーションが再生されることがわかります。

5 番目の値は、animation-fill-mode の値を設定することです。 anime-fill-mode 属性には、次のように合計 4 つの値があります。

none: デフォルトの動作を変更しません。

forwards: アニメーションが完了したら、最後のプロパティ値 (最後のキーフレームで定義されたもの) を保持します。

backwards: アニメーションがアニメーション遅延で指定された期間表示される前に、開始プロパティ値 (最初のキーフレームで定義) を適用します。

両方: 順方向と逆方向の両方のフィル モードが適用されます。

上記の設定が両方ともキャンセルされると、次のアニメーションが表示されることがわかります。 (!!! ここのフォントサイズは何度も修正しましたが、なぜか調整できないので、そのまま読みます...!!!)

がご覧いただけますアニメーションが終了すると、最終的な「赤いハート」状態はアニメーションの最初のフレームに戻ります。したがって、両方の設定の目的は、アニメーションの開始と終了後にアニメーションが配置されているフレームを維持することであると結論付けることができます。

このアニメーションに関係しないのは、アニメーション遅延、アニメーション方向、およびアニメーション再生状態です。アニメーション遅延は、前述したようにアニメーションの遅延時間を設定するものです。アニメーション方向属性は、アニメーションを順番に逆方向に再生するかどうかを定義します。使用可能な値は 2 つあります: Normal と Alternate。 Normal はデフォルト値で、回転しないことを意味し、Alternate はアニメーションを順番に逆方向に再生するように設定します。 anime-play-state は、アニメーションを一時停止するか再生するかを設定します。これは通常、js と組み合わせて使用​​する必要があります。クリックしてこの属性に対応する値を変更し、アニメーションを一時停止して再生します。たとえば、1 回クリックすると再生が一時停止され、もう一度クリックするとアニメーションの再生が継続されます。そうすれば、その値の一時停止と実行が理解しやすくなります。

上記は基本的に、このTwitterのようなアニメーションに基づいたCSSアニメーション属性の一般的なメソッドの簡単な紹介です。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

&lt; Progress&gt;の目的は何ですか 要素? &lt; Progress&gt;の目的は何ですか 要素? Mar 21, 2025 pm 12:34 PM

この記事では、HTML&lt; Progress&gt;について説明します。要素、その目的、スタイリング、および&lt; meter&gt;との違い要素。主な焦点は、&lt; Progress&gt;を使用することです。タスクの完了と&lt; Meter&gt; statiの場合

&lt; datalist&gt;の目的は何ですか 要素? &lt; datalist&gt;の目的は何ですか 要素? Mar 21, 2025 pm 12:33 PM

この記事では、HTML&lt; Datalist&GT;について説明します。オートコンプリートの提案を提供し、ユーザーエクスペリエンスの改善、エラーの削減によりフォームを強化する要素。

&lt; meter&gt;の目的は何ですか 要素? &lt; meter&gt;の目的は何ですか 要素? Mar 21, 2025 pm 12:35 PM

この記事では、html&lt; meter&gt;について説明します。要素は、範囲内でスカラーまたは分数値を表示するために使用され、Web開発におけるその一般的なアプリケーション。それは差別化&lt; Meter&gt; &lt; Progress&gt;およびex

ビューポートメタタグとは何ですか?レスポンシブデザインにとってなぜそれが重要なのですか? ビューポートメタタグとは何ですか?レスポンシブデザインにとってなぜそれが重要なのですか? Mar 20, 2025 pm 05:56 PM

この記事では、モバイルデバイスのレスポンシブWebデザインに不可欠なViewportメタタグについて説明します。適切な使用により、最適なコンテンツのスケーリングとユーザーの相互作用が保証され、誤用が設計とアクセシビリティの問題につながる可能性があることを説明しています。

HTMLは初心者のために簡単に学ぶことができますか? HTMLは初心者のために簡単に学ぶことができますか? Apr 07, 2025 am 12:11 AM

HTMLは、簡単に学習しやすく、結果をすばやく見ることができるため、初心者に適しています。 1)HTMLの学習曲線はスムーズで簡単に開始できます。 2)基本タグをマスターして、Webページの作成を開始します。 3)柔軟性が高く、CSSおよびJavaScriptと組み合わせて使用​​できます。 4)豊富な学習リソースと最新のツールは、学習プロセスをサポートしています。

&lt; iframe&gt;の目的は何ですか タグ?使用する際のセキュリティ上の考慮事項は何ですか? &lt; iframe&gt;の目的は何ですか タグ?使用する際のセキュリティ上の考慮事項は何ですか? Mar 20, 2025 pm 06:05 PM

この記事では、&lt; iframe&gt;外部コンテンツをWebページ、その一般的な用途、セキュリティリスク、およびオブジェクトタグやAPIなどの代替案に埋め込む際のタグの目的。

HTML、CSS、およびJavaScriptの役割:コアの責任 HTML、CSS、およびJavaScriptの役割:コアの責任 Apr 08, 2025 pm 07:05 PM

HTMLはWeb構造を定義し、CSSはスタイルとレイアウトを担当し、JavaScriptは動的な相互作用を提供します。 3人はWeb開発で職務を遂行し、共同でカラフルなWebサイトを構築します。

HTMLでの開始タグの例は何ですか? HTMLでの開始タグの例は何ですか? Apr 06, 2025 am 12:04 AM

Anexampleapalofastartingtaginhtmlis、それはaperginsaparagraph.startingtagsaresentionentientiontheyinitiateelements、definetheirtypes、およびarecrucialforurturingwebpagesandcontingthomedomを構築します。

See all articles