はじめに
以下をCocoonで実現します。
実装手順
以下の手順で実装します。
- ラベルボタン画像を作成

ボタンクリック前

ボタンクリック後
ボタン画像図1のように、ボタンクリック前後の画像を作成します。
この際、2つの画像のサイズは同一にします。 - ラベルCocoon設定

Cocoon設定 Cocoon設定→ボタンで、図1に示したボタンクリック前の画像を設定します(図2参照)。
- ラベルCSSを追加
以下のコードをstyle.cssに追加します。サイズを適切に変更してください。
/* 画像サイズ */ .go-to-top-button-image { height: 75px; width: 75px; /* トップ移動中 */ &.go-to-top-up { img { display: none; } &::after { animation: upAnime 0.5s linear infinite; background-image: url('図1に示すボタンクリック後の画像URL'); background-repeat: no-repeat; background-size: contain; content: ''; display: block; height: 100%; width: 100%; } } } @keyframes upAnime { 0% { transform: translateX(0); } 25% { transform: translateX(-5px); } 50% { transform: translateX(0); } 75% { transform: translateX(5px); } 100% { transform: translateX(0); } }
応用: ボタンクリック後のアニメーション設定方法
トップ戻るボタンをクリックすると、CSSで画像を切り替わりアニメーションを実行させます。
実装手順
以下のコードをstyle.cssに追加します。
- ラベルボタン画像を作成

ボタンクリック後 図3のように、1コマの画像幅を75pxとし、2コマ(幅150px)の画像を作成します。
- ラベルCSSを追加
以下のコードをstyle.cssに追加します。
.go-to-top-button-image { height: 75px; width: 75px; &.go-to-top-up { img { display: none; } &::after { animation: splice steps(2) 0.2s infinite; background-image: url('図3に示すボタンクリック後の画像URL'); background-position: 0 0; background-repeat: no-repeat; content: ''; display: block; height: 100%; width: 100%; } } } @keyframes splice { 100% { background-position: -150px 0; } }
補足
以下のように、animationプロパティではカンマで区切って複数のkeyframesを指定できます。
これにより、複数のアニメーションを同時に実行し、トップへ移動させることができます。
animation: splice steps(2) 0.2s infinite, upAnime 0.5s linear infinite;
参考:アニメーションPNG作成手順
クリック時の画像をアニメーションGIFにする方法もありますが、GIFは256色までしか表現できず、輪郭にジャギーが生じることがあります。
そのため、アニメーションPNGを使用するのが推奨されます。
ただし、アニメーションPNGを作成するツールは限られているため、以下のサイトを利用して作成できます。
以下の手順でアニメーションPNGを作成します。
- ラベル変換するファイルを選択

Animated PNG Maker - 図4①に示す領域に、アニメーションPNGとするPNGファイルを、複数をドラッグします。
- ラベルアニメーションPNGに変換

Animated PNG Maker - 図5②に示すように、各コマの表示時間を1/100秒単位で入力します。
- 図5③に示すように、「フレームを積み重ねない」をチェックします。
- ラベル変換結果をダウンロード

Animated PNG Maker - 図6④に示すボタンをクリックします。
- 図6⑤に示すボタンをクリックし、アニメーションPNGファイルをダウンロードします。
さいごに
今回紹介した方法を使えば、トップ戻るボタンをクリックした際に画像を簡単に切り替えることができます。
SWELLとは異なり、クリック後にCSSクラスが自動的に追加されるため、より簡単に画像を切り替えることが可能です。




