移动端全景装修图的实现实例分享


本文摘自PHP中文网,作者零下一度,侵删。

移动端全景装修图的实现实例分享

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

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

<!DOCTYPE html>

<html lang="en">

<head>

<meta name="viewport" content="width=device-width,user-scalable=no" />

<meta charset="UTF-8">

<title>Document</title>

<style type="text/css">

body,

html {

margin: 0;

height: 100%;

overflow: hidden;

position: relative;

}

.wrap {

position: relative;

height: 100%;

}

.view,

.boxZ,

.box {

position: absolute;

left: 50%;

top: 50%;

-webkit-transform-style: preserve-3d;

transform-style: preserve-3d;

}

.box {

-webkit-transform: rotateY(0deg);

transform: rotateY(0deg);

-webkit-animation: 36s rotate infinite linear;

animation: 36s rotate infinite linear;

}

.box span {

position: absolute;

left: 50%;

top: 50%;

margin: -512px 0 0 -512px;

width: 1024px;

height: 1024px;

text-align: center;

-webkit-backface-visibility: hidden;

backface-visibility: hidden;

/*

背面,角度和父级的角度相对的面是背景

*/

}

.box span:nth-of-type(1) {

-webkit-transform: rotateY(0deg) translateZ(-510px);

transform: rotateY(0deg) translateZ(-511px);

background: url(img/neg-x.png) no-repeat;

}

.box span:nth-of-type(2) {

-webkit-transform: rotateY(90deg) translateZ(-511px);

transform: rotateY(90deg) translateZ(-511px);

background: url(img/neg-z.png) no-repeat;

}

.box span:nth-of-type(3) {

-webkit-transform: rotateY(180deg) translateZ(-511px);

transform: rotateY(180deg) translateZ(-511px);

background: url(img/pos-x.png) no-repeat;

}

.box span:nth-of-type(4) {

background: url(img/pos-z.png) no-repeat;

-webkit-transform: rotateY(270deg) translateZ(-511px);

transform: rotateY(270deg) translateZ(-511px);

}

.box span:nth-of-type(5) {

background: url(img/pos-y.png);

-webkit-transform: rotateX(-90deg) translateZ(-511px);

transform: rotateX(-90deg) translateZ(-511px);

}

.box span:nth-of-type(6) {

background: url(img/neg-y.png);

-webkit-transform: rotateX(90deg) translateZ(-511px);

transform: rotateX(90deg) translateZ(-511px);

}

/*

transform-origin z轴的设置,在ios下有兼容问题

*/

#loading {

position: fixed;

left: 0;

top: 0;

width: 100%;

height: 100%;

z-index: 10;

background: #fff url(img/loading.gif) no-repeat center center;

}

</style>

</head>

<body>

<div id="loading"></div>

<script type="text/javascript">

/* 检测图片加载完成 */

(function(){

var imgData = [

"img/neg-x.png",

"img/neg-y.png",

"img/neg-z.png",

"img/pos-x.png",

"img/pos-y.png",

"img/pos-z.png"

];

var nub = 0;

for(var i = 0; i < imgData.length; i++){

load(imgData[i]);

}

function load(url){

var img = new Image();

img.onload = function(){

nub++;

if(nub == imgData.length){

loading.style.display = "none";

}

};

img.src = url;

}

})();

</script>

<div class="wrap">

<div class="view">

<div class="boxZ">

<div class="box">

<span></span>

<span></span>

<span></span>

<span></span>

<span></span>

<span></span>

</div>

</div>

</div>

</div>

<script type="text/javascript" src="js/m.touch.js?1.1.11"></script>

<script type="text/javascript">

(function(){

setPerspective();

window.addEventListener('resize', function(e) {

setPerspective();

});

function setPerspective(){

var wrap = document.querySelector('.wrap');

var view = document.querySelector('.view');

var boxZ = document.querySelector('.boxZ');

var deg = 45;//视野夹角(角度越小,看到的范围越广,角度越大,看到的范围越少);

var Z = Math.round(Math.tan(deg*Math.PI/180)*wrap.clientHeight/2);//计算景深

wrap.style.perspective = wrap.style.WebKitPerspective = Z + "px";

//距离景物距离不变,那看到的画面大小就不变

css(view,"translateZ",Z);

css(boxZ,"translateZ",-100);

}

})();

(function(){

var box = document.querySelector('.box');

css(box,"rotateX",0);

css(box,"rotateY",0);

window.addEventListener('deviceorientation', function(e) {

var x = e.beta;

var y = e.gamma;

var z = e.alpha;

var rotateX = x - 90;

var rotateY = (y + z)%360;

if(rotateX > 60){

rotateX = 60;

} else if(rotateX <-60){

rotateX = -60;

}

css(box,"rotateX",rotateX);

css(box,"rotateY",-rotateY);

});

})();

//

</script>

</body>

</html>

以上就是移动端全景装修图的实现实例分享的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

css标签与标签怎么设置距离

javascript 来好好盘一盘闭包!

css如何改变字体粗细

使用html5的canvas和javascript创建一个绘图程序的示例代码

javascript怎么实现鼠标追随

javascript如何将字符串转为数字

css怎么去除li的点

ie浏览器不支持javascript怎么办

javascript中对象一般由什么组成

css字体颜色的设置方法

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




打赏

取消

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

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

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

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

评论

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