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

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

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

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

Q&A

解決済

1回答

1930閲覧

jQuery:ブラウザ幅によってスクロール値を変更したい(ページ内スクロール)

aurized

総合スコア14

jQuery

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

0グッド

0クリップ

投稿2016/07/01 01:08

ページ内スクロールで、ブラウザ幅によってスクロールする位置を変えたいなと思っています。
下のようなコードだとページを読み込んだ直後は希望通りの動作をしますが、ブラウザ幅を変えると動作が安定しません。
また、記述の仕方も冗長なのでもうちょっとスマートに書きたいです。
よろしくお願いいたします。

$(window).on('load resize', function(){ if(window.innerWidth > 1029){ $('a[href^=#]').click(function() { var speed = 300; var href= $(this).attr("href"); var target = $(href === "#" || href === "" ? 'html' : href); var position = target.offset().top - 93; $('body,html').animate({scrollTop:position}, speed, 'swing'); return false; }); } else { $('a[href^=#]').click(function() { var speed = 300; var href= $(this).attr("href"); var target = $(href === "#" || href === "" ? 'html' : href); var position = target.offset().top; $('body,html').animate({scrollTop:position02}, speed, 'swing'); return false; }); } });

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

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

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

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

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

guest

回答1

0

ベストアンサー

書かれているコードではリサイズするたびに新たにクリックイベントを追加することになるので、挙動がおかしくなるのだと思います。リサイズ時にフラグを付けてclickイベントの中でそのフラグを参照してはいかがでしょうか。

JavaScript

1var speed = 300; 2var flag = false; 3$( window ).on( 'load resize', function() { 4 if ( window.innerWidth > 1029 ) { 5 flag = true; 6 } else { 7 flag = false; 8 } 9} ); 10$( 'a[href^=#]' ).click( function() { 11 var href= $( this ).attr( 'ref' ); 12 var position = $( href === "#" || href === '' ? 'html' : href ).offset().top; 13 if ( flag ) { position -= 93; } 14 $( 'body, html' ).animate( { scrollTop : position }, speed, 'swing' ); 15 return false; 16} ); // (未テスト)

投稿2016/07/01 02:12

kei344

総合スコア69398

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

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

aurized

2016/07/01 03:03

ご教授ありがとうございます! 早速試してみたところ、希望通りの動作が得られました。 また、このような記述ができるのですね`position -= 93`。 とても勉強になり助かりました!
aurized

2016/07/01 03:28

なるほど、ご丁寧にありがとうございます。勉強になります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問