HTML
画像はCSSので配置するのでscale-bgというクラス名の空のdivを配置します。
fixedで固定表示するので他の要素とは別にしておきます。
HTML
<div class="scale-bg"></div> <h1>Title</h1> <div class="contents"> ・・・ </div>
CSS
scale-bg に fixed、contents に relative を指定して位置を調節します。
CSS
.scale-bg { background: url(bg.jpg) no-repeat top center; background-size: 100%; position: fixed; width: 100%; padding-bottom: 400px; } h1 { position: absolute; top: 272px; } .contents { position: relative; top: 400px; padding: 60px 0; }
jQuery
jQueryではscrollイベントでscale-bgのbackgroundSizeとtopの数値を加算するだけですね。
JavaScript
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <script> $(function() { $(window).scroll(function() { var scroll = $(window).scrollTop(); $('.scale-bg').css({ backgroundSize: (100 + scroll/3) + "%", top: -(scroll/10) + "%" }); }); }); </script>