pic.vue 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260
  1. <template>
  2. <div v-if="isBody" class="left-pic-content">
  3. <div class="dt small-logo">
  4. <div class="cons">
  5. <img src="../../../assets/login/bim.png" alt="" class="logos">
  6. <img src="../../../assets/login/s1.png" alt="" class="shadow1">
  7. </div>
  8. </div>
  9. <div class="ds small-logo">
  10. <div class="cons">
  11. <img src="../../../assets/login/gis.png" alt="" class="logos">
  12. <img src="../../../assets/login/s1.png" alt="" class="shadow1">
  13. </div>
  14. </div>
  15. <div class="cc small-logo">
  16. <div class="cons">
  17. <img src="../../../assets/login/bd.png" alt="" class="logos">
  18. <img src="../../../assets/login/s1.png" alt="" class="shadow1">
  19. </div>
  20. </div>
  21. <div class="rp small-logo">
  22. <div class="cons">
  23. <img src="../../../assets/login/ca.png" alt="" class="logos">
  24. <img src="../../../assets/login/s1.png" alt="" class="shadow1">
  25. </div>
  26. </div>
  27. <div class="cube1">
  28. <div class="cons">
  29. <img src="../../../assets/login/cube1.png" alt="" class="cubes">
  30. <img src="../../../assets/login/s2.png" alt="" class="shadow2">
  31. </div>
  32. </div>
  33. <div class="cube2">
  34. <div class="cons">
  35. <img src="../../../assets/login/cube2.png" alt="" class="cubes">
  36. <img src="../../../assets/login/s3.png" alt="" class="shadow3">
  37. </div>
  38. </div>
  39. <div class="logo">
  40. <a href="http://hczc.hcxxy.com/" target="_blank">
  41. <div class="a-cons" />
  42. </a>
  43. </div>
  44. </div>
  45. </template>
  46. <script setup>
  47. import { nextTick, ref } from 'vue'
  48. const isBody = ref(false)
  49. //渲染完成
  50. nextTick(()=> {
  51. isBody.value = true
  52. })
  53. </script>
  54. <style lang="scss" scoped>
  55. .left-pic-content {
  56. width: 100%;
  57. height: 100%;
  58. position: relative;
  59. background-image: url(/src/assets/login/bg.png);
  60. background-repeat: no-repeat;
  61. background-size: 100%;
  62. background-position: center;
  63. .small-logo {
  64. width: 110px;
  65. position: absolute;
  66. .cons {
  67. height: 160px;
  68. overflow: hidden;
  69. }
  70. .logos {
  71. width: 100%;
  72. margin-top: 30px;
  73. }
  74. .shadow1 {
  75. width: 64px;
  76. position: absolute;
  77. left: 44%;
  78. transform: translateX(-50%);
  79. bottom: -16px;
  80. }
  81. }
  82. .cons {
  83. position: relative;
  84. }
  85. .dt {
  86. left: 166px;
  87. top: 86px;
  88. .logos {
  89. animation: logoAnimate 4s 0.2s infinite alternate forwards;
  90. }
  91. .shadow1 {
  92. animation: logoShadowAnimate 4s 0.2s infinite alternate forwards;
  93. }
  94. }
  95. .ds {
  96. right: 176px;
  97. top: 54px;
  98. .logos {
  99. animation: logoAnimate 2.2s infinite alternate;
  100. }
  101. .shadow1 {
  102. animation: logoShadowAnimate 2.2s infinite alternate;
  103. }
  104. }
  105. .cc {
  106. right: 72px;
  107. bottom: 160px;
  108. .logos {
  109. animation: logoAnimate 2.5s 0.5s infinite alternate;
  110. }
  111. .shadow1 {
  112. animation: logoShadowAnimate 2.5s 0.5s infinite alternate;
  113. }
  114. }
  115. .rp {
  116. left: 290px;
  117. bottom: 76px;
  118. .logos {
  119. animation: logoAnimate 3s 0.9s infinite alternate;
  120. }
  121. .shadow1 {
  122. animation: logoShadowAnimate 3s 0.9s infinite alternate;
  123. }
  124. }
  125. .cubes {
  126. display: block;
  127. width: 100%;
  128. }
  129. .cube1 {
  130. width: 48px;
  131. right: 60px;
  132. top: 180px;
  133. position: absolute;
  134. .cons {
  135. height: 108px;
  136. position: relative;
  137. overflow: hidden;
  138. .cubes {
  139. animation: cube1LogoAnimate 2s infinite alternate;
  140. }
  141. .shadow2 {
  142. position: absolute;
  143. width: 56px;
  144. left: 48%;
  145. transform: translateX(-50%);
  146. bottom: -16px;
  147. animation: cube1ShadowAnimate 2s infinite alternate;
  148. }
  149. }
  150. }
  151. .cube2 {
  152. position: absolute;
  153. width: 56px;
  154. left: 130px;
  155. bottom: 190px;
  156. .cons {
  157. position: relative;
  158. height: 126px;
  159. overflow: hidden;
  160. .cubes {
  161. animation: cube2LogoAnimate 2s 0.3s infinite alternate;
  162. }
  163. .shadow3 {
  164. position: absolute;
  165. width: 64px;
  166. left: 48%;
  167. transform: translateX(-50%);
  168. bottom: -16px;
  169. animation: cube2ShadowAnimate 2s 0.3s infinite alternate;
  170. }
  171. }
  172. }
  173. .logo {
  174. right: 260px;
  175. top: 190px;
  176. width: 150px;
  177. position: absolute;
  178. height: 160px;
  179. cursor: pointer;
  180. .a-cons {
  181. width: 100%;
  182. height: 100%;
  183. }
  184. }
  185. }
  186. //动画效果
  187. @keyframes logoAnimate {
  188. 25% {
  189. -webkit-transform: translateY(0);
  190. -moz-transform: translateY(0);
  191. -ms-transform: translateY(0);
  192. -o-transform: translateY(0);
  193. transform: translateY(0);
  194. }
  195. 100% {
  196. -webkit-transform: translateY(-30px);
  197. -moz-transform: translateY(-30px);
  198. -ms-transform: translateY(-30px);
  199. -o-transform: translateY(-30px);
  200. transform: translateY(-30px);
  201. }
  202. }
  203. @keyframes logoShadowAnimate {
  204. 25% {
  205. width: 64px;
  206. margin-bottom: 0;
  207. }
  208. 100% {
  209. width: 30px;
  210. margin-bottom: 20px;
  211. }
  212. }
  213. @keyframes cube1LogoAnimate {
  214. 0% {
  215. -webkit-transform: translateY(0);
  216. -moz-transform: translateY(0);
  217. -ms-transform: translateY(0);
  218. -o-transform: translateY(0);
  219. transform: translateY(0);
  220. }
  221. 100% {
  222. -webkit-transform: translateY(30px);
  223. -moz-transform: translateY(30px);
  224. -ms-transform: translateY(30px);
  225. -o-transform: translateY(30px);
  226. transform: translateY(30px);
  227. }
  228. }
  229. @keyframes cube1ShadowAnimate {
  230. 0% {
  231. width: 20px;
  232. margin-bottom: 20px;
  233. }
  234. 100% {
  235. width: 56px;
  236. }
  237. }
  238. @keyframes cube2LogoAnimate {
  239. 0% {
  240. margin-top: 30px;
  241. }
  242. 100% {
  243. margin-top: 0;
  244. }
  245. }
  246. @keyframes cube2ShadowAnimate {
  247. 0% {
  248. width: 64px;
  249. }
  250. 100% {
  251. width: 30px;
  252. margin-bottom: 20px;
  253. }
  254. }
  255. </style>