exhibition.vue 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294
  1. <template>
  2. <div class="ebtm-menu">
  3. <img @click.stop="$bus.$emit('changeMenu', 'func')" :src="require(`@/assets/images/proj2022/mobile/menu_active@2x.png`)" alt="" />
  4. <ul>
  5. <li v-for="(item, i) in list" :key="i">
  6. <div :class="{ active: item.id == $route.params.type }" @click="onClick(item)">
  7. <img :src="require(`@/assets/images/proj2022/mobile/zhanxiang/${item.id}@2x.png`)" alt="" />
  8. </div>
  9. </li>
  10. </ul>
  11. <div v-if="!g_isLandscape" class="eb-next">
  12. <img @click="isFirstPage = !isFirstPage" :src="require(`@/assets/images/proj2022/mobile/zhanxiang/${isFirstPage ? 'next' : 'next_left'}.png`)" alt="" />
  13. </div>
  14. </div>
  15. </template>
  16. <script>
  17. export default {
  18. props: ["tourStatus"],
  19. data() {
  20. return {
  21. isFirstPage: true,
  22. };
  23. },
  24. computed: {
  25. list() {
  26. if (this.g_isLandscape) {
  27. return this.themes
  28. }
  29. return this.isFirstPage ? [...this.themes.slice(0, 5)] : [...this.themes.slice(5, 7)];
  30. },
  31. },
  32. methods: {
  33. onClick(item) {
  34. this.$router.push({ params: { type: item.id, isjump: "yes" } });
  35. // this.$bus.$emit("emitShowZX", {
  36. // show: true,
  37. // current: item.id,
  38. // });
  39. },
  40. },
  41. };
  42. </script>
  43. <style lang="less" scoped>
  44. .smenu {
  45. width: 100%;
  46. .sdaolan,
  47. .stoptour {
  48. position: fixed;
  49. cursor: pointer;
  50. bottom: 113px;
  51. width: 45px;
  52. height: 45px;
  53. left: 14px;
  54. border-radius: 50%;
  55. overflow: hidden;
  56. background: rgba(0, 0, 0, 0.4);
  57. &::before {
  58. backdrop-filter: blur(10px) brightness(60%);
  59. }
  60. .daolan {
  61. position: absolute;
  62. top: 52%;
  63. left: 50%;
  64. transform: translate(-50%, -50%);
  65. text-align: center;
  66. > img {
  67. width: 20px;
  68. }
  69. }
  70. }
  71. .stoptour {
  72. .daolan {
  73. position: absolute;
  74. top: 54%;
  75. left: 50%;
  76. transform: translate(-50%, -50%);
  77. text-align: center;
  78. > img {
  79. width: 24px;
  80. }
  81. }
  82. }
  83. .ebtm-menu {
  84. position: fixed;
  85. bottom: 0%;
  86. left: 0%;
  87. z-index: 999;
  88. width: 100%;
  89. height: 103px;
  90. background-image: url("~@/assets/images/proj2022/mobile/shuping_left@2x.png");
  91. background-size: 100% auto;
  92. background-repeat: no-repeat;
  93. background-position: bottom left;
  94. > img {
  95. position: absolute;
  96. top: -10px;
  97. right: 10px;
  98. width: 12%;
  99. }
  100. .brightness {
  101. &::before {
  102. backdrop-filter: blur(10px) brightness(60%);
  103. }
  104. }
  105. > ul {
  106. width: calc(100% - 40px);
  107. height: 50%;
  108. display: flex;
  109. justify-content: flex-start;
  110. align-items: center;
  111. text-align: center;
  112. z-index: 9999;
  113. position: absolute;
  114. bottom: 10px;
  115. left: 0;
  116. > li {
  117. display: inline-block;
  118. padding: 0 0;
  119. width: 12vw;
  120. margin: 0 10px;
  121. flex-shrink: 0;
  122. > div {
  123. > img {
  124. width: 100%;
  125. opacity: 0.6;
  126. }
  127. > span {
  128. font-size: 12px;
  129. color: rgba(255, 255, 255, 0.6);
  130. transform: scale(0.9) translateY(-10px);
  131. display: inline-block;
  132. }
  133. }
  134. .active {
  135. position: relative;
  136. &::after {
  137. content: "";
  138. width: 20px;
  139. height: 20px;
  140. display: inline-block;
  141. position: absolute;
  142. background-color: #fff;
  143. border-radius: 50%;
  144. top: 10%;
  145. left: 50%;
  146. transform: translateX(-50%);
  147. filter: blur(7px);
  148. }
  149. > img {
  150. opacity: 1;
  151. }
  152. > span {
  153. color: rgba(255, 255, 255, 1);
  154. }
  155. }
  156. }
  157. }
  158. .eb-next {
  159. position: absolute;
  160. top: 50%;
  161. right: 10px;
  162. }
  163. }
  164. }
  165. /*横屏*/
  166. @media screen and (orientation: landscape) {
  167. .smenu {
  168. width: 100%;
  169. .ebtm-menu {
  170. position: fixed;
  171. bottom: 0%;
  172. left: 0%;
  173. z-index: 999;
  174. width: 100%;
  175. height: 110px !important;
  176. background-image: url("~@/assets/images/proj2022/mobile/hengping@2x.png") !important;
  177. background-size: 100% auto;
  178. background-repeat: no-repeat;
  179. background-position: bottom left;
  180. > img {
  181. position: absolute;
  182. top: 0;
  183. left: 10px;
  184. width: 60px!important;
  185. }
  186. .brightness {
  187. &::before {
  188. backdrop-filter: blur(10px) brightness(60%);
  189. }
  190. }
  191. > ul {
  192. width: 76%!important;
  193. height: 50%;
  194. display: flex;
  195. justify-content: center;
  196. align-items: flex-end!important;
  197. text-align: center;
  198. z-index: 9999;
  199. position: absolute;
  200. bottom: 6px!important;
  201. left: 50%;
  202. transform: translateX(-50%)!important;
  203. > li {
  204. display: inline-block;
  205. padding: 0 0;
  206. width: 44px;
  207. margin: 0 20px;
  208. > div {
  209. > img {
  210. width: 100%;
  211. opacity: 0.6;
  212. }
  213. > span {
  214. font-size: 12px;
  215. color: rgba(255, 255, 255, 0.6);
  216. transform: scale(0.9) translateY(-10px);
  217. display: inline-block;
  218. }
  219. }
  220. .active {
  221. position: relative;
  222. &::after {
  223. content: "";
  224. width: 20px;
  225. height: 20px;
  226. display: inline-block;
  227. position: absolute;
  228. background-color: #fff;
  229. border-radius: 50%;
  230. top: 10%;
  231. left: 50%;
  232. transform: translateX(-50%);
  233. filter: blur(7px);
  234. }
  235. > img {
  236. opacity: 1;
  237. }
  238. > span {
  239. color: rgba(255, 255, 255, 1);
  240. }
  241. }
  242. }
  243. }
  244. }
  245. }
  246. }
  247. .likeAddAnimate-enter-active,
  248. .likeAddAnimate-leave-active {
  249. transition: all 2.5s ease;
  250. }
  251. .likeAddAnimate-enter,
  252. .likeAddAnimate-leave {
  253. transform: translate(-50%, 0) scale(0);
  254. opacity: 0;
  255. }
  256. .likeAddAnimate-enter-to,
  257. .likeAddAnimate-leave-to {
  258. transform: translate(-50%, -80px) scale(1.2);
  259. opacity: 1;
  260. }
  261. .good {
  262. position: fixed;
  263. bottom: 60px;
  264. left: 50%;
  265. display: flex;
  266. .pic {
  267. width: 35px;
  268. > img {
  269. width: 100%;
  270. height: 100%;
  271. }
  272. }
  273. .num {
  274. margin-top: 10px;
  275. margin-left: 10px;
  276. }
  277. }
  278. .noshow {
  279. position: fixed;
  280. top: -100px;
  281. left: -100px;
  282. opacity: 0;
  283. visibility: hidden;
  284. }
  285. </style>