Amazonで商品を見る セール会場へ

SWELL│ボタンのキラっとアニメーションを画像でも使う方法

画像リンクにマウスを重ねたとき、またはTabキーで選択したときに、光が一度だけ横切るCSSです。SWELLのキラっとボタンに似た見せ方ですが、テーマ内のアニメーション名には依存しません。常時点滅させず、動きを減らすOS設定では装飾を出さない構成にします。

目次

著者

WEB制作をしているデジタルノマド
WordPressのカスタマイズが好きで、色々と自作しています。

WordPressのカスタマイズに困ったらご相談ください!

動く見本:画像へマウスを重ねるかTabで選択

SWELLカスタマイズの目的別一覧を見る

画像をクリックするとSWELLカスタマイズの目的別一覧へ移動します。光は装飾なので、表示されなくてもリンクを使えます。スマホのタップではホバー効果の再生を保証しません。

画像リンクのHTMLを用意する

カスタムHTMLブロックに次のHTMLを貼り、移動先・画像URL・代替テキストを自分の内容に置き換えます。widthとheightは画像本来の寸法を指定してください。クラスはimgではなく、画像を包むa要素に付けます。

<a class="waza-shiny-image" href="/destination/">
    <img src="/path/to/image.jpg" alt="移動先の内容が分かる説明" width="800" height="450">
</a>

画像自体に疑似要素を付ける方法ではありません。リンクでない画像なら、外側をdivに変更して使えます。その場合は不要なtabindexを追加せず、キーボードで選択する対象にはしません。

CSSを追加する

追加CSSか子テーマのstyle.cssへ貼ります。既存のリンクを重ねてa要素を入れ子にしないでください。

.waza-shiny-image {
    position: relative;
    display: block;
    overflow: hidden;
    isolation: isolate;
}
.waza-shiny-image img {
    display: block;
    width: 100%;
    height: auto;
}
.waza-shiny-image:focus-visible {
    outline: 3px solid #155b75;
    outline-offset: 4px;
}
@media (prefers-reduced-motion: no-preference) {
    .waza-shiny-image::after {
        content: "";
        position: absolute;
        inset: 0;
        pointer-events: none;
        background: linear-gradient(110deg, transparent 35%, #ffffff80 50%, transparent 65%);
        transform: translateX(-110%);
    }
    .waza-shiny-image:hover::after,
    .waza-shiny-image:focus-visible::after {
        animation: waza-image-shine .7s ease-out 1;
    }
}
@keyframes waza-image-shine {
    to { transform: translateX(110%); }
}

仕組みと適用範囲

光はリンクの疑似要素です。pointer-events: noneでクリックを妨げず、親要素の内側で切り取ります。再生は1回で終わり、ポインターを外して重ね直すと再び再生します。テーマ標準のボタンや、クラスのない画像の見た目は変えません。

この例は画像だけを包む要素を対象にしています。画像キャプションや入力欄を含む複雑なブロック全体に付けると、装飾の重なりや切り取りが変わるため、そのまま流用しないでください。

確認と戻し方

PCではホバー、Tabのフォーカス枠、Enterでの移動を確認します。スマホでは画像の横はみ出しとリンク先を確認してください。OSの「視差効果を減らす」などの設定でも元の画像とリンクが利用できることを確認します。

元に戻すにはwaza-shiny-imageクラスと追加CSSを削除します。画像とリンクは残せます。この記事の見本は公開ページで確認していますが、すべての端末やテーマの組み合わせで検証したものではありません。

  • URLをコピーしました!

実装を任せたい方へ

SWELLのカスタマイズ代行

記事のコードをそのまま使うのが不安な場合や、サイトに合わせた調整が必要な場合は当社が実装します。1時間 ¥8,000〜(税込)。テーマ更新に強い書き方で納品します。

WAZAの有料記事のサブスクリプションも開始しました。

サービス

Service

WordPressサイトのカスタマイズのサービスに関心がありましたら、ぜひ詳細をご覧ください。

目次