hjyd
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

305 lines
9.2 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. <template>
  2. <div class="wrap">
  3. <div class="case_picture_list_container" id="hardware_picture_list">
  4. <div class="empty" v-if="showEmpty"></div>
  5. <div class="contract_title" id="contract_ani">
  6. <p class="line"></p>
  7. <p class="title"><span class="blue_font">软硬件</span>开发</p>
  8. <!-- <img class="img" :src="Back" alt="back" /> -->
  9. </div>
  10. <div class="data_container">
  11. <div class="text">
  12. <span class="blue">
  13. <CountTo
  14. :start="0"
  15. :end="15"
  16. :autoPlay="false"
  17. :i="start_count_i"
  18. :duration="duration"
  19. />
  20. </span>
  21. </div>
  22. <div class="text">
  23. <span class="blue">
  24. <CountTo
  25. :start="0"
  26. :end="300"
  27. :autoPlay="false"
  28. :duration="duration"
  29. :i="start_count_i"
  30. suffix="+"
  31. /> </span
  32. >客户
  33. </div>
  34. <div class="text">
  35. <span class="blue">
  36. <CountTo
  37. :start="0"
  38. :end="500"
  39. :autoPlay="false"
  40. :duration="duration"
  41. :i="start_count_i"
  42. suffix="+" /></span
  43. >项目
  44. </div>
  45. <div class="text">
  46. <span class="blue">
  47. <CountTo
  48. :start="0"
  49. :end="100"
  50. :autoPlay="false"
  51. :duration="duration"
  52. :i="start_count_i"
  53. suffix="W+" /></span
  54. >量产
  55. </div>
  56. </div>
  57. <div class="pic_list">
  58. <div
  59. class="scroll_container_case mb4"
  60. id="hard_scroll_container_case_1"
  61. >
  62. <ul>
  63. <li><img class="pic" :src="A1" alt="" /></li>
  64. <li><img class="pic" :src="A2" alt="" /></li>
  65. <li><img class="pic" :src="A3" alt="" /></li>
  66. <li><img class="pic" :src="A4" alt="" /></li>
  67. <li><img class="pic" :src="A5" alt="" /></li>
  68. <li><img class="pic" :src="A6" alt="" /></li>
  69. <li><img class="pic" :src="A7" alt="" /></li>
  70. <li><img class="pic" :src="A8" alt="" /></li>
  71. </ul>
  72. </div>
  73. <div
  74. class="scroll_container_case mb4"
  75. id="hard_scroll_container_case_2"
  76. >
  77. <ul>
  78. <li><img class="pic" :src="A9" alt="" /></li>
  79. <li><img class="pic" :src="A10" alt="" /></li>
  80. <li><img class="pic" :src="A11" alt="" /></li>
  81. <li><img class="pic" :src="A12" alt="" /></li>
  82. <li><img class="pic" :src="A13" alt="" /></li>
  83. <li><img class="pic" :src="A14" alt="" /></li>
  84. <li><img class="pic" :src="A15" alt="" /></li>
  85. <li><img class="pic" :src="A16" alt="" /></li>
  86. </ul>
  87. </div>
  88. <div class="scroll_container_case" id="hard_scroll_container_case_3">
  89. <ul>
  90. <li><img class="pic" :src="A17" alt="" /></li>
  91. <li><img class="pic" :src="A18" alt="" /></li>
  92. <li><img class="pic" :src="A19" alt="" /></li>
  93. <li><img class="pic" :src="A20" alt="" /></li>
  94. <li><img class="pic" :src="A21" alt="" /></li>
  95. <li><img class="pic" :src="A22" alt="" /></li>
  96. <li><img class="pic" :src="A23" alt="" /></li>
  97. <li><img class="pic" :src="A24" alt="" /></li>
  98. <li><img class="pic" :src="A25" alt="" /></li>
  99. </ul>
  100. </div>
  101. <p class="zhezhao_right"></p>
  102. <p class="zhezhao_left"></p>
  103. </div>
  104. </div>
  105. </div>
  106. </template>
  107. <script setup>
  108. import Back from '@/assets/img/case/biaotiback.png'
  109. import CountTo from 'cpns/CountTo'
  110. import { ref, onMounted } from 'vue'
  111. import A1 from '@/assets/img/harddetail/01.png'
  112. import A2 from '@/assets/img/harddetail/02.png'
  113. import A3 from '@/assets/img/harddetail/03.png'
  114. import A4 from '@/assets/img/harddetail/04.png'
  115. import A5 from '@/assets/img/harddetail/05.png'
  116. import A6 from '@/assets/img/harddetail/06.png'
  117. import A7 from '@/assets/img/harddetail/07.png'
  118. import A8 from '@/assets/img/harddetail/08.png'
  119. import A9 from '@/assets/img/harddetail/09.png'
  120. import A10 from '@/assets/img/harddetail/10.png'
  121. import A11 from '@/assets/img/harddetail/11.png'
  122. import A12 from '@/assets/img/harddetail/12.png'
  123. import A13 from '@/assets/img/harddetail/13.png'
  124. import A14 from '@/assets/img/harddetail/14.png'
  125. import A15 from '@/assets/img/harddetail/15.png'
  126. import A16 from '@/assets/img/harddetail/16.png'
  127. import A17 from '@/assets/img/harddetail/17.png'
  128. import A18 from '@/assets/img/harddetail/18.png'
  129. import A19 from '@/assets/img/harddetail/19.png'
  130. import A20 from '@/assets/img/harddetail/20.png'
  131. import A21 from '@/assets/img/harddetail/21.png'
  132. import A22 from '@/assets/img/harddetail/22.png'
  133. import A23 from '@/assets/img/harddetail/23.png'
  134. import A24 from '@/assets/img/harddetail/24.png'
  135. import A25 from '@/assets/img/harddetail/25.png'
  136. // Import Swiper Vue.js components
  137. import { Swiper, SwiperSlide } from 'swiper/vue'
  138. import { Autoplay } from 'swiper'
  139. import { handleScreenAuto } from '@/common/utils'
  140. import { useCountStore } from '@/store'
  141. import { storeToRefs } from 'pinia'
  142. // Import Swiper styles
  143. import 'swiper/css'
  144. const countStore = useCountStore()
  145. const duration = ref(2000)
  146. const { start_count_i } = storeToRefs(countStore)
  147. const handleScroll = (id, speed) => {
  148. var oDiv = document.getElementById(id)
  149. var oUl = oDiv.getElementsByTagName('ul')[0]
  150. var aLi = oUl.getElementsByTagName('li')
  151. var iSpeed = speed //正左负右
  152. var timer = null
  153. //计算ul的宽为所有li的宽的和;
  154. oUl.innerHTML += oUl.innerHTML + oUl.innerHTML
  155. oUl.style.width = aLi[0].offsetWidth * aLi.length + 'px'
  156. function Slider() {
  157. if (oUl.offsetLeft < -oUl.offsetWidth / 2) {
  158. oUl.style.left = 0
  159. } else if (oUl.offsetLeft > 0) {
  160. oUl.style.left = -oUl.offsetWidth / 2 + 'px'
  161. }
  162. oUl.style.left = oUl.offsetLeft - iSpeed + 'px' //正负为方向
  163. }
  164. timer = setInterval(Slider, 30)
  165. }
  166. const modules = ref([Autoplay])
  167. onMounted(() => {
  168. handleScreenAuto(showEmpty, '#hardware_picture_list')
  169. window.onresize = handleScreenAuto(showEmpty, '#hardware_picture_list')
  170. handleScroll('hard_scroll_container_case_1', 2)
  171. handleScroll('hard_scroll_container_case_2', -2)
  172. handleScroll('hard_scroll_container_case_3', 2)
  173. })
  174. const showEmpty = ref(false)
  175. </script>
  176. <style scoped lang="scss">
  177. .wrap {
  178. width: 100vw;
  179. height: 100vh;
  180. background: $common_bg;
  181. position: relative;
  182. overflow: hidden;
  183. .case_picture_list_container {
  184. width: 100%;
  185. height: 100%;
  186. // background: $common_bg;
  187. .empty {
  188. min-height: 90px;
  189. }
  190. .contract_title {
  191. display: flex;
  192. align-items: center;
  193. justify-content: center;
  194. flex-direction: column;
  195. font-family: 'SourceHanSans';
  196. background-size: 100% 100%;
  197. padding: 55px 55px 20px 55px;
  198. box-sizing: border-box;
  199. position: relative;
  200. white-space: nowrap;
  201. transform-style: preserve-3d;
  202. .line {
  203. width: 39px;
  204. height: 5px;
  205. background: #283fe7;
  206. border-radius: 3px;
  207. margin-bottom: 12px;
  208. }
  209. .img {
  210. position: absolute;
  211. top: 50%;
  212. left: 50%;
  213. transform: translateX(-50%) translateY(-50%) translateZ(-1px);
  214. width: 543px;
  215. height: 61px;
  216. }
  217. .title {
  218. font-size: 30px;
  219. font-weight: bold;
  220. color: #000000;
  221. margin-bottom: 21px;
  222. .blue_font {
  223. color: $theme_color;
  224. }
  225. }
  226. .detail {
  227. font-size: 18px;
  228. font-weight: 300;
  229. font-family: 'SourceHanSansLight';
  230. color: #646a73;
  231. }
  232. }
  233. .data_container {
  234. display: flex;
  235. align-items: center;
  236. justify-content: space-evenly;
  237. font-size: 50px;
  238. font-family: 'SourceHanSans';
  239. font-weight: 400;
  240. color: #000000;
  241. .text {
  242. display: flex;
  243. align-items: center;
  244. .blue {
  245. font-size: 65px;
  246. font-family: 'ZonaPro';
  247. font-weight: 900;
  248. color: $theme_color;
  249. margin-right: 19px;
  250. }
  251. }
  252. }
  253. .pic_list {
  254. padding: 46px 75px 75px 75px;
  255. position: relative;
  256. .zhezhao_right {
  257. position: absolute;
  258. right: 70px;
  259. bottom: 0px;
  260. width: 163px;
  261. height: 100%;
  262. background: url(../../../../assets/img/case/zhezhao.png) no-repeat;
  263. background-size: 100% 100%;
  264. }
  265. .zhezhao_left {
  266. position: absolute;
  267. left: 70px;
  268. top: 0;
  269. bottom: 0;
  270. width: 163px;
  271. height: 100%;
  272. transform: rotate(180deg);
  273. background: url(../../../../assets/img/case/zhezhao.png) no-repeat;
  274. background-size: 100% 100%;
  275. }
  276. .mb4 {
  277. margin-bottom: 41px;
  278. }
  279. .scroll_container_case {
  280. position: relative;
  281. overflow: hidden;
  282. height: 171px;
  283. ul {
  284. position: absolute;
  285. left: 0;
  286. li {
  287. padding: 5px;
  288. list-style: none;
  289. width: 307px;
  290. float: left;
  291. margin: 0 22px;
  292. .pic {
  293. width: 307px;
  294. height: 171px;
  295. }
  296. }
  297. }
  298. }
  299. }
  300. }
  301. }
  302. </style>