index.vue 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297
  1. <template>
  2. <div class="product-layout" ref="productLayout">
  3. <div class="plate01 plate">
  4. <img class="pl01-bg" src="@/assets/images/t-bg.png" alt="">
  5. <div class="layout" :style="{marginLeft:(split - 170)+ 'px'}">
  6. <img class="product-img" src="@/assets/images/t_product.png" alt="">
  7. <div class="info">
  8. <h2>4DKankan Pro</h2>
  9. <h2>全球首款 消费级3D空间相机</h2>
  10. <p><span class="money">¥4999</span>起</p>
  11. <p class="p1">安霸H2V95专业级芯片,1600万像素双鱼眼</p>
  12. <p class="p2">Sony IMX 206图像传感器,超爽握感轻便随行</p>
  13. <div class="btns">
  14. <a href="" class="button"><vcenter><img src="@/assets/images/product_icon_arrow.png" alt=""></vcenter></a>
  15. <a href="" class="button">立即购买</a>
  16. </div>
  17. </div>
  18. </div>
  19. <div class="benefit plate">
  20. <h2 class="b-title">3D 4K实景复刻神器</h2>
  21. <div :style="{'animation-delay': `${index*0.2}s`}" class="item" v-for="(benefit, index) in benefitGroup" :key="index">
  22. <i class="iconfont" :class="benefit['fontImg']"></i>
  23. <h3>{{benefit.title}}</h3>
  24. <p v-html="benefit.content"></p>
  25. </div>
  26. </div>
  27. </div>
  28. <div class="plate02 plate">
  29. <div class="application">
  30. <h2>4DKankan App</h2>
  31. <h2>快速编辑和分享你的互动式视频</h2>
  32. <h3>分享你的空间故事</h3>
  33. <div class="download-btn">
  34. <div class="apple">App Store</div>
  35. <div class="android">Android</div>
  36. </div>
  37. </div>
  38. <div class="app-img">
  39. <img src="@/assets/images/app_img1.png" class="i1">
  40. <img src="@/assets/images/app_img2.png" class="i2">
  41. <img src="@/assets/images/app_img3.png" class="i3">
  42. </div>
  43. </div>
  44. <div class="plate03 plate">
  45. <div class="info">
  46. <h2 class="b-title">身临其境,自动导览</h2>
  47. <p class="b-label">同步录制漫游和声音,带你声临其境,享你所享</p>
  48. <!-- <img src="@/assets/images/product_img_content_4.png" alt=""> -->
  49. <phone src="https://www.4dkankan.com/showPC.html?m=5cQcvVwp" />
  50. </div>
  51. <div class="fkkj-layout plate">
  52. <div class="fkkj-imgcon">
  53. <img class="fk_logo" src="@/assets/images/fk_logo.png" alt="">
  54. <img class="fk_jiantou" src="@/assets/images/fk_jiantou.png" alt="">
  55. <img class="fk_jiantou-2" src="@/assets/images/fk_jiantou.png" alt="">
  56. <img class="fk_img" src="@/assets/images/fk_img.png" alt="">
  57. <div class="upload_txt">上传至云端计算</div>
  58. <img class="fk_shouji" src="@/assets/images/fk_shouji.png" alt="">
  59. <div class="shouji_txt">用户端空间展示</div>
  60. <img class="fk_paishe" src="@/assets/images/fk_paishe.png" alt="">
  61. <div class="paishe_txt">APP+空间相机拍摄</div>
  62. <img class="fk_upload" src="@/assets/images/fk_upload.png" alt="">
  63. <img class="fk_mask" src="@/assets/images/fk_mask.png" alt="">
  64. <img class="fk_mask_1" src="@/assets/images/fk_mask.png" alt="">
  65. <img class="fk_mask_2" src="@/assets/images/fk_mask.png" alt="">
  66. </div>
  67. <div class="fkkj-right"><h2 class="b-title">十分钟复刻空间简便易用</h2></div>
  68. </div>
  69. <div class="mxsc-layout plate">
  70. <div class="mxsc-left">
  71. <h2 class="b-title">空间模型瞬间自动生成</h2>
  72. <p class="b-label">平面结构一目了然</p>
  73. </div>
  74. <div class="mxsc-imgcon">
  75. <img class="mx_house" src="@/assets/images/mx_house.png" alt="">
  76. <img class="mx_platform" src="@/assets/images/mx_platform.png" alt="">
  77. </div>
  78. </div>
  79. <div class="hdsp-layout plate">
  80. <div class="hdsp-imgcon">
  81. <img class="hdsp_1" src="@/assets/images/hdsp_1.png" alt="">
  82. <img class="hdsp_2" src="@/assets/images/hdsp_2.png" alt="">
  83. <img class="hdsp_3" src="@/assets/images/hdsp_3.png" alt="">
  84. </div>
  85. <div class="hdsp-right">
  86. <h2 class="b-title">编辑和分享互动式视频</h2>
  87. <p class="b-label">让你的空间讲故事</p>
  88. </div>
  89. </div>
  90. </div>
  91. <div class="plate04 ">
  92. <div class="info plate" ref='p4Info'>
  93. <h2 class="b-title">极致工艺,登峰造极</h2>
  94. <p class="b-label">由多达794个精密元件组装而成,超细腻喷涂工艺</p>
  95. <div class="boom">
  96. </div>
  97. </div>
  98. </div>
  99. <div class="plate05 plate">
  100. <div class="info">
  101. <div class="b-title">4DKankan PRO详细参数</div>
  102. <img src="@/assets/images/product_img_content_6.jpg" alt="">
  103. <div class="standard-layout">
  104. <div class="standard-xinghao">
  105. <h3 class="s-title">{{standardGroup.label}}</h3>
  106. <div class="s-value">{{standardGroup.name}}</div>
  107. <p v-for="(standard,i) in standardGroup.info" :key="i">
  108. <span class="s-value">{{standard.label}} :</span>
  109. <span class="s-value">{{standard.value}}</span>
  110. </p>
  111. </div>
  112. <div class="standard-params">
  113. <div class="s-params1">
  114. <div class="s1-con" v-for="(item,idx) in standardGroup.params1" :key="idx">
  115. <h3 class="s-title">{{item.label}}</h3>
  116. <p class="s-value" v-for="(sub,i) in item.value" :key="i">
  117. {{sub}}
  118. </p>
  119. </div>
  120. </div>
  121. <div class="s-params2">
  122. <div class="s2-con" v-for="(item,idx) in standardGroup.params2" :key="idx">
  123. <h3 class="s-title">{{item.label}}</h3>
  124. <p class="s-value" v-for="(sub,i) in item.value" :key="i">
  125. {{sub}}
  126. </p>
  127. </div>
  128. </div>
  129. </div>
  130. </div>
  131. <div class="btns">
  132. <a href="" class="button">立即购买</a>
  133. </div>
  134. </div>
  135. </div>
  136. </div>
  137. </template>
  138. <script>
  139. import {mapState} from 'vuex'
  140. import vcenter from '@/components/vcenter'
  141. import { getPosition } from '@/util'
  142. import phone from '@/components/phone'
  143. export default {
  144. data () {
  145. let benefitGroup = [
  146. {
  147. fontImg: 'icon-koudai',
  148. icon: require('@/assets/images/product_img_02_a@2x.png'),
  149. title: '轻便易携 装进口袋',
  150. content: '机身体积与普通手机无异, <br>重量为115克,<br>仅为同类型产品重量的1/30。'
  151. },
  152. {
  153. fontImg: 'icon-jianmo',
  154. icon: require('@/assets/images/product_img_02_b@2x.png'),
  155. title: '轻松操作 高效建模',
  156. content: '无需具备专业知识,10分钟即可采集<br>100平米空间数据,一键上传云端系统, <br>5分钟自动生成模型。'
  157. },
  158. {
  159. fontImg: 'icon-manyou',
  160. icon: require('@/assets/images/product_img_02_c@2x.png'),
  161. title: '高精还原 空间漫游',
  162. content: '720°无死角复刻3D实景, <br>呈现4K高清画质, <br>实现沉浸式空间漫游。'
  163. },
  164. {
  165. fontImg: 'icon-paise',
  166. icon: require('@/assets/images/product_img_02_d@2x.png'),
  167. title: '室内室外 皆可拍摄',
  168. content: '攻克同类型设备无法采集室外数据<br>的技术难点,使得3D数据采集<br>不再受地点限制,室内室外皆可完成。'
  169. },
  170. {
  171. fontImg: 'icon-genxing',
  172. icon: require('@/assets/images/product_img_02_e@2x.png'),
  173. title: '自由编辑 随时更新',
  174. content: '贴心打造模型编辑平台<br>支持图文、 视频、 链接等信息热点的<br>添加及更新。'
  175. }
  176. ]
  177. let showGroup = [
  178. {
  179. title: '空间模型瞬间自动生成',
  180. label: '平面结构一目了然',
  181. cover: require('@/assets/images/product_img_content_1.jpg')
  182. },
  183. {
  184. title: '编辑属于你的空间故事',
  185. label: '让故事迷漫於空间',
  186. cover: require('@/assets/images/product_img_content_2.jpg')
  187. },
  188. {
  189. title: '把世界装进口袋里',
  190. label: '世界掌握在你手中',
  191. cover: require('@/assets/images/product_img_content_3.jpg')
  192. }
  193. ]
  194. let standardGroup = {
  195. label: '型号',
  196. name: '四维二目',
  197. info: [{
  198. label: '高度',
  199. value: '141.5毫米'
  200. }, {
  201. label: '宽度',
  202. value: '71.1mm'
  203. }, {
  204. label: '厚度',
  205. value: '17.98mm'
  206. }, {
  207. label: '重量',
  208. value: '115g'
  209. }],
  210. params1: [{
  211. label: '材质',
  212. value: ['钛金属', '磨砂背']
  213. }, {
  214. label: '摄像头',
  215. value: ['f / 2.0 大光圈镜头', '3200万像素SNOY sensor', '220°双鱼眼镜头', '9片8组光学镜头', '3K视频录制速度为30fps']
  216. }, {
  217. label: '连接',
  218. value: ['蓝牙:5.0', 'WiFi:802.11a / b / g / n / ac']
  219. }, {
  220. label: '',
  221. value: []
  222. }],
  223. params2: [{
  224. label: '电池',
  225. value: ['3040mAh', '通过USB快速充电']
  226. }, {
  227. label: '存储',
  228. value: ['支持128G TF卡', '3K视频 录制120分钟']
  229. }, {
  230. label: '端口',
  231. value: ['microUSB', '三脚架固定孔']
  232. }, {
  233. label: '防水防尘',
  234. value: ['IP54']
  235. }]
  236. }
  237. return {
  238. benefitGroup,
  239. showGroup,
  240. standardGroup
  241. }
  242. },
  243. computed: {
  244. ...mapState({
  245. split: state => state.ui.navDivision
  246. })
  247. },
  248. methods: {
  249. },
  250. mounted () {
  251. this.timeout = setTimeout(() => {
  252. let height = getPosition(this.$refs.productLayout).y
  253. let items = Array.from(this.$refs.productLayout.querySelectorAll('.plate'))
  254. this.scrollHandle = function () {
  255. items.forEach((item, index) => {
  256. let isContain = Array.from(item.classList).some(sub => {
  257. return sub === 'hdsp-layout' || sub === 'mxsc-layout' || sub === 'benefit'
  258. })
  259. let addHeight = item.offsetParent && (item.offsetParent.nodeName).toLowerCase() === 'body' ? (item.offsetTop + height) : (item.offsetTop + item.offsetParent.offsetTop + height)
  260. if (addHeight <= window.innerHeight + (window.scrollY || window.pageYOffset) - 300 && isContain) {
  261. item.classList.remove(`hide${index + 1}`)
  262. } else if (addHeight <= window.innerHeight + (window.scrollY || window.pageYOffset) - 500 && !isContain) {
  263. item.classList.remove(`hide${index + 1}`)
  264. } else {
  265. item.classList.add(`hide${index + 1}`)
  266. }
  267. })
  268. }
  269. window.addEventListener('scroll', this.scrollHandle)
  270. this.scrollHandle()
  271. }, 300)
  272. },
  273. destroyed () {
  274. clearTimeout(this.timeout)
  275. window.removeEventListener('scroll', this.scrollHandle)
  276. },
  277. components: {vcenter, phone}
  278. }
  279. </script>
  280. <style lang="scss" scoped>
  281. @import './style.scss';
  282. </style>