doorAnimate.vue 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. <template>
  2. <view style="width:100%;height:100%">
  3. <div class="door-container">
  4. <div style="" v-show="doorcount==1">
  5. <div class="door1" v-show="doorcount==1" :style="{height:height}">
  6. <div class="left_door" v-bind:class="gatestate1 == '1' || gatestate1 == '开启' || gatestate1 == '打开' || gatestate1 == 'true'?'open_left':'close_left'" id="leftdoor1"></div>
  7. <div class="right_door" v-bind:class="gatestate1 == '1' || gatestate1 == '开启' || gatestate1 == '打开' || gatestate1 == 'true'?'open_right':'close_right'" id="rightdoor1"></div>
  8. </div>
  9. </div>
  10. <div style="" v-show="doorcount==2">
  11. <div class="door2" v-show="doorcount==2" :style="{height:height}">
  12. <div class="left_door" v-bind:class="gatestate1 == '1' || gatestate1 == '开启' || gatestate1 == '打开' || gatestate1 == 'true'?'open_left':'close_left'" id="leftdoor2"></div>
  13. <div class="right_door" v-bind:class="gatestate1 == '1' || gatestate1 == '开启' || gatestate1 == '打开' || gatestate1 == 'true'?'open_right':'close_right'" id="rightdoor2"></div>
  14. </div>
  15. <div class="door2" v-show="doorcount==2" :style="{height:height}">
  16. <div class="left_door" v-bind:class="gatestate2 == '1' || gatestate2 == '开启' || gatestate2 == '打开' || gatestate2 == 'true'?'open_left':'close_left'" id="leftdoor3"></div>
  17. <div class="right_door" v-bind:class="gatestate2 == '1' || gatestate2 == '开启' || gatestate2 == '打开' || gatestate2 == 'true'?'open_right':'close_right'" id="rightdoor3"></div>
  18. </div>
  19. </div>
  20. <div style="" v-show="doorcount==3">
  21. <div class="door3" v-show="doorcount==3" :style="{height:height}">
  22. <div class="left_door" v-bind:class="gatestate1 == '1' || gatestate1 == '开启' || gatestate1 == '打开' || gatestate1 == 'true'?'open_left':'close_left'" id="leftdoor4"></div>
  23. <div class="right_door" v-bind:class="gatestate1 == '1' || gatestate1 == '开启' || gatestate1 == '打开' || gatestate1 == 'true'?'open_right':'close_right'" id="rightdoor4"></div>
  24. </div>
  25. <div class="door3" v-show="doorcount==3" :style="{height:height}">
  26. <div class="left_door" v-bind:class="gatestate2 == '1' || gatestate2 == '开启' || gatestate2 == '打开' || gatestate2 == 'true'?'open_left':'close_left'" id="leftdoor5"></div>
  27. <div class="right_door" v-bind:class="gatestate2 == '1' || gatestate2 == '开启' || gatestate2 == '打开' || gatestate2 == 'true'?'open_right':'close_right'" id="rightdoor5"></div>
  28. </div>
  29. <div class="door3" v-show="doorcount==3" :style="{height:height}">
  30. <div class="left_door" v-bind:class="gatestate3 == '1' || gatestate3 == '开启' || gatestate3 == '打开' || gatestate3 == 'true'?'open_left':'close_left'" id="leftdoor6"></div>
  31. <div class="right_door" v-bind:class="gatestate3 == '1' || gatestate3 == '开启' || gatestate3 == '打开' || gatestate3 == 'true'?'open_right':'close_right'" id="rightdoor6"></div>
  32. </div>
  33. </div>
  34. <div style="" v-show="doorcount==4">
  35. <div class="door4" v-show="doorcount==4" :style="{height:height}">
  36. <div class="left_door" v-bind:class="gatestate1 == '1' || gatestate1 == '开启' || gatestate1 == '打开' || gatestate1 == 'true'?'open_left':'close_left'" id="leftdoor7"></div>
  37. <div class="right_door" v-bind:class="gatestate1 == '1' || gatestate1 == '开启' || gatestate1 == '打开' || gatestate1 == 'true'?'open_right':'close_right'" id="rightdoor7"></div>
  38. </div>
  39. <div class="door4" v-show="doorcount==4" :style="{height:height}">
  40. <div class="left_door" v-bind:class="gatestate2 == '1' || gatestate2 == '开启' || gatestate2 == '打开' || gatestate2 == 'true'?'open_left':'close_left'" id="leftdoor8"></div>
  41. <div class="right_door" v-bind:class="gatestate2 == '1' || gatestate2 == '开启' || gatestate2 == '打开' || gatestate2 == 'true'?'open_right':'close_right'" id="rightdoor8"></div>
  42. </div>
  43. <div class="door4" v-show="doorcount==4" :style="{height:height}">
  44. <div class="left_door" v-bind:class="gatestate3 == '1' || gatestate3 == '开启' || gatestate3 == '打开' || gatestate3 == 'true'?'open_left':'close_left'" id="leftdoor9"></div>
  45. <div class="right_door" v-bind:class="gatestate3 == '1' || gatestate3 == '开启' || gatestate3 == '打开' || gatestate3 == 'true'?'open_right':'close_right'" id="rightdoor9"></div>
  46. </div>
  47. <div class="door4" v-show="doorcount==4" :style="{height:height}">
  48. <div class="left_door" v-bind:class="gatestate4 == '1' || gatestate4 == '开启' || gatestate4 == '打开' || gatestate4 == 'true'?'open_left':'close_left'" id="leftdoor10"></div>
  49. <div class="right_door" v-bind:class="gatestate4 == '1' || gatestate4 == '开启' || gatestate4 == '打开' || gatestate4 == 'true'?'open_right':'close_right'" id="rightdoor10"></div>
  50. </div>
  51. </div>
  52. </div>
  53. </view>
  54. </template>
  55. <script>
  56. export default {
  57. data() {
  58. return {
  59. height:"200px"
  60. }
  61. },
  62. props:['gatestate1','gatestate2','gatestate3','gatestate4','doorcount'],
  63. methods: {
  64. },
  65. watch:{
  66. doorcount(val){
  67. if(val == 1){
  68. this.height = "180px";
  69. }
  70. if(val == 2){
  71. this.height = "180px";
  72. }
  73. if(val == 3){
  74. this.height = "110px";
  75. }
  76. if(val == 4){
  77. this.height = "180px";
  78. }
  79. }
  80. },
  81. onLoad(query) {
  82. },
  83. }
  84. </script>
  85. <style scoped>
  86. /*门里面*/
  87. div.door1 {
  88. width: 60%;
  89. float: left;
  90. margin-left: 20%;
  91. background-image: url(../../../../static/door.png);
  92. background-size: 100% 100%;
  93. perspective: 800px;
  94. }
  95. div.door2 {
  96. width: 50%;
  97. float: left;
  98. background-image: url(../../../../static/door.png);
  99. background-size: 100% 100%;
  100. perspective: 800px;
  101. }
  102. div.door3 {
  103. width: 33.3%;
  104. float: left;
  105. background-image: url(../../../../static/door.png);
  106. background-size: 100% 100%;
  107. perspective: 400px;
  108. }
  109. div.door4 {
  110. width: 50%;
  111. float: left;
  112. background-image: url(../../../../static/door.png);
  113. background-size: 100% 100%;
  114. perspective: 800px;
  115. }
  116. /*左门/右门*/
  117. div.left_door {
  118. top: 12%;
  119. left:10%;
  120. width: 40.5%;
  121. height: 78%;
  122. box-sizing: border-box;
  123. float: left;
  124. z-index: 1;
  125. position: absolute;
  126. transition: all 2s ease;
  127. background-image: url(../../../../static/left.png);
  128. background-size: 100% 100%;
  129. }
  130. div.right_door {
  131. top: 12%;
  132. right: 10%;
  133. width: 40.2%;
  134. height: 78%;
  135. box-sizing: border-box;
  136. float: left;
  137. z-index: 1;
  138. position: absolute;
  139. transition: all 2s ease;
  140. background-image: url(../../../../static/left.png);
  141. background-size: 100% 100%;
  142. }
  143. div.left_door {
  144. transform-origin: left center;
  145. border-right: 1px solid rgb(8, 8, 8);
  146. }
  147. div.right_door {
  148. transform-origin: right center;
  149. border-left: 1px solid rgb(8, 8, 8);
  150. }
  151. .open_left{
  152. transform: rotateY(100deg);
  153. }
  154. .open_right{
  155. transform: rotateY(-100deg);
  156. }
  157. .close_left{
  158. transform: rotateY(0);
  159. }
  160. .close_right{
  161. transform: rotateY(0deg);
  162. }
  163. /*使用css变形功能
  164. div.door:hover div.left_door{
  165. transform:rotateY(100deg);
  166. }
  167. div.door:hover div.right_door{
  168. transform:rotateY(-100deg);
  169. }*/
  170. </style>