최근 나오는 스마트폰의 브라우저에서 지원하는
deviceorientation 를 가지고 이동하는 DIV를 만들어 봤다.
핸드폰을 기울여 보세요.
(do your Mobile phone tilt)
Source
<div id="wrapperDiv">
<div id="moveDiv">
</div>
</div>
<style type="text/css">
#wrapperDiv {
border: solid 1px red;
position: relative;
width: 100%; height: 20px;
margin: 0px;
}
#moveDiv {
background: blue;
position: absolute;
width: 20px; height: 20px;
transition: 500ms;
-webkit-transition: 500ms;
}
</style>
<script type="text/javascript">
function tiltHandler(e) {
/** 기울기(tilt) 계산 **/
var tiltX = 0;
var tiltY = 0;
var current = e.accelerationIncludingGravity;
var facingUp = -1;
if (current.z > 0) {
facingUp = +1;
}
tiltX = Math.round((current.x / 9.81) * -90)* ( Math.PI/ 180);
tiltY = Math.round((current.y / 9.81) * 90 * facingUp)* ( Math.PI/ 180);
if (window.navigator.userAgent.match(/(iPad|iPhone|iPod)/i)) {
tiltX = tiltX * -1.0;
}
/**********************/
var x = 0 ;
var orientation = window.orientation == undefined ? 0 : window.orientation;
switch(orientation) {
case 0: x = tiltX; break;
case 90: x = tiltY; break;
case 180: x = -tiltX; break;
case -90:
case 270: x = -tiltY; break;
default: x = tiltX; break;
}
if ( x > 0.4) {
moveDiv.style.left = maxWidth - 20 + 'px';
}
if ( x < -0.4) {
moveDiv.style.left = '0px';
}
}
var maxWidth = 0;
var wrapperDiv = document.getElementById('wrapperDiv');
var moveDiv = document.getElementById('moveDiv');
window.addEventListener('load', function(){
if (typeof window.addEventListener != "undefined") {
window.addEventListener('devicemotion', tiltHandler);
}
wrapperDiv.parentElement.style.margin = '0px';
wrapperDiv.style.width = wrapperDiv.parentElement.offsetWidth + 'px';
maxWidth = wrapperDiv.parentElement.offsetWidth;
});
</script>
댓글
댓글 쓰기