CocoonでCLSが発生するのはスキンが原因かも?

Cocoon最新アップデートで搭載されたスキン「イノセンス」。
「大人かわいい」がキャッチフレーズだそうですけど。

著者は、おっさんくさく見えるって言ってるよ

バカにしてるわけじゃありません。
それどころか、私がテーマをCocoonに変える決心をした大きな理由です。
その証拠に、この記事を書いている時点でのスキンはイノセンスをカスタマイズしたものです。

著者はおっさんですから
落ち着いていてしっくりくるそうです

ただ、困った問題が生じました。

天満川鈴 WRITTEN BY 天満川鈴

PageSpeed InsightsでCLSを指摘される

PageSpeed Insightsをやってみたところ。
Cumulative Layout Shift(CLS)が発生してしまっています。

PageSpeedinsightsでCLSが発生。ラボデータ0.032、フィールドデータ0.09

ラボデータの方が0.032。
フィールドデータもこの日を境にどんどん悪化し、ついに全ページが「改善が必要」へ突入。
SearchConsoleにおけるユーザーエクスペリエンス合格ページがゼロとなってしまいました。

やばすぎる!

対策しなくちゃね……

Cumulative Layout Shift(CLS)とは?

Cumulative Layout Shift(CLS)はレイアウトのずれのこと
日本語では「累積レイアウトシフト変更」と言います

サイトを閲覧したときにガクガク!って感じで画像や広告割り込んできてイラついたことありませんか?
最近はだいぶ見なくなりましたけど、あれが発生しないほど良い評価をもらえるということです。

CLSの原因を探る

ヘッダーモバイルボタン

CLSが発生していると指摘された要素は2つありました。

1つはヘッダーモバイルボタンのアイコン(FontAwesome)。
0.01とかでしたから無視してもいいんですけど、気持ち悪いのでゼロを目指します。

細かい対策をとるより、いっそなくしてしまった方が早い。
アイコンを減らしてフッターにまとめ、ヘッダーは解除します。
これでCLSはなくなりました。

アイキャッチ画像……?

問題はもう1つの方。
記事冒頭のアイキャッチ画像が指摘されました。

PageSpeedInsightsで記事冒頭のアイキャッチにCLS0.17が指摘されている。

記事本体はこちら。

CLS修正前アイキャッチ、日付が画像の前

この走っている番長の画像がCLSの原因として指摘されていました。
PCの画面ですが、PCもモバイルもCLSが生じています。
もちろんこの記事だけでなく全記事においてです。

だけどこれ、わけわかんない!

原因の切り分け

過去にもCLSの対策をとったことがありますが。
考えられる原因は、

  • LazyLoad絡み
  • widthとheightの指定がない

しかし、

  • WordPress自体にCLSを生じさせないネイティブLazyLoadが実装されている。
  • 投稿添付の画像はWordPressがwidthとheightを自動挿入する。

WordPressの仕様上、CLSは発生しづらくなっています。

とりあえずアイキャッチのLazyLoadについては、Cocoonの機能は切っています。
原因からは外してよさそうです。

一方でwidthとheightは設定されています。

やっぱりわけわかんない!

こういうときは親テーマにするの
原因がカスタマイズなのかテーマの仕様なのか切り分けできるから

親テーマにして、スキンも親テーマのものにしてみます。
さらにWEXALを切ってキャッシュを全てクリア。
プラグインで表示関連は元々使っていない。
これでノーカスタマイズに近いはず。

……やっぱり同じだよ

アイキャッチのwidth、max-width、height、max-heightを変えてみたり。
marginなくしてみたり、paddingに変えてみたり。
ラップ要素の調整してみたり。
ダメ元で思いつくことを片っ端からやってみました。

しかしダメ元だけに、やっぱりダメ。
何が原因なのか……

CLS……

レイアウトが動く……

はっ! もしかして!

ついにつきとめました。
こちらはCLS修正後の画像。

CLS修正後アイキャッチ、日付が画像の後に変化

さっきと同じに見えますが、どこかが違います。
間違い探ししてみてください。

特定したCLSの原因

間違い探し、わかったでしょうか?
CLS修正前は「投稿日・更新日」がアイキャッチの前。
修正後はdatetagがアイキャッチの後に来ています。

テーマデフォルトだと日付がアイキャッチの後に来ます
前に来ているのはイノセンススキン側の仕様です

スキンのJavaScript.jsを見てみましょう。

$(function () { $('.date-tags').insertAfter('.entry-title'); });

記事タイトル(.entry-title)の後にを日付を挿入する(.date-tags)というjQueryです。
これによってアイキャッチが本来表示される位置から日付分だけ下方にシフトしたわけです。

CLSの具体的な修正方法

私は日付が前であることにこだわらないので、スキンのスクリプトを停止する方法を選びました。

子テーマのfunctions.phpに次の記述をします。

function cocoon_scripts() {
wp_dequeue_script( 'cocoon-skin-js' );
}
add_action( 'wp_enqueue_scripts', 'cocoon_scripts' );

これでCLSはゼロになりました。

PageSpeedInsightsでCLSの数値がゼロ

フィールドデータの方もその内戻るでしょう。

左寄せになっているのをデフォルトの右寄せに戻したい場合

子テーマのstyle.cssに次の記述をします。

.date-tags {
text-align: right;
}

ただスキンを子テーマに移して、Cocoon設定でスキン設定を子テーマに指定し直し。
その上でスキンのstyle.cssから記述を削除する方が無駄はないです。

まとめ

PSIの指摘がアイキャッチ画像だったから、なかなか気づけなかったよ
ちょっとした盲点だね

スキン自体はありがたく使わせていただいてます
おはようポテトさん、ありがとうございました

イノセンス作者「おはようポテト」さんのリンクはこちら。

吹き出しのアニメは必見かもです。

天満川 鈴のプロフィール画像
WRITTEN BY

天満川 鈴

未経験からWEB業界に入り、現在はWEBディレクターとして実務に従事。 要件整理・導線設計・コンテンツ構成などを学びながら、日々改善を重ねています。 AIを活用したコンテンツ制作・効率化を強みとし、プロンプト設計を含めた制作フローの最適化にも取り組んでいます。
本サイトでは、WordPressやサイト制作に関する試行錯誤・検証内容を中心に発信。 技術検証の一環として、KUSANAGI公式サイトにて記事を2回紹介いただきました。

RECOMMENDED INFRASTRUCTURE

私はConoHa以外を勧めない。

2016年からずっとConoHaを使い倒してきました。知人に「一番いいサーバーは?」と聞かれたら、迷わずここを教えます。

レンタルサーバーナンバーワンを誇る高速環境であることはもちろん。私が「黒い画面って何?」というド素人からサイト制作のプロになれたのは、傍らにずっとこのはちゃんがいてくれたから。
私がConoHaを使い続ける、嘘偽りない理由です。

※ConoHaに初めて入会の方限定。
本CTAの画像もしくはボタンを押してWINGパック12か月以上を契約すると、最大5000円割引してもらえます。

公式サイトで詳細を見る
× 閉じる