×

Sticky とはスクロールに追従せず固定される表示のUI用語です。

私のブログは現在、[ Context-Blog ]というテーマを利用しています。

このテーマは、最近の改変でスティッキーを強要してくるようになりました。
本日もチャッピーと協力してこの邪魔なStickyの封印にチャレンジしてみたいと思います。

ウェブデザインやUI開発の文脈では、画面をスクロールしても特定の表示場所(上部や側面)に要素が固定され続ける仕組みをスティッキー(Sticky)と呼びます。
Context-Blogでは記事タイトルヘッダーの部分がスクロールしてもStickyで残存するようになったのです。

ご覧いただくと判るように、タイトル部のStickyによって記事の表示エリアが著しく狭められ、記事が読みづらくなってUXを損ねています。スマホや縦型タブレットだと何とかなりますが、横長画面のPCだとこれは致命的体験です。記事を読む気がしなくなるのです。

そこで、チャッピーと相談してこのStickyを封じ込めることにしました。狙いは、タイトル部がスクロールで一緒に消失し、縦方向が記事だけで埋め尽くされるようにすることです。

以下は結論だけを簡単に書いていますが、プロセスは簡単ではなく、トライ&エラーでした。
Context-BlogのSticky優先度と強制力は非常に強力で、CSSを少々追加したくらいではオーバーライド不能でした。

まずChrome とスマホブラウザでは封印に成功したのですが、最後まで残ったのがMacのSafariです。私はMacではSafari中心に利用していますし、Safariだけ回避できないのも困ります。CSSとJSの二段構えが必要でした。

対策方法

私はContext-Blog を直接編集するのではなく、子テーマを作ってそちらの方で改変を加えるようにしています。そうすることで、Context-BlogのUpdateに左右されず、いつでも制御やスタイルをオーバーライドできるのです。

1. 子テーマの style.css に以下を追加

/* ===========================
   Safari 専用 sticky 殺し
   =========================== */
@supports (-webkit-overflow-scrolling: touch) {
    body.single header[class*="title"],
    body.single header[class*="header"],
    body.single header[class*="breadcrumb-holder"],
    body.single [class*="ct"] header,
    body.single .entry-header,
    body.single .ct-title-holder,
    body.single .ct-page-title,
    body.single .post-header,
    body.single .page-header {
        position: static !important;
        top: auto !important;
        position: initial !important;
        position: unset !important;
    }
}

2. 子テーマの functions.php に以下を追加

// タイトル部Stickyの完全抑制
add_action('wp_footer', function () {
?>
<script>
document.addEventListener('DOMContentLoaded', () => {

    const targets = document.querySelectorAll(
        'header[class*="title"], header[class*="header"], header[class*="breadcrumb-holder"], .entry-header, .ct-title-holder, .ct-page-title, .post-header, .page-header'
    );

    function killSticky() {
        targets.forEach(el => {
            el.style.position = 'static';
            el.style.top = 'auto';
            el.classList.remove('sticky', 'is-sticky');
        });
    }
    

    // 初回実行
    killSticky();

    // JS が書き戻してきても常に上書き
    window.addEventListener('scroll', killSticky);
    window.addEventListener('resize', killSticky);
});
</script>
<?php

この二つによって、Stickyは完全に抑制することができました。
最初は表示されていて、スクロールに伴ってタイトルブロックが消失します。

読みやすさが格段に向上して、まずはホッと一安心です。

シリコンパワー ノートPC用メモリ DDR4-2400(PC4-19200) 8GB×1枚 260Pin 1.2V CL17 SP008GBSFU240B02

Synology NASを拡張した時に入れたメモリーがコレ!永久保証の上、レビューも高評価。もちろん正常に動作しており、速度余裕も生まれて快適です。

フィリップス 電動歯ブラシ ソニッケアー 3100シリーズ (軽量) HX3673/33 ホワイト 【Amazon.co.jp限定・2024年モデル】

歯の健康を考えるのならPhilipsの電動歯ブラシがお勧めです。歯科医の推奨も多いみたいです。高価なモデルも良いですが、最安価なモデルでも十分に良さを体感できる。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

投稿者

KeroYon

関連投稿

公開済み記事がやっとこさ半分…?

先月私はWordPressへの記事移行を完遂しました。 ただ、それは記事がフルオープンにできたという...

アルバムジャケット完全なる洗浄+脱臭に成功!

しばらく前から続けている、中古レコードの洗浄。特にカビていたアルバムジャケットの紙の復旧。 本日、と...

脱臭〜脱出! 臭いジャケットにサヨウナラ

中古で購入したアナログディスクがカビ臭くて辛抱たまらん!というお話でしたよね。 レコードにカビは大敵...

ブラフラで買ったもの: Amazon Black Friday

11年目のテレビ更新 いきなりです。我が家のTVが壊れてしまったのですよ。ショックです。Regzaの...