【CSS】iPhoneのSafariでposition:fixedが効かないときにやったこと

position:fixed;が効かない

これはiPhoneに限ったことかもしれませんが、position:fixed;『TOPに戻る』ボタンを画面スクロールに合わせて追従するように、ブラウザの右下に固定しようとしました。ところが、Windows PCのChromeではちゃんと固定されているのですが、iPhoneのSafariやChromeアプリでは固定されませんでした。そこで解決策メモ。position:sticky;でも同様みたいです。

ベンダープレフィックスが必要だった

解決策はposition: -webkit-fixed;の追加で解決できました。

.ScrollTop {
  position: -webkit-fixed;
  position: fixed;
  right: 0;
  bottom: 0; 
  display: flex;
  z-index: 100;
}

あと、ヒントになった以下のページよると、<span><a>タグでは、display: flex;またはdisplay: block;も必要みたいです。

Link

SafariでのみPosition: Stickyが効かない!?

https://zenn.dev/tigerr/articles/82fc091cfe69bd

Link

SafariでPosition: Stickyが効かない?Display: Blockで対処 | ネットショップ語り

https://ecmemo.net/safari-sticky-problem

ちなみにお世話になった『トップに戻る』ボタンのサンプル

以下のページを参考に、一定のスクロール後に『TOPに戻る』ボタンを作成したところ、iPhoneのSafariでボタンが固定されませんでした。このソースにposition: -webkit-fixed;の追加することで解決できました。

Link

一定量スクロールしたら表示されるボタンを作る方法【jquery、Css】 | ゆうやの雑記ブログ

https://yuyauver98.me/scroll-show-hide-btn/

Link

スクロールすると途中で表示される「トップへ戻るボタン」の実装。さらにフッター手前で止める場合の実装。 | Recooord | Web制作で扱うコーディングスニペットを紹介

https://recooord.org/scroll-to-top/

PAGETOP