「トップへ戻る」や「目次」の上に特定のページへ飛ぶフローティングボタンをPC、タブレット、スマホ画面に追加表示(WordPress + SWELL)

SWELLには標準で右下に「トップへ戻る(当サイトでは「先頭へ」に変更)」や「目次」といった画面に浮かせる(追従する)フローティングボタンがあります。これらのボタンの上部に似せたデザインで PC画面専用として特定のページへ飛ぶフローティングボタンを設置していました。
今回、特定のページへ飛ぶフローティングボタンを同じデザインでPC、タブレット、スマホ画面に追加表示した際の作業メモです。

特定のページへ飛ぶ7つのフローティングボタンを追加表示

カスタムHTMLコードと CSSの動作確認時のWordPress、SWELL、PHPのバージョンです。

  • WordPress7.1
  • SWELL2.19.0
  • PHP8.3.31
目次

ボタンを表示するカスタムHTMLコード

ボタンを表示するカスタムHTMLコードは、これまでブログパーツ内に書いてウィジェットを介していましたが、今回PC、タブレット、スマホ画面に追加表示するにあたりSWELLのシステム設定に直接コードを書き込む方法に変更しました。

  • WordPress管理画面から「外観」>「カスタマイズ」タブを開き、「高度な設定」を開きます
  • その中にある「bodyタグ終了直前に出力するコード(/body直前)」の入力欄に、ボタンを出力する「カスタムHTMLのコード」を直接貼り付け、画面下の「変更を保存」をクリック

ボタンを表示するカスタムHTMLコード

当サイトで運用中の特定のページへ飛ぶ7つのボタンを表示するカスタムHTMLコードです。ボタンの中のアイコン(ホーム、フォルダ、虫眼鏡、メール)はHTMLの特殊文字コードを使っています。「特殊文字コード」は、端末(Windows/Mac/iPhone/Android)のOSに内蔵されている絵文字データを自動で呼び出す仕組みになっています。そのため、PC(Windowsなど)では立体的なカラー絵文字になったり、スマホ(iPhoneなど)ではシンプルなモノクロに見えたりします。PCでもタブレット・スマホでもモノクロの線画アイコンで統一されるように、CSS側でカラー化を強制禁止しています。

<div class="my-custom-float-btn btn-page-1">
    <a href="https://yokahiyori.com/" class="my-fix-circle-btn">
        <span class="sw-custom-icon">&#8962;</span>
        <span>ホーム</span>
    </a>
</div>
<div class="my-custom-float-btn btn-page-2">
    <a href="https://yokahiyori.com/category/menu/" class="my-fix-circle-btn">
        <span class="sw-custom-icon">&#128193;</span>
        <span>カテゴリ</span>
        <span>全記事</span>
    </a>
</div>
<div class="my-custom-float-btn btn-page-3">
    <a href="https://yokahiyori.com/#tag-elework" class="my-fix-circle-btn">
        <span>電子工作</span>
    </a>
</div>
<div class="my-custom-float-btn btn-page-4">
    <a href="https://yokahiyori.com/#tag-diy" class="my-fix-circle-btn">
        <span>DIY</span>
    </a>
</div>
<div class="my-custom-float-btn btn-page-5">
    <a href="https://yokahiyori.com/#tag-webconst" class="my-fix-circle-btn">
  <span>BLOG</span>
  <span>サイト</span>
  <span>構築</span>
    </a>
</div>
<div class="my-custom-float-btn btn-page-6">
    <a href="https://yokahiyori.com/#tag-parts" class="my-fix-circle-btn">
        <span class="sw-custom-icon">&#128269;</span>
        <span>検索・タグ</span>
    </a>
</div>
<div class="my-custom-float-btn btn-page-7">
    <a href="https://yokahiyori.com/contact-form/"" class="my-fix-circle-btn">
        <span class="sw-custom-icon">&#9993;</span>
        <span>お問合せ</span>
    </a>
</div>

スマホ時のみボタンを表示しないJavaScript

スマホ時のみボタンを表示したくないときはカスタムHTMLコードに下記のJavaScriptを追記します。

<script>
document.addEventListener('DOMContentLoaded', function() {
    if (window.innerWidth <= 599) {
        var wrapper = document.getElementById('my-custom-float-wrapper');
        if (wrapper) {
            wrapper.style.setProperty('display', 'none', 'important');
        }
    }
});
</script>

フローティングボタンを同じデザインでPC、タブレット、スマホ画面に追加表示するCSS

WordPress管理画面から「外観」>「 テーマファイルエディター」> スタイルシート(style.css)にコピー。 ブラウザによって挙動が異なる事象があったので「!important」を付けていますが環境によっては不要な箇所もあると思います。

/* 共通設定(PC・スマホ・タブレット共通) */
.my-custom-float-btn {
    display: block !important;
    position: fixed !important;
    z-index: 99999 !important;
    width: 54px !important;
    height: 54px !important;
}

