HTML5实现眼睛移动效果的示例


本文摘自PHP中文网,作者巴扎黑,侵删。

这篇文章主要介绍了基于HTML5陀螺仪实现ofo首页眼睛移动效果的示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

最近用ofo小黄车App的时候,发现以前下方扫一扫变成了一个眼睛动的小黄人,觉得蛮有意思的,这里用HTML5仿一下效果。

ofo眼睛效果

效果分析

从效果中不难看出,是使用陀螺仪事件实现的。

这里先来看一下HTML5中陀螺仪事件的一些概念。

陀螺仪事件为deviceorientation,这里主要获取事件中的alpha,beta,gamma

aplha

行动装置水平放置时,绕 Z 轴旋转的角度,数值为 0 度到 360 度。

beta

行动装置水平放置时,绕 X 轴旋转的角度,数值为 -180 度到 180 度。

gamma

行动装置水平放置时,绕 Z 轴旋转的角度,数值为 -90 度到 90 度。

这里,只需要用到beta和gamma。

将apk解压,得到眼睛素材:

代码实现


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

<!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>

最终效果

以上就是HTML5实现眼睛移动效果的示例的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

HTML5开发必备-游戏开发资源合集(图文)

vue面试题的介绍(附答案)

HTML5 内联 svg

浏览器兼容HTML5和css3的问题

使用adobe HTML5 extension的开发详解

HTML5怎样进行跨域通信

css中文字相关属性的介绍

详解HTML5网络拓扑图整合openlayers实现gis地图应用(图)

HTML5 output标签是什么意思?HTML5 output标签的使用方法

HTML5 indexeddb本地储存

更多相关阅读请进入《HTML5》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...