Animate.cssでアニメーションを作成する方法
序章
アニメーションは、アプリケーションのユーザーエクスペリエンスを左右する可能性があります。 標準のCSS3を使用してCSSアニメーションを手動で作成できますが、このソリューションにはかなりのメンテナンスと構成が必要です。 または、 Animation.css を使用することもできます。これは、「すぐに使用できるクロスブラウザーアニメーションのライブラリ」と呼ばれます。 これらの「水を加えるだけ」のアニメーションは、すべてのアニメーションのニーズに対応する高速で効率的なソリューションを提供します。
このチュートリアルでは、Javascriptで小さなtodo-listアプリケーションを作成してから、さまざまな要素をアニメーション化します。 Animate.cssがワークフローをどのように改善できるかを示すために、最初に標準のCSS3を使用して1つの要素をアニメーション化し、次にAnimate.cssを使用するようにコードをリファクタリングします。 次に、Animate.cssの広範なライブラリからいくつかのアニメーションを追加します。
前提条件
このチュートリアルを完了するには、次のものが必要です。
nano
やVisualStudioCodeなどの任意のコードエディター- Webブラウザ
- HTMLの基礎に慣れている。 チュートリアルシリーズHTMLを使用してWebサイトを構築する方法の概要をご覧ください。
ステップ1—ベースアプリケーションの作成
Animate.cssライブラリの使用方法を探る前に、小さなtodo-listアプリケーションを作成しましょう。 これにより、スタイルにいくつかの要素が与えられます。 次に、標準のCSS3を使用してfadeIn
アニメーションをコーディングします。
まず、このプロジェクトの新しいフォルダーを作成します。
- mkdir animate-css-example
そして、内部をナビゲートします。
- cd animate-css-example
ここでは、index.html
、app.js
、およびstyle.css
の3つのファイルを作成します。
nano
またはお好みのコードエディタを使用して、最初のファイルindex.html
を作成します。
- nano index.html
次のコンテンツを追加して、CSSファイルとJavascriptファイルへのリンクを含む簡単なHTMLドキュメントを定義します。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>CSS Animations</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div>
<input type="text" id="todoInput">
<button onclick="addTodo()">Add Todo</button>
</div>
<ul>
</ul>
<script src="app.js"></script>
</body>
</html>
ここに、タイトルCSS Animations
を追加し、CSSスタイルシート(次に作成します)にリンクしました。 次に、<div>
タグ内にいくつかのJavascriptオブジェクトを定義し、3番目のファイルapp.js
にリンクします。
ファイルを保存して閉じます。
次に、エディタでstyle.css
を作成して開きます。
- nano style.css
次のコンテンツを追加します。これにより、fadeIn
アニメーションが定義されます。
.fadeIn {
animation: fadeIn 1s;
}
@keyframes fadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
アニメーションの期間を定義し、 @keyframesat-ruleを使用して1つのアニメーションサイクルを構成しました。
ファイルを保存して閉じます。
次に、最終ファイルapp.js
を作成しましょう。
- nano app.js
次のコンテンツを追加します。 これにより、addTodo
関数が定義され、アニメーションが埋め込まれます。
const addTodo = () => {
const ul = document.getElementsByTagName('ul')[0];
const input = document.getElementById('todoInput').value;
if (input.length > 0) {
const li = document.createElement('li');
li.classList.add('fadeIn');
li.appendChild(document.createTextNode(input));
ul.appendChild(li);
document.getElementById('todoInput').value = '';
}
};
Todoアプリには、テキストフィールドとボタンが含まれています。 フィールドにテキストを入力してボタンを押すと、新しい要素が作成され、テキストが追加されます。 強調表示された行に注意してください。 ここでは、新しく作成されたすべての要素にfadeIn
クラスを追加しました。
ファイルを保存して閉じます。
次に、ブラウザを開いてindex.html
をロードします。 フィールドとボタンが表示されます。 フィールドにテキストを入力して、Todoの追加を押します。 新しいToDoがフェードインします。
標準のCSS3を使用して、CSSアニメーションを要素に正常に適用しました。 それでは、Animate.cssを使用するようにコードをリファクタリングして、生産性と読みやすさをどのように改善できるかを見てみましょう。 その後、ライブラリ内のアニメーションをさらにいくつか調べます。
ステップ2—Animate.cssライブラリを使用する
このステップでは、Animate.cssを使用してコードをリファクタリングしてから、いくつかの追加のアニメーションを調べます。
まず、Animate.cssをインストールする必要があります。 これは、CDNまたはコンテンツ配信ネットワークを使用して実行できます。
エディターでindex.html
を再度開きます。
- nano index.html
<head>
タグ内で、既存の<link>
タグをstyle.css
に削除し、強調表示されたコードに置き換えます。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>CSS Animations</title>
<link
rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css"
/>
</head>
<body>
<div>
<input type="text" id="todoInput">
<button onclick="addTodo()">Add Todo</button>
</div>
<ul>
</ul>
<script src="app.js"></script>
</body>
</html>
この<link>
タグは、Animate.cssの公式リンクを使用して、ライブラリをページに直接追加します。
注: ノードパッケージマネージャー(npm)またはヤーンパッケージマネージャーを使用してライブラリをインストールすることもできます。
npmを使用してライブラリをインストールするには、次のコマンドを使用します。
- npm install animate.css
または、yarnを使用してライブラリをインストールするには、次のコマンドを使用します。
- yarn add animate.css
index.html
を保存して閉じます
次に、Javascriptをリファクタリングして、Animate.cssを使用してfadeIn
アニメーションを適用しましょう。
Animate.cssライブラリのすべてのクラスは、animate__
プレフィックスを使用します。 まず、animate__animated
を追加する必要があります。 これは、Animate.cssライブラリを使用するように要素に指示します。 次に、animate__specific_animation
を追加します。 利用可能なオプションについては、図書館の公式Webサイトを参照できます。
この例では、animate__animated
、次にanimate__fadeIn
をclassList に追加して、すべての新しいli
またはリスト要素がフェードインするようにします。
コードに次の強調表示された変更を加えます。 最終的なファイルは次のようになります。
const addTodo = () => {
const ul = document.getElementsByTagName('ul')[0];
const input = document.getElementById('todoInput').value;
if (input.length > 0) {
const li = document.createElement('li');
const animations = [
'animate__animated',
'animate__fadeIn'
];
li.classList.add(...animations);
li.appendChild(document.createTextNode(input));
ul.appendChild(li);
document.getElementById('todoInput').value = '';
}
};
Animate.cssクラスを含む定数を作成し、fadeIn
を次の行の定数に置き換えました。
ファイルを保存して閉じます。
次に、ブラウザをリロードします。 fadeIn
スタイルは引き続き表示されますが、Animate.cssライブラリでエフェクトを管理しているのは今だけです。
Animate.cssを使用すると、アニメーションをすばやく追加でき、読みやすいコードを作成できます。 これを示すために、<body>
タグにいくつかのアニメーションを追加しましょう。
エディタでindex.html
を開きます。
- nano index.html
ユーザーがページを読み込んだときにDOM内のすべての要素を拡大し、そのアニメーションを3回繰り返す必要があると想像してみてください。 animated__animate
、animated__zoomIn
、およびanimated__repeat
クラスをコードに追加するだけです。
次の3つのクラスを<body>
タグに追加します。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>CSS Animations</title>
<link
rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css"
/>
</head>
<body class="animate__animated animate__zoomIn animate__repeat-3">
<div>
<input type="text" id="todoInput">
<button onclick="addTodo()">Add Todo</button>
</div>
<ul>
</ul>
<script src="app.js"></script>
</body>
</html>
ファイルを保存して閉じます。
次に、ブラウザにindex.html
をリロードして、新しいアニメーションを視聴します。
CSSを手動で記述したり、at-rules
を構成したりすることなく、Animate.cssライブラリを使用してCSSアニメーションをHTMLおよびJavascriptに正常に埋め込むことができました。
結論
Animate.cssは、CSSアニメーションを追加するための高速で効率的なソリューションです。 これを使用すると、ワークフローをスピードアップし、より読みやすいコードを作成できます。 ここから、Animate.cssの公式ウェブページでアニメーションのライブラリ全体を探索できます。
ただし、アニメーションはユーザーエクスペリエンスを向上させるのではなく、すぐに妨げる可能性があることを忘れないでください。 Animate.cssには、ベストプラクティスと Gotchas に関する便利なセクションが含まれているため、アニメーションを最も成功させることができます。 アニメーションはまた、特定の医学的問題を抱えている人々にとって有害であることが判明する可能性があります。 Animate.cssは、prefers-reduced-motionメディアクエリをサポートしているため、クライアントは潜在的に有害なアニメーションを無効にできます。