.my-fix-circle-btn {
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
    justify-content: center !important;
    width: 54px !important;
    height: 54px !important;
    border-radius: 50% !important;
    box-shadow: 0 2px 10px rgba(0,0,0,0.1) !important;
    text-decoration: none !important;
    transition: all .3s !important;
    line-height: 1 !important;
    overflow: hidden !important;
    background-color: rgba(255, 255, 255, 0.85) !important;
    color: #001f3f !important;
    border: 1px solid rgba(0, 31, 63, 0.8) !important;
    box-sizing: border-box !important;
    backdrop-filter: blur(4px) !important;
    -webkit-backdrop-filter: blur(4px) !important;
}

/* アイコンをモノクロの線画に統一 */
.my-fix-circle-btn .sw-custom-icon {
    font-size: 18px !important; 
    line-height: 1 !important;
    margin-bottom: 2px !important;
    display: block !important;
    text-align: center !important;
    width: 100% !important;
    color: #001f3f !important;
    font-family: "Segoe UI Symbol", "Apple Color Emoji", "Noto Color Emoji", sans-serif !important;
    text-shadow: none !important;
}

/* ホバー時の色変更 */
.my-fix-circle-btn:hover {
    background-color: rgba(0, 31, 63, 0.8) !important; 
    color: #ffffff !important;
    transform: translateY(-3px) !important;
    border-color: #001f3f !important;
}
.my-fix-circle-btn:hover .sw-custom-icon {
    color: #ffffff !important;
}

/* 下部テキストの調整 */
.my-fix-circle-btn span {
    display: block !important;
    width: 100% !important;
    text-align: center !important;
    font-size: 11px !important;
    font-weight: 500 !important;
    transform: scale(0.75) !important;
    transform-origin: center top !important;
    white-space: nowrap !important;
}

/* 文字のみボタン用の調整(上下中央へ配置) */
.my-fix-circle-btn:not(:has(.sw-custom-icon)) span {
    transform: scale(0.85) !important;
    transform-origin: center center !important;
    padding: 0 4px !important;
}

/* PC表示時の位置設定(画面幅960px以上) */
@media screen and (min-width: 960px) {
    .my-custom-float-btn {
        right: 38px !important; 
    }
    .btn-page-1 { bottom: 582px !important; }
    .btn-page-2 { bottom: 520px !important; }
    .btn-page-3 { bottom: 458px !important; }
    .btn-page-4 { bottom: 396px !important; }
    .btn-page-5 { bottom: 334px !important; }
    .btn-page-6 { bottom: 272px !important; }
    .btn-page-7 { bottom: 210px !important; } 
}

/* タブレット表示時の位置設定(画面幅600px 〜 959px) */
@media screen and (min-width: 600px) and (max-width: 959px) {
    .my-custom-float-btn {
        right: 20px !important; 
    }
    .btn-page-1 { bottom: 557px !important; }
    .btn-page-2 { bottom: 495px !important; }
    .btn-page-3 { bottom: 433px !important; }
    .btn-page-4 { bottom: 371px !important; }
    .btn-page-5 { bottom: 309px !important; }
    .btn-page-6 { bottom: 247px !important; }
    .btn-page-7 { bottom: 185px !important; } 
}

/* スマホ表示時の位置設定(画面幅599px以下) */
@media screen and (max-width: 599px) {
    .my-custom-float-btn {
        right: 15.5px !important; 
    }
    .btn-page-1 { bottom: 602px !important; }
    .btn-page-2 { bottom: 540px !important; }
    .btn-page-3 { bottom: 478px !important; }
    .btn-page-4 { bottom: 416px !important; }
    .btn-page-5 { bottom: 354px !important; }
    .btn-page-6 { bottom: 292px !important; }
    .btn-page-7 { bottom: 230px !important; }
}

PC、タブレット、スマホのブラウザ(Firefox、Edge、Chrome、Brave)で確認

SWELL標準の「先頭へ」ボタンや「目次」ボタンの上に今回設置した特定のページへ飛ぶフローティングボタンがPC、タブレット、スマホで表示され機能することが確認できました。 

PC(Chrome)
iPAD(Safari)
iPhone(Safari)
iPhone(Safari)
スマホ時のみボタンアイコンを表示しないJavaScriptを追記するとSWELLオリジナルのアイコンのみが表示される

動作確認は、PC(Windows11)がFirefox(150.0.3 64ビット)、 Edge(151.0.4129.101 公式ビルド 64ビット)、Chrome(151.0.7922.172 公式ビルド 64ビット)、Brave(151.0.7922.173 公式ビルド 64ビット)、SP(iPhone)がSafari(26.6)、Edge(151.0.4129.72)、Chrome(152.0.7977.40)、Brave(1.93(136))、SP(iPAD)がSafari(26.6)、Edge(151.0.4129.96)、Chrome(151.0.7922.112)、Brave(1.93(136))、Raspberry Pi OSがFirefox(142.0.1 (aarch64))、Chromium(142.0.7444.162(Official Build)built on Debian GNU/Linux 12 (bookworm) 64 ビット)で行いました。

 

 

よかったらシェアしてね!
  • URLをコピーしました!
目次