お世話になります、Javascript初心者です。
AページからクリックでBページのアンカーに移動するという挙動にしています。
・Bページにはいくつかのアンカーがあり、そのアンカーは全てアコーディオンで開くようになっています。
・1000以上と以下(またはスマホ)で移動するアンカーの位置を変えています(ヘッダーの高さが変わるため)
挙動は上手くいっているのですが、記述が重複しているので、もっとスマートな書き方をしたいのですが、ご教授いただけないでしょうか。
headerHの部分だけ処理を変えたらよいかと思ったのですが、何度やっても動かなくなったり、違う動きになってしまったりします。
すみませんがよろしくお願いいたします。
【html クリック元Aページ】 <header> ... </header> <a href="pageB.php#1"> <div> ... </div> </a> 【html クリック先Bページ】 <header> ... </header> <div id="1" class="box accordion"> <div class="box_ttl button"> ... </div> <div class="box_contents appear"> ... </div> </div> 【Javascript】 var windowW =$(window).width(); if (navigator.userAgent.indexOf('iPhone') > 0 || navigator.userAgent.indexOf('iPad') > 0 || navigator.userAgent.indexOf('iPod') > 0 || navigator.userAgent.indexOf('Android') > 0 || windowW < 1000) { $(function(){ var urlHash = location.hash; var headerH = 140; var speed = 500; var position = $(location.hash).offset().top - headerH; if(urlHash){ $(urlHash).find('.appear').slideToggle(); $(urlHash).find('.button').toggleClass('open'); $('body,html').animate({scrollTop:position}, speed, 'swing'); } }); } else { $(function(){ var urlHash = location.hash; var headerH = 70; var speed = 500; var position = $(location.hash).offset().top - headerH; if(urlHash){ $(urlHash).find('.appear').slideToggle(); $(urlHash).find('.button').toggleClass('open'); $('body,html').animate({scrollTop:position}, speed, 'swing'); } }); } 【Javascript だめだった例】 var windowW =$(window).width(); $(function(){ var urlHash = location.hash; var speed = 500; var headerH = 140; if (navigator.userAgent.indexOf('iPhone') > 0 || navigator.userAgent.indexOf('iPad') > 0 || navigator.userAgent.indexOf('iPod') > 0 || navigator.userAgent.indexOf('Android') > 0 || windowW < 1000) { var position = $(location.hash).offset().top - headerH; } else { headerH = 70; } if(urlHash){ $(urlHash).find('.appear').slideToggle(); $(urlHash).find('.button').toggleClass('open'); $('body,html').animate({scrollTop:position}, speed, 'swing'); } });
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/07 03:12