パララックスの練習3
幅が固定されたページの外からicon01がスライドしてくる動きを作っていきます。
その際、ページの外ではicon01が見えないようにします。
index.php
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="style.css">
<script type="text/javascript" src="jquery-2.1.0.min.js"></script>
<script type="text/javascript" src="function.js"></script>
<title>Parallaxの練習</title>
</head>
<body>
<div id="wrapper">
<div id="icon01">
<p>icon01</p>
</div>
</div>
</body>
</html>
wrapperの中にicon01が入った形を作りました。
style.css
#wrapper{
background-color:#dddddd;
height:3000px;
width:800px;
margin:0 auto;
overflow:hidden;
}
#icon01{
position:relative;
width:200px;
height:200px;
background-color:#888888;
top:100px;
left:-300px;
}
wrapper幅を固定し、中央揃えにします。
wrapperにoverflow:hiddenを設定することで、icon01がwrapperの外で見えないようにします。
icon01のpositionをrelativeにすると、親要素であるwrapperを基準にして位置が決まります。
これでウィンドウの大きさに左右されずにicon01を動かすことができます。
function.js
$(function(){
var li01Pos = ($("#icon01").offset());//最初の位置
$(window).scroll(function(){
var y = $(this).scrollTop();
$("#icon01").css("top",li01Pos.top + y)
if(y < 600){
$("#icon01").css("left", y -300 );
}if(y > 1200){
$("#icon01").css("left", + y - 900 );
}
});
});
offset()はウィンドウの左上を基準にして位置を取得するため、leftのプロパティを変更するために使うと、正しい動作が得られません。
初期値である-300pxにyを足していくとうまくいきました。
これで以上です。
技術