質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

1回答

234閲覧

スクロールしたらテキストがついてきて、次のセクションの特定の位置でピタッと配置させたい

y_emo

総合スコア7

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2022/01/23 17:29

前提・実現したいこと

キービジュアル内の真ん中に配置しているテキストが、下スクロールしたらそのまま次のセクションに降りてきて、次のセクションでピタッと配置される、そしてそこから上スクロールで戻るとテキストも一緒に戻り再度キービジュアル内の真ん中に配置されていく…という動きを実装したいです。

下記サイトの様な動きです(ただし下記サイトだと、上スクロールしても要素は元の位置にはこないです)。
https://www.corporate.lasana.co.jp/

PCだとうまくいくのですが、スマホだと上スクロールで戻った時に、テキストがうまく真ん中に配置されず、下にずれて配置されてしまいます。

色々調べて試しているのですが、うまくできずどう書いたらいいか分かりません。
どなたか教えていただけませんでしょうか。
よろしくお願いいたします。

該当のソースコード

HTML

1<div id="kv"></div> 2<section id="section-01"> 3 <div class="section-inner"> 4 <h2>テキスト</h2> 5 </div> 6</section>

CSS

1#section-01 h2{ 2 position: absolute; 3 top: 50%; 4 left: 50%; 5 width: 100%; 6 transform: translate(-50%,-50%); 7} 8 9#section-01 .section-inner{ 10 padding: 345px 0; 11} 12 13#section-01 h2.fixed{ 14 position: fixed; 15 top: 320px; 16} 17 18#section-01 .section-inner.fixed2{ 19 position: relative; 20} 21 22#section-01 h2.fixed2{ 23 position: absolute; 24 top: 220px; 25}

jQuery

1$(function() { 2 var scrollStart = $('#section-01 h2').offset().top-250; 3 var scrollEnd = $('#section-01 .section-inner').offset().top-100; 4 var distance = 0; 5 $(window).scroll(function(){ 6 distance = $(this).scrollTop(); 7 if (scrollStart <= distance) { 8 $('#section-01 h2').addClass('fixed'); 9 } else{ 10 $('#section-01 h2').removeClass('fixed'); 11 } 12 if (scrollEnd <= distance) { 13 $('#section-01 h2').addClass('fixed2'); 14 $('#section-01 .section-inner').addClass('fixed2'); 15 }else{ 16 $('#section-01 h2').removeClass('fixed2'); 17 $('#section-01 .section-inner').removeClass('fixed2'); 18 } 19 }); 20});

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Lhankor_Mhy

2022/01/24 04:19 編集

「下記サイトの様な動きです」とのことですが、これのどのテキストのことですか? 「ニュース一覧へ」ボタンとかですか?
Lhankor_Mhy

2022/01/25 01:25

もしかして、テキストとかではなくて中央にある画像のことですか?
guest

回答1

0

当方の環境ではPCでも上手く動作しませんでした。
おそらく、CSSがpx単位で書かれているので、ビューポートが y_emo さんと異なる環境では位置がずれるのだと思います。
CSSを相対的な単位にすれば上手くいくかもしれませんね。


ご質問の趣旨と異なりますが、stickyを使うといいのかもしれません。
サンプルを置いておきます。
https://jsfiddle.net/Lhankor_Mhy/51ehn9gk/

html

1 <section id="section-01"> 2 <h2>テキスト</h2> 3 </section>

css

1 #section-01 { 2 height: 100vh; 3 } 4 5 #section-01 h2 { 6 position: sticky; 7 top: 50vh; 8 }

投稿2022/01/25 08:06

Lhankor_Mhy

総合スコア36115

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問