現在、ヘッダー部分等、position: fixed;にて固定したレイアウトの場合がよくあります。
その場合、内部リンクがあると、ヘッダー部分の縦幅分、スクロール位置を調整する必要が出てきます。
ネガティブマージン(negative margin)を使って調整をする方法もありますが、
レイアウトにもよりますが、ネガティブマージンを設定してしまうと、
レイアウトが崩れてしまうケースがあります。
今回は、スムースにスクロールする際によく使われるjQueryのスクロール位置の調整方法をご紹介します。
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
$('a[href^=#]').click(function(){
var adjust = 300;
var speed = 500;
var href= $(this).attr("href");
var target = $(href == "#" || href == "" ? 'html' : href);
var position = target.offset().top + adjust;
$("html, body").animate({scrollTop:position}, speed, "swing");
return false;
});
});
</script>
(※300px下にずらした場合の記述です。)