とある万年筆メーカのページで,スクロールに合わせて画像を動かしている部分があり,うちのサイトでも似たようなことをやってみたいと思った.
ただ,良いアイデアが浮かばず,とりあえずスクロールに合わせて犬の画像を回すことにした.

使う画像は上のやつ.
スクロールの検出にはWheelEventを使う.スクロールされたら向きによって5度ずつ傾ける.
cssは以下のようにした.
使用する画像が透明と黒なので背景をgrayにして,画像自体は画面の右下に出るようにした.
35pxっていうのは,画像が斜めになったときに描画範囲からはみ出るのを防ぐため.
画像が正方形で1辺の長さがxなら,だいたい(√2-1)x/2くらいの余裕を持っておけば良さそう?
body{
background-color: gray;
}
#pome{
position:absolute;
bottom:35px;
right:35px;
}
jsは以下の様な感じ.
スクロールしたら向きに合わせてdpw(ここでは5)度ずつ画像を回転させている.
dpwの値はなんとなく決めた.
e.preventDefault()はデフォルトのスクロールを無効にするためのもの.
var deg=0;
var dpw=5;//degree per wheel
if(window.WheelEvent){
document.addEventListener("wheel",function(e){
e.preventDefault();
deg+=e.deltaY>0?dpw:-dpw;
var img=document.getElementById("pome");
img.style.transform="rotate("+deg+"deg)";
});
}
htmlは以下.
cssとjs読み込んで,画像を表示させているだけ.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="./style.css" type="text/css" />
<script src="./script.js" type="text/javascript"></script>
<title>pome's box</title>
</head>
<body>
<img id="pome" src="./pome.png" />
</body>
</html>