別の人が作ったサイトを修正中、タブに<a href=”#●●”>で特定要素に飛ばすように設定したのに、なぜか動きが変…?リンクしている要素よりも上に飛ぶ…?
jsファイルの中を見ると、ありました、”ページ内リンクを指定位置にスクロールで動かす”ためのコードが。これがターゲットよりも上に飛ばしていたんですね。そのコードはこちら。
$(function(){
$('a[href^=#]').click(function() {
var speed = 400;
var href= $(this).attr("href");
var target = $(href == "#" || href == "" ? 'html' : href);
var position = target.offset().top-220;
$('body,html').animate({scrollTop:position}, speed, 'swing');
return false;
});
});
ここに”タブから飛ぶページ内リンクは除外する”条件を加えたのがこちら。
$(function(){
$('a[href^=#]:not(.tab li a)').click(function() {
var speed = 400;
var href= $(this).attr("href");
var target = $(href == "#" || href == "" ? 'html' : href);
var position = target.offset().top-220;
$('body,html').animate({scrollTop:position}, speed, 'swing');
return false;
});
});
:not(除外したい要素) を書き加えました。
これでタブは正常に動作しました。