这次给大家带来基于html5陀螺仪实现移动动画效果,基于html5陀螺仪实现移动动画效果的注意事项有哪些,下面就是实战案例,一起来看一下。
最近用ofo小黄车app的时候,发现以前下方扫一扫变成了一个眼睛动的小黄人,觉得蛮有意思的,这里用html5仿一下效果。
ofo眼睛效果
效果分析
从效果中不难看出,是使用陀螺仪事件实现的。
这里先来看一下html5中陀螺仪事件的一些概念。
陀螺仪事件为deviceorientation,这里主要获取事件中的alpha,beta,gamma。
aplha
行动装置水平放置时,绕 z 轴旋转的角度,数值为 0 度到 360 度。
beta
行动装置水平放置时,绕 x 轴旋转的角度,数值为 -180 度到 180 度。
gamma
行动装置水平放置时,绕 z 轴旋转的角度,数值为 -90 度到 90 度。
这里,只需要用到beta和gamma。
将apk解压,得到眼睛素材:
代码实现
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>document</title>
<style>
#box{
position: relative;
width: 300px;
margin: 0 auto;
}
#face{
background-image: url(images/face.png);
background-size: cover;
width: 300px;
height: 300px;
position: absolute;
}
#eyeleft{
background-image: url(images/eye.png);
background-size: cover;
width: 40px;
height: 40px;
position: absolute;
top: 90px;
left: 100px;
}
#eyeright{
background-image: url(images/eye.png);
background-size: cover;
width: 40px;
height: 40px;
position: absolute;
top: 90px;
left: 190px;
}
#glass{
background-image: url(images/glass.png);
background-size: cover;
width: 300px;
height: 300px;
position: absolute;
}
</style>
</head>
<body>
<p id="box">
<p id="face"></p>
<p id="eyeleft"></p>
<p id="eyeright"></p>
<p id="glass"></p>
<p id="log"></p>
</p>
<script>
'use strict';
/*
* author: 王乐平
* date:2017.7.17
*/
var eyeleftposition = {
start: [70, 78],
end: [100, 110]
};
var eyerightposition = {
start: [150, 78],
end: [190, 110]
};
var eyeleftcenterposition = {
x: (eyeleftposition.end[0] - eyeleftposition.start[0]) / 2 + eyeleftposition.start[0],
y: (eyeleftposition.end[1] - eyeleftposition.start[1]) / 2 + eyeleftposition.start[1]
};
var eyerightcenterposition = {
x: (eyerightposition.end[0] - eyerightposition.start[0]) / 2 + eyerightposition.start[0],
y: (eyerightposition.end[1] - eyerightposition.start[1]) / 2 + eyerightposition.start[1]
};
var r = 20;
var eyeleft = document.queryselector('#eyeleft');
var eyeright = document.queryselector('#eyeright');
if (window.deviceorientationevent) {
window.addeventlistener('deviceorientation', function (event) {
let {alpha, beta, gamma} = event;
eyeleft.style.left = eyeleftcenterposition.x + gamma / 90 * r + 'px';
eyeright.style.left = eyerightcenterposition.x + gamma / 90 * r + 'px';
eyeleft.style.top = eyeright.style.top
= eyeleftcenterposition.y + beta / 180 * r + 'px';
eyeright.style.transform = eyeleft.style.transform
= eyeright.style.webkittransform
= eyeleft.style.webkittransform
= 'rotate(' + beta + 'deg)';
}, false);
} else {
document.queryselector('body').innerhtml = '浏览器不支持deviceorientationevent';
}
</script>
</body>
</html>
最终效果
相信看了本文案例你已经掌握了方法,更多精彩请关注其它相关文章!
推荐阅读:
h5拖放api进行拖放排序
ie8不兼容rgba()如何处理
以上就是基于html5陀螺仪实现移动动画效果的详细内容。