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