Cocoonフォーラム

サイト内検索
書き込みの前に以下の3点をご確認ください。
  1. 1つのトピックにつき1つの質問を書き込んでください
  2. 不具合・カスタマイズ対象ページのURLを提示高速化を無効にしてください
  3. 該当部分のキャプチャ・環境情報とともに書き込んでいただけると助かります

何を書き込んだら良いか分からない場合は、以下のテンプレートをコピペしてご利用ください。

不具合・カスタマイズ対象ページのURL:

相談内容:

不具合の発生手順:

解決のために試したこと:

※文字だけでは正しく伝わらない可能性があるため、スクショ画像の添付もお願いします。
※高速化設定をしている場合は無効にしてください。
環境情報:

※↑こちらに「Cocoon設定 → テーマ情報」にある「環境情報」を貼り付けてください。

環境情報の取得方法はこちら。
https://wp-cocoon.com/theme-report/
高速化設定を無効にするにはこちら。
https://wp-cocoon.com/theme-trouble/

フォーラム利用ガイドリンク

  1. フォーラムガイドライン
  2. よくある質問と答え(FAQ)
  3. サポート対象外のケース
  4. 原因不明の不具合用トラブルシューティング
  5. トピックにHTMLを貼り付ける方法(推奨ツール:notepad.pw
  6. 真っ白画面でのエラーメッセージの確認方法
  7. ブラウザ環境チェックツール
  8. Cocoonカスタマイズ依頼

フォーラム質問後、問題等が解決した場合は結果を書き込んでいただけると幸いです。同様の問題で調べている方には、結果が一番気になる部分となります。

アイキャッチのgif画像をfreeze...
 
共有:
通知
すべてクリア

[解決済] アイキャッチのgif画像をfreezeframe.jsにしたいです。

12 投稿
3 ユーザー
11 Reactions
1,125 表示
BB.com
(@bb-com)
Eminent Member Registered
結合: 3年前
投稿: 24
Topic starter  

こんにちは。

Cocoonのアイキャッチ画像はgif画像で登録できると思います。
しかし、gif画像は自動でプレビューされるため、重くなります。

そこで、「 https://github.com/ctrl-freaks/freezeframe.js/」こちらを導入し、ホバーしたgif画像のみ動かせるようにしました。
さらに、アイキャッチにこれらを導入するためには、アイキャッチ画像のclass(entry-card-thumb-image card-thumb-image wp-post-image)を「my_class_2 freezeframe-responsive」に置き換える必要があることが分かりました。

データファイルのどの部分を置き換えればいいか分かりません。
もしよろしければ、ご教示お願いいたします。


   
mk2
(@mk2_mk2)
Illustrious Member Moderator
結合: 4年前
投稿: 7921
 

BB.comさん

GIF動画(アニメーションGIF)ってことですね?

やってみましたが、以下のようなイメージでしょうか。
(マウスポインタ―が見づらいと思いますが。)

 
以下のページを参考にするとできました。
 
アニメーションGIFをマウスホバーやクリックで再生・停止できるようになるJavaScriptライブラリ「Freezeframe.js」
https://techmemo.biz/javascript/freezeframe/
 
上記の、「ステップ1」と「ステップ3」でできるみたいです。
(「ステップ2」は必要なかったです。)
 
「ステップ3」の以下の部分。
特定のクラスのみに適用したい場合は、クラス名を指定してあげます。
このクラス名に「.eye-catch-image」を指定するだけで、私は上記のような動作でした。
 
【追記】
 
申し訳ないですが、フロントページのインデックスカードの確認を忘れました。
既にPCを使えない状態です。

   
BB.com and わいひら reacted
(@akira)
Famed Member Registered
結合: 7年前
投稿: 1657
 

1 つ疑問点があります。

gif画像は自動でプレビューされるため、重くなります。

そこで、「  https://github.com/ctrl-freaks/freezeframe.js/」こちらを導入し、ホバーしたgif画像のみ動かせるようにしました。

とのことですが、Freezeframe.js を使っても GIF は自動で再生されます。

このライブラリは、最初は GIF を CSS で非表示にしておいて、代わりに canvas で GIF の静止画を表示しています。そして、ホバーなどをした際に GIF を CSS で表示して、代わりに canvas を非表示にします。ホバーした時だけ GIF が動くのではなく、ホバーしていない時も GIF は動いています。

公式のデモ の最初の画像をデベロッパーツールでご確認ください。<canvas> に opacity: 0 、<img> に opacity: 1 を指定すると GIF が動いているのが分かります。

Freezeframe.js は、ご要望に合っているでしょうか?


   
BB.com and わいひら reacted
BB.com
(@bb-com)
Eminent Member Registered
結合: 3年前
投稿: 24
Topic starter  

@akira 

Freezeframe.jsを使用しても軽くならないのですね。
知りませんでした。

それでも、すべてのgifが動くのは、見ていて鬱陶しいと思うので、ホバーで動かせるようしたいです。


   
BB.com
(@bb-com)
Eminent Member Registered
結合: 3年前
投稿: 24
Topic starter  

@mk2_mk2 

解説ありがとうございます。

申し訳ありませんが、解説をみてもよく分かりません・・・。


   
(@akira)
Famed Member Registered
結合: 7年前
投稿: 1657
 

@bb-com さん

子テーマの tmp-user/head-insert.php に以下を追加するのが最も簡単なやり方です。

<script defer src="https://unpkg.com/freezeframe/dist/freezeframe.min.js"></script>
<script type="module">
  new Freezeframe('.eye-catch-image[src$=".gif"]');
</script>

※ 非同期で JavaScript を読み込むようにしています。非同期での読み込みがお気に召さない場合は、defer と type="module" を削除してください。

class を変更するのではなく、Freezeframe.js にセレクターを指定します。指定するセレクターの書き方は、CSS と同じです。そのため、以下の書き方は…

.eye-catch-image[src$=".gif"]

class 属性に eye-catch-image があって、かつ src 属性の最後が .gif で終わる要素を指します。

※ アイキャッチ画像の上にカテゴリー名を表示している場合は、以下の CSS が必要かもしれません。

.eye-catch .cat-label {
  z-index: 1;
}

Freezeframe.jsを使用しても軽くならないのですね。

形式を GIF ではなく WebP にすれば、サイズ(容量)が小さくなると思います。例えば、以下のオンラインツールは、GIF を WebP に変換できます。

GIF to WebP converter


   
わいひら and BB.com reacted
BB.com
(@bb-com)
Eminent Member Registered
結合: 3年前
投稿: 24
Topic starter  

@akira

お世話になっております。
大変参考になりました。

時間があるときにじっくり対応してみます。
ありがとうございました?


   
(@akira)
Famed Member Registered
結合: 7年前
投稿: 1657
 

@bb-com さん

申し訳ありません。私が書いたセレクターでは、ご希望に沿わないかもしれません。

投稿ページのアイキャッチ画像であれば、先に書いたセレクターで指定できます。

new Freezeframe('.eye-catch-image[src$=".gif"]');

ただ、最初にこのようにお書きになっているのを見逃していました。

class(entry-card-thumb-image card-thumb-image wp-post-image)

この class があるのは、カテゴリーページなどの記事一覧のサムネイル画像です。もし、サムネイル画像であれば、以下のセレクターで指定できます。

new Freezeframe('.entry-card-thumb-image[src$=".gif"]');

もし、アイキャッチ画像もサムネイル画像も対象にされる場合は、以下のセレクターで指定できます。

new Freezeframe(':is(.entry-card-thumb-image, .eye-catch-image)[src$=".gif"]');

対象とされたい画像のセレクターをご指定ください。


   
わいひら reacted
BB.com
(@bb-com)
Eminent Member Registered
結合: 3年前
投稿: 24
Topic starter  

@akira

ご指導、ありがとうございます。

アイキャッチ画像もサムネイル画像も、両方対象にしたいです。

以下のコードを子テーマの tmp-user/head-insert.phpにいれればよろしいのでしょうか?

new Freezeframe(':is(.entry-card-thumb-image, .eye-catch-image)[src$=".gif"]');

   
(@akira)
Famed Member Registered
結合: 7年前
投稿: 1657
 

@bb-com さん

子テーマの tmp-user/head-insert.php に追加する全文は以下のものです。

<script defer src="https://unpkg.com/freezeframe/dist/freezeframe.min.js"></script>
<script type="module">
  new Freezeframe(':is(.entry-card-thumb-image, .eye-catch-image)[src$=".gif"]');
</script>

アイキャッチ画像やサムネイル画像の上にカテゴリーを表示されている場合は、ホバーしていない時にカテゴリーが見えなくなります。カテゴリーを表示されている場合は、以下の CSS を子テーマの style.css に追加します。

.cat-label {
  z-index: 1;
}

また、Freezeframe.js を非同期で読み込んでいるため、サイトの表示速度によってはページを表示した際に動いている GIF が一瞬見えるかもしれません。その場合は以下の CSS を子テーマの style.css に追加すれば、動く GIF が一瞬見えることがなくなります。

:is(.entry-card-thumb-image, .eye-catch-image)[src$=".gif"] {
  opacity: 0;
}

   
BB.com and わいひら reacted
BB.com
(@bb-com)
Eminent Member Registered
結合: 3年前
投稿: 24
Topic starter  

@akira

お世話になっております。

何から何までありがとうございます!
休日に試してみます。

ありがとうございます!


   
わいひら reacted
BB.com
(@bb-com)
Eminent Member Registered
結合: 3年前
投稿: 24
Topic starter  

@akira

お世話になっております。

試してみたら、無事に動作しました。

何から何までありがとうございました!


   
わいひら reacted
共有:

問題の解決に至った場合には、トピック冒頭の「解決済み」をクリックしていただけますと幸いです。

また、有用な回答があった場合は返信右下にある「いいね!」もご活用ください。回答者の励みになります。

「いいね!」機能はフォーラム登録者のみが利用できる機能です。

CC BY-ND 2.1)準じていれば(リンクを貼っていただければ)転載も自由です。カスタマイズ記事を書く際にコード等をコピペ利用していただいて構いません。

フォーラムの使い方がよくわからない場合は、テストトピックで自由にテストしていただいて構いません。

最近の書き込みはこちら。

詳細なカスタマイズ依頼をするならこちら。

タイトルとURLをコピーしました