MoreContent.vue 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986
  1. <template>
  2. <div class="more-content">
  3. <div
  4. ref="scrollTarget"
  5. v-touch:swipe.left="onSwipeLeft"
  6. v-touch:swipe.right="onswipeRight"
  7. class="scroll-target"
  8. >
  9. <img
  10. class="bg"
  11. :style="{
  12. left: bgLeft + 'px'
  13. }"
  14. src="@/assets/images/fade-chapter-wood/bg-more-content.jpg"
  15. alt=""
  16. draggable="false"
  17. >
  18. <div
  19. class="layer-4"
  20. :style="{
  21. left: layer4Left + 'px',
  22. }"
  23. >
  24. <img
  25. class="bamboo-4_01"
  26. src="@/assets/images/fade-chapter-wood/4_01.png"
  27. alt=""
  28. draggable="false"
  29. >
  30. <img
  31. class="bamboo-4_02"
  32. src="@/assets/images/fade-chapter-wood/4_02.png"
  33. alt=""
  34. draggable="false"
  35. >
  36. <!-- <img
  37. class="bamboo-4_03"
  38. src="@/assets/images/fade-chapter-wood/4_03.png"
  39. alt=""
  40. draggable="false"
  41. > -->
  42. <!-- <img
  43. class="bamboo-4_04"
  44. src="@/assets/images/fade-chapter-wood/4_04.png"
  45. alt=""
  46. draggable="false"
  47. > -->
  48. <img
  49. class="bamboo-4_05"
  50. src="@/assets/images/fade-chapter-wood/4_05.png"
  51. alt=""
  52. draggable="false"
  53. >
  54. <img
  55. class="bamboo-4_06"
  56. src="@/assets/images/fade-chapter-wood/4_06.png"
  57. alt=""
  58. draggable="false"
  59. >
  60. <img
  61. class="bamboo-4_07"
  62. src="@/assets/images/fade-chapter-wood/4_07.png"
  63. alt=""
  64. draggable="false"
  65. >
  66. <img
  67. class="bamboo-4_08"
  68. src="@/assets/images/fade-chapter-wood/4_08.png"
  69. alt=""
  70. draggable="false"
  71. >
  72. <img
  73. class="bamboo-4_09"
  74. src="@/assets/images/fade-chapter-wood/4_09.png"
  75. alt=""
  76. draggable="false"
  77. >
  78. <img
  79. class="bamboo-4_10"
  80. src="@/assets/images/fade-chapter-wood/4_10.png"
  81. alt=""
  82. draggable="false"
  83. >
  84. <img
  85. class="bamboo-4_11"
  86. src="@/assets/images/fade-chapter-wood/4_11.png"
  87. alt=""
  88. draggable="false"
  89. >
  90. <img
  91. class="bamboo-4_12"
  92. src="@/assets/images/fade-chapter-wood/4_12.png"
  93. alt=""
  94. draggable="false"
  95. >
  96. </div>
  97. <div
  98. class="layer-3"
  99. :style="{
  100. left: layer3Left + 'px',
  101. }"
  102. >
  103. <img
  104. class="bamboo-3_01"
  105. src="@/assets/images/fade-chapter-wood/3_01.png"
  106. alt=""
  107. draggable="false"
  108. >
  109. <img
  110. class="bamboo-3_02"
  111. src="@/assets/images/fade-chapter-wood/3_02.png"
  112. alt=""
  113. draggable="false"
  114. >
  115. <img
  116. class="bamboo-3_03"
  117. src="@/assets/images/fade-chapter-wood/3_03.png"
  118. alt=""
  119. draggable="false"
  120. >
  121. <img
  122. class="bamboo-3_04"
  123. src="@/assets/images/fade-chapter-wood/3_04.png"
  124. alt=""
  125. draggable="false"
  126. >
  127. </div>
  128. <div
  129. class="layer-2"
  130. :style="{
  131. left: layer2Left + 'px',
  132. }"
  133. >
  134. <img
  135. class="bamboo-2_01"
  136. src="@/assets/images/fade-chapter-wood/2_01.png"
  137. alt=""
  138. draggable="false"
  139. >
  140. <img
  141. class="bamboo-2_03"
  142. src="@/assets/images/fade-chapter-wood/2_03.png"
  143. alt=""
  144. draggable="false"
  145. >
  146. <img
  147. class="bamboo-2_02"
  148. src="@/assets/images/fade-chapter-wood/2_02.png"
  149. alt=""
  150. draggable="false"
  151. >
  152. <!-- <img
  153. class="bamboo-2_03"
  154. src="@/assets/images/fade-chapter-wood/2_03.png"
  155. alt=""
  156. draggable="false"
  157. > -->
  158. <img
  159. class="bamboo-2_04"
  160. src="@/assets/images/fade-chapter-wood/2_04.png"
  161. alt=""
  162. draggable="false"
  163. >
  164. <img
  165. class="bamboo-2_04-1"
  166. src="@/assets/images/fade-chapter-wood/2_04-1.png"
  167. alt=""
  168. draggable="false"
  169. >
  170. <img
  171. class="bamboo-2_05"
  172. src="@/assets/images/fade-chapter-wood/2_05.png"
  173. alt=""
  174. draggable="false"
  175. >
  176. </div>
  177. <div
  178. class="layer-1"
  179. :style="{
  180. left: layer1Left + 'px',
  181. }"
  182. >
  183. <img
  184. class="bamboo-1_01"
  185. src="@/assets/images/fade-chapter-wood/1_01.png"
  186. alt=""
  187. draggable="false"
  188. >
  189. <HotspotComp
  190. class="hotspot"
  191. @click="router.push({
  192. name: 'BambooHot',
  193. })"
  194. />
  195. <div class="shuang-gou-she-se-group">
  196. <button
  197. class="watch-detail animation-show-long-hide"
  198. @click="onClickShuangGouEntry"
  199. >
  200. 查看详情
  201. </button>
  202. <div class="group-title">
  203. 双钩设色
  204. <img
  205. class="deco"
  206. src="@/assets/images/more-content-deco.png"
  207. alt=""
  208. draggable="false"
  209. >
  210. </div>
  211. </div>
  212. <img
  213. class="bamboo-1_02"
  214. src="@/assets/images/fade-chapter-wood/1_02.png"
  215. alt=""
  216. draggable="false"
  217. >
  218. <div class="mo-zhu-group">
  219. <div class="button-group">
  220. <button
  221. class="poem animation-show-long-hide"
  222. @click="onClickEntryAtMoZhu('PoemList')"
  223. >
  224. 人文
  225. </button>
  226. <button
  227. class="animation-show-long-hide"
  228. @click="onClickEntryAtMoZhu('PaintingList')"
  229. >
  230. 画作
  231. </button>
  232. <button
  233. class="animation-show-long-hide"
  234. @click="onClickEntryAtMoZhu('BambooBook')"
  235. >
  236. 竹谱
  237. </button>
  238. </div>
  239. <div class="group-title">
  240. 墨竹
  241. <img
  242. class="deco"
  243. src="@/assets/images/more-content-deco.png"
  244. alt=""
  245. draggable="false"
  246. >
  247. </div>
  248. </div>
  249. <img
  250. class="bamboo-1_03"
  251. src="@/assets/images/fade-chapter-wood/1_03.png"
  252. alt=""
  253. draggable="false"
  254. >
  255. <img
  256. class="bamboo-1_04"
  257. src="@/assets/images/fade-chapter-wood/1_04.png"
  258. alt=""
  259. draggable="false"
  260. >
  261. <div class="wei-ye-group">
  262. <img
  263. src="@/assets/images/wu-jing-cang.png"
  264. alt=""
  265. >
  266. <div
  267. class="game-box"
  268. @click="() => { isShowGamePage = true }"
  269. >
  270. 画作创作
  271. </div>
  272. <div
  273. class="online-box"
  274. @click="() => { isShowScenePage = true }"
  275. >
  276. 线上展厅
  277. </div>
  278. </div>
  279. <img
  280. class="bamboo-1_05"
  281. src="@/assets/images/fade-chapter-wood/1_05.png"
  282. alt=""
  283. draggable="false"
  284. >
  285. </div>
  286. </div>
  287. <PaginationComp
  288. class="pagination"
  289. :total="3"
  290. :idx="currentAnchorIdx"
  291. />
  292. <BtnBack
  293. @click="router.push({
  294. name: 'HomeView',
  295. })"
  296. />
  297. <OperationTip
  298. class="operation-tip"
  299. :direction="'h'"
  300. :text="'下一章'"
  301. :is-show="isShowOperationTip"
  302. :color="'green'"
  303. />
  304. <Transition name="fade-in">
  305. <video
  306. v-if="isShowVideoFadeAtShuangGou"
  307. ref="videoFadeAtShuangGouEl"
  308. class="fade-to-other-page"
  309. src="@/assets/videos/fade-at-shuang-gou.mp4"
  310. playsinline
  311. webkit-playsinline="true"
  312. x5-video-player-type="h5"
  313. @ended="router.push({
  314. name: 'ShuanggouDetail',
  315. })"
  316. />
  317. </Transition>
  318. <Transition name="fade-in">
  319. <video
  320. v-if="isShowVideoFadeAtMoZhu"
  321. ref="videoFadeAtMoZhuEl"
  322. class="fade-to-other-page"
  323. src="@/assets/videos/fade-at-mo-zhu.mp4"
  324. playsinline
  325. webkit-playsinline="true"
  326. x5-video-player-type="h5"
  327. />
  328. </Transition>
  329. <Transition name="fade-in">
  330. <video
  331. v-if="isShowVideoFadeAtPage3"
  332. ref="videoFadeAtPage3El"
  333. class="fade-to-other-page"
  334. src="@/assets/videos/fade-from-more-content-to-game.mp4"
  335. playsinline
  336. webkit-playsinline="true"
  337. x5-video-player-type="h5"
  338. />
  339. </Transition>
  340. <!-- 游戏页面 -->
  341. <div
  342. v-if="isShowGamePage"
  343. class="game-box"
  344. >
  345. <iframe
  346. class="game-box"
  347. :src="`./game/index.html`"
  348. />
  349. <!-- edit弹框 -->
  350. <div class="edit-box" />
  351. </div>
  352. <!-- 线上展厅 -->
  353. <div
  354. v-if="isShowScenePage"
  355. class="scene-box"
  356. >
  357. <BtnBack
  358. class="scene-back"
  359. @click="isShowScenePage = false"
  360. />
  361. <iframe
  362. src="https://www.4dkankan.com/spg.html?m=KJ-et2X3su4ofm"
  363. frameborder="0"
  364. />
  365. </div>
  366. </div>
  367. </template>
  368. <script setup>
  369. import { ref, computed, watch, onMounted, onBeforeUnmount, inject, nextTick } from "vue"
  370. import { useRoute, useRouter } from "vue-router"
  371. import { useStore } from "vuex"
  372. import PoemList from '@/views/PoemList.vue'
  373. import paintingList from '@/views/PaintingList.vue'
  374. import useSmoothSwipe from '@/useFunctions/useSmoothSwipe.js'
  375. import { useWindowSize } from '@vueuse/core'
  376. import OperationTip from "@/components/OperationTip.vue"
  377. import useSizeAdapt from "@/useFunctions/useSizeAdapt.js"
  378. import PaginationComp from "@/components/PaginationComp.vue"
  379. const route = useRoute()
  380. const router = useRouter()
  381. const store = useStore()
  382. const $env = inject('$env')
  383. const isShowGamePage = ref(false)
  384. const isShowScenePage = ref(false)
  385. onMounted(() => {
  386. window.closeGame = () => {
  387. isShowGamePage.value = false
  388. }
  389. })
  390. const {
  391. windowSizeInCssForRef,
  392. windowSizeWhenDesignForRef,
  393. } = useSizeAdapt()
  394. const windowWidthDesign = 1560
  395. const windowHeightDesign = 844
  396. const scrollTarget = ref(null)
  397. const { width: windowWidth, height: windowHeight } = useWindowSize()
  398. const maxTranslateLength = computed(() => {
  399. return windowHeight.value * windowWidthDesign / windowHeightDesign
  400. })
  401. const { onSwipeLeft, onswipeRight, haveSwipedThisTime, translateLength, currentAnchorIdx, goingToAnchorIdx } = useSmoothSwipe({
  402. scrollTargetRef: scrollTarget,
  403. maxTranslateLength,
  404. viewportWidth: windowWidth,
  405. anchorPosList: [
  406. maxTranslateLength.value * 216 / windowWidthDesign - windowWidth.value / 2,
  407. maxTranslateLength.value * 967 / windowWidthDesign - windowWidth.value / 2,
  408. maxTranslateLength.value * 1860 / windowWidthDesign - windowWidth.value / 2,
  409. // maxTranslateLength.value - windowWidth.value
  410. ],
  411. initialAnchorIdx: Number(route.query.anchorIdx) || 0
  412. })
  413. const bgInitialLeft = -30
  414. const bgLeft = ref(bgInitialLeft)
  415. const bgSpeedFactor = 0.8 * 0.8 * 0.8 * 0.8
  416. watch(translateLength, (v) => {
  417. bgLeft.value = bgInitialLeft - v * bgSpeedFactor
  418. }, {
  419. immediate: true,
  420. })
  421. const layer4SpeedFactor = 0.8 * 0.8 * 0.8
  422. const layer4InitialLeft = 0
  423. const layer4Left = ref(layer4InitialLeft)
  424. watch(translateLength, (v) => {
  425. layer4Left.value = layer4InitialLeft - v * layer4SpeedFactor
  426. }, {
  427. immediate: true,
  428. })
  429. const layer3SpeedFactor = 0.8 * 0.8
  430. const layer3InitialLeft = 0
  431. const layer3Left = ref(layer3InitialLeft)
  432. watch(translateLength, (v) => {
  433. layer3Left.value = layer3InitialLeft - v * layer3SpeedFactor
  434. }, {
  435. immediate: true,
  436. })
  437. const layer2SpeedFactor = 0.8
  438. const layer2InitialLeft = 0
  439. const layer2Left = ref(layer2InitialLeft)
  440. watch(translateLength, (v) => {
  441. layer2Left.value = layer2InitialLeft - v * layer2SpeedFactor
  442. }, {
  443. immediate: true,
  444. })
  445. const layer1InitialLeft = 0
  446. const layer1Left = ref(layer1InitialLeft)
  447. watch(translateLength, (v) => {
  448. layer1Left.value = layer1InitialLeft - v
  449. }, {
  450. immediate: true,
  451. })
  452. const isShowOperationTip = ref(true)
  453. const unwatch = watch(translateLength, (v) => {
  454. isShowOperationTip.value = false
  455. unwatch()
  456. // if (Math.abs(v - (scrollerEl.value.scrollHeight - scrollerEl.value.clientHeight)) <= 1) {
  457. // router.push({
  458. // name: 'MoreContent',
  459. // })
  460. // }
  461. })
  462. const videoFadeAtShuangGouEl = ref(null)
  463. const isShowVideoFadeAtShuangGou = ref(false)
  464. function onClickShuangGouEntry() {
  465. isShowVideoFadeAtShuangGou.value = true
  466. nextTick(() => {
  467. videoFadeAtShuangGouEl.value.play()
  468. })
  469. }
  470. const videoFadeAtMoZhuEl = ref(null)
  471. const isShowVideoFadeAtMoZhu = ref(false)
  472. function onClickEntryAtMoZhu(pathName) {
  473. isShowVideoFadeAtMoZhu.value = true
  474. nextTick(() => {
  475. videoFadeAtMoZhuEl.value.addEventListener('ended', () => {
  476. router.push({
  477. name: pathName,
  478. })
  479. })
  480. videoFadeAtMoZhuEl.value.play()
  481. })
  482. }
  483. const videoFadeAtPage3El = ref(null)
  484. const isShowVideoFadeAtPage3 = ref(false)
  485. // function onClickEntryAtMoZhu(pathName) {
  486. // isShowVideoFadeAtMoZhu.value = true
  487. // nextTick(() => {
  488. // videoFadeAtMoZhuEl.value.addEventListener('ended', () => {
  489. // router.push({
  490. // name: pathName,
  491. // })
  492. // })
  493. // videoFadeAtMoZhuEl.value.play()
  494. // })
  495. // }
  496. watch(goingToAnchorIdx, (v) => {
  497. if (v === 2) {
  498. // 跳转到尾页
  499. // setTimeout(() => {
  500. // isShowVideoFadeAtPage3.value = true
  501. // nextTick(() => {
  502. // videoFadeAtPage3El.value.addEventListener('ended', () => {
  503. // router.push({
  504. // name: 'Game',
  505. // })
  506. // })
  507. // videoFadeAtPage3El.value.play()
  508. // })
  509. // }, 850)
  510. }
  511. })
  512. </script>
  513. <style lang="less" scoped>
  514. .button-common-style {
  515. font-family: KaiTi, KaiTi;
  516. font-weight: 400;
  517. font-size: calc(16px * v-bind('windowHeight') / v-bind('windowHeightDesign'));
  518. writing-mode: vertical-lr;
  519. letter-spacing: 0.2em;
  520. white-space: pre;
  521. color: #B8AE7A;
  522. }
  523. .group-title-common-style {
  524. font-family: KingHwa_OldSong, KingHwa_OldSong;
  525. font-weight: 400;
  526. font-size: calc(48px * v-bind('windowHeight') / v-bind('windowHeightDesign'));
  527. color: #474747;
  528. writing-mode: vertical-lr;
  529. letter-spacing: 0.2em;
  530. white-space: pre;
  531. }
  532. .more-content {
  533. position: absolute;
  534. left: 0;
  535. top: 0;
  536. width: 100%;
  537. height: 100%;
  538. user-select: none;
  539. >.scroll-target {
  540. height: 100%;
  541. width: 100%;
  542. display: flex;
  543. gap: 100px;
  544. overflow: hidden;
  545. >img.bg {
  546. position: absolute;
  547. height: 100%;
  548. }
  549. >.layer-4 {
  550. position: absolute;
  551. height: 100%;
  552. >.bamboo-4_01 {
  553. position: absolute;
  554. left: calc(0 * v-bind('layer4SpeedFactor') * v-bind('windowHeight') / v-bind('windowHeightDesign'));
  555. bottom: 0;
  556. height: calc(300px * v-bind('windowHeight') / v-bind('windowHeightDesign'));
  557. }
  558. >.bamboo-4_02 {
  559. position: absolute;
  560. bottom: 0;
  561. left: calc(120px * v-bind('windowHeight') / v-bind('windowHeightDesign'));
  562. height: calc(380px * v-bind('windowHeight') / v-bind('windowHeightDesign'));
  563. }
  564. >.bamboo-4_03 {
  565. position: absolute;
  566. bottom: 0;
  567. left: calc(880px * v-bind('layer4SpeedFactor') * v-bind('windowHeight') / v-bind('windowHeightDesign'));
  568. height: calc(518px * v-bind('windowHeight') / v-bind('windowHeightDesign'));
  569. }
  570. >.bamboo-4_04 {
  571. position: absolute;
  572. bottom: 0;
  573. left: calc(870px * v-bind('windowHeight') / v-bind('windowHeightDesign'));
  574. height: 100%;
  575. }
  576. >.bamboo-4_05 {
  577. position: absolute;
  578. bottom: 0;
  579. left: calc(450px * v-bind('layer4SpeedFactor') * v-bind('windowHeight') / v-bind('windowHeightDesign'));
  580. height: 100%;
  581. }
  582. >.bamboo-4_06 {
  583. position: absolute;
  584. bottom: 0;
  585. left: calc(520px * v-bind('layer4SpeedFactor') * v-bind('windowHeight') / v-bind('windowHeightDesign'));
  586. height: 100%;
  587. }
  588. >.bamboo-4_07 {
  589. position: absolute;
  590. bottom: 0;
  591. left: calc(1000px * v-bind('layer4SpeedFactor') * v-bind('windowHeight') / v-bind('windowHeightDesign'));
  592. height: 100%;
  593. }
  594. >.bamboo-4_08 {
  595. position: absolute;
  596. bottom: 0;
  597. height: calc(380px * v-bind('windowHeight') / v-bind('windowHeightDesign'));
  598. left: calc(1553px * v-bind('layer4SpeedFactor') * v-bind('windowHeight') / v-bind('windowHeightDesign'));
  599. }
  600. >.bamboo-4_09 {
  601. position: absolute;
  602. bottom: 0;
  603. left: calc(1345px * v-bind('layer4SpeedFactor') * v-bind('windowHeight') / v-bind('windowHeightDesign'));
  604. height: 100%;
  605. }
  606. >.bamboo-4_10 {
  607. position: absolute;
  608. bottom: 0;
  609. left: calc(1403px * v-bind('layer4SpeedFactor') * v-bind('windowHeight') / v-bind('windowHeightDesign'));
  610. height: 100%;
  611. }
  612. >.bamboo-4_11 {
  613. position: absolute;
  614. bottom: 0;
  615. left: calc(1403px * v-bind('layer4SpeedFactor') * v-bind('windowHeight') / v-bind('windowHeightDesign'));
  616. height: 100%;
  617. }
  618. >.bamboo-4_12 {
  619. position: absolute;
  620. bottom: 0;
  621. left: calc(1403px * v-bind('layer4SpeedFactor') * v-bind('windowHeight') / v-bind('windowHeightDesign'));
  622. height: 100%;
  623. }
  624. }
  625. >.layer-3 {
  626. position: absolute;
  627. height: 100%;
  628. >.bamboo-3_01 {
  629. position: absolute;
  630. top: 0;
  631. height: 100%;
  632. left: calc(393px * v-bind('layer3SpeedFactor') * v-bind('windowHeight') / v-bind('windowHeightDesign'));
  633. }
  634. >.bamboo-3_02 {
  635. position: absolute;
  636. top: 0;
  637. height: 100%;
  638. left: calc(880px * v-bind('windowHeight') / v-bind('windowHeightDesign'));
  639. }
  640. >.bamboo-3_03 {
  641. position: absolute;
  642. top: 0;
  643. height: 100%;
  644. left: calc(1290px * v-bind('windowHeight') / v-bind('windowHeightDesign'));
  645. }
  646. >.bamboo-3_04 {
  647. position: absolute;
  648. top: 0;
  649. height: 100%;
  650. left: calc(867px * v-bind('windowHeight') / v-bind('windowHeightDesign'));
  651. }
  652. }
  653. >.layer-2 {
  654. position: absolute;
  655. height: 100%;
  656. >.bamboo-2_01 {
  657. position: absolute;
  658. top: 0;
  659. height: 100%;
  660. left: calc(0px * v-bind('layer2SpeedFactor') * v-bind('windowHeight') / v-bind('windowHeightDesign'));
  661. }
  662. >.bamboo-2_03 {
  663. position: absolute;
  664. top: 0;
  665. height: 100%;
  666. left: calc(420px * v-bind('layer2SpeedFactor') * v-bind('windowHeight') / v-bind('windowHeightDesign'));
  667. }
  668. >.bamboo-2_02 {
  669. position: absolute;
  670. top: 0;
  671. height: 100%;
  672. left: calc(920px * v-bind('layer2SpeedFactor') * v-bind('windowHeight') / v-bind('windowHeightDesign'));
  673. }
  674. // >.bamboo-2_03{
  675. // position: absolute;
  676. // top: 0;
  677. // height: 100%;
  678. // left: calc(920px * v-bind('layer2SpeedFactor') * v-bind('windowHeight') / v-bind('windowHeightDesign'));
  679. // }
  680. >.bamboo-2_04 {
  681. position: absolute;
  682. top: 0;
  683. height: 100%;
  684. left: calc(1281px * v-bind('layer2SpeedFactor') * v-bind('windowHeight') / v-bind('windowHeightDesign'));
  685. }
  686. >.bamboo-2_04-1 {
  687. position: absolute;
  688. top: 0;
  689. height: 100%;
  690. left: calc(1863px * v-bind('layer2SpeedFactor') * v-bind('windowHeight') / v-bind('windowHeightDesign'));
  691. }
  692. >.bamboo-2_05 {
  693. position: absolute;
  694. top: 0;
  695. height: 100%;
  696. left: calc(997px * v-bind('windowHeight') / v-bind('windowHeightDesign'));
  697. }
  698. }
  699. >.layer-1 {
  700. position: absolute;
  701. height: 100%;
  702. >.bamboo-1_01 {
  703. position: absolute;
  704. top: 0;
  705. height: 100%;
  706. left: 0;
  707. }
  708. >.hotspot {
  709. position: absolute;
  710. top: calc(385px * v-bind('windowHeight') / v-bind('windowHeightDesign'));
  711. left: calc(71px * v-bind('windowHeight') / v-bind('windowHeightDesign'));
  712. }
  713. >.shuang-gou-she-se-group {
  714. position: absolute;
  715. top: calc(245px * v-bind('windowHeight') / v-bind('windowHeightDesign'));
  716. left: calc(216px * v-bind('windowHeight') / v-bind('windowHeightDesign'));
  717. >button.watch-detail {
  718. position: absolute;
  719. top: calc(182px * v-bind('windowHeight') / v-bind('windowHeightDesign'));
  720. left: 0;
  721. background-image: url(@/assets/images/fade-chapter-btn-bg-big.png);
  722. background-size: contain;
  723. background-repeat: no-repeat;
  724. background-position: center center;
  725. padding-top: calc(3px / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  726. .button-common-style();
  727. }
  728. >div.group-title {
  729. position: absolute;
  730. top: 0;
  731. left: calc(41px * v-bind('windowHeight') / v-bind('windowHeightDesign'));
  732. ;
  733. .group-title-common-style();
  734. >img.deco {
  735. position: absolute;
  736. bottom: 0.9em;
  737. right: -0.05em;
  738. width: calc(16 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  739. height: calc(16 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  740. }
  741. }
  742. }
  743. >.bamboo-1_02 {
  744. position: absolute;
  745. top: 0;
  746. height: 100%;
  747. left: calc(352px * v-bind('windowHeight') / v-bind('windowHeightDesign'));
  748. }
  749. >.mo-zhu-group {
  750. position: absolute;
  751. top: calc(245px * v-bind('windowHeight') / v-bind('windowHeightDesign'));
  752. left: calc(936px * v-bind('windowHeight') / v-bind('windowHeightDesign'));
  753. >.button-group {
  754. position: absolute;
  755. top: calc(75px * v-bind('windowHeight') / v-bind('windowHeightDesign'));
  756. left: 0;
  757. display: flex;
  758. flex-direction: column;
  759. gap: calc(20 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  760. >button {
  761. .button-common-style();
  762. background-image: url(@/assets/images/fade-chapter-btn-bg-small.png);
  763. background-size: contain;
  764. background-repeat: no-repeat;
  765. background-position: center center;
  766. padding-top: calc(3px / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  767. }
  768. }
  769. >div.group-title {
  770. position: absolute;
  771. top: 0;
  772. left: calc(41px * v-bind('windowHeight') / v-bind('windowHeightDesign'));
  773. ;
  774. .group-title-common-style();
  775. >img.deco {
  776. position: absolute;
  777. bottom: 0.9em;
  778. right: 0.1em;
  779. width: calc(16 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  780. height: calc(16 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  781. }
  782. }
  783. }
  784. >.wei-ye-group {
  785. position: absolute;
  786. top: calc(170px * v-bind('windowHeight') / v-bind('windowHeightDesign'));
  787. left: calc(1776px * v-bind('windowHeight') / v-bind('windowHeightDesign'));
  788. font-family: 'KingHwa_OldSong';
  789. color: white;
  790. z-index: 2;
  791. width: calc(200 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  792. // background: green;
  793. >.game-box {
  794. width: calc(200 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  795. background: url(@/assets/images/game-bg.png);
  796. background-size: 100% 100%;
  797. padding: calc(70 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  798. white-space: nowrap;
  799. display: flex;
  800. justify-content: center;
  801. align-items: center;
  802. margin-top: calc(-10 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  803. margin-left: calc(-60 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  804. font-size: calc(20 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  805. }
  806. >.online-box {
  807. width: calc(200 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  808. background: url(@/assets/images/online-scene-bg.png);
  809. background-size: 100% 100%;
  810. padding: calc(70 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  811. white-space: nowrap;
  812. display: flex;
  813. justify-content: center;
  814. align-items: center;
  815. margin-top: calc(-10 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  816. margin-left: calc(40 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  817. font-size: calc(20 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  818. }
  819. }
  820. >.bamboo-1_03 {
  821. position: absolute;
  822. top: 0;
  823. height: 100%;
  824. left: calc(960px * v-bind('windowHeight') / v-bind('windowHeightDesign'));
  825. }
  826. >.bamboo-1_04 {
  827. position: absolute;
  828. top: 0;
  829. height: 100%;
  830. left: calc(1336px * v-bind('windowHeight') / v-bind('windowHeightDesign'));
  831. }
  832. >.bamboo-1_05 {
  833. position: absolute;
  834. top: 0;
  835. height: 100%;
  836. left: calc(1891px * v-bind('windowHeight') / v-bind('windowHeightDesign'));
  837. }
  838. }
  839. }
  840. >.pagination {
  841. position: absolute;
  842. left: 50%;
  843. transform: translateX(-50%);
  844. bottom: calc(22 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  845. }
  846. >.operation-tip {
  847. position: absolute;
  848. right: calc(44 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  849. bottom: calc(74 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  850. }
  851. >.fade-to-other-page {
  852. position: absolute;
  853. left: 0;
  854. top: 0;
  855. width: 100%;
  856. height: 100%;
  857. object-fit: cover;
  858. object-position: top;
  859. }
  860. >.game-box {
  861. width: 100%;
  862. height: 100%;
  863. position: fixed;
  864. top: 0;
  865. left: 0;
  866. z-index: 100;
  867. >iframe {
  868. width: 100%;
  869. height: 100%;
  870. position: absolute;
  871. top: 0;
  872. left: 0;
  873. }
  874. }
  875. >.scene-box {
  876. width: 100%;
  877. height: 100%;
  878. position: fixed;
  879. position: fixed;
  880. top: 0;
  881. left: 0;
  882. z-index: 100;
  883. >.scene-back {
  884. position: absolute;
  885. left: 20px;
  886. top: 25px;
  887. transform: scale(1.2);
  888. z-index: 2;
  889. }
  890. >iframe {
  891. width: 100%;
  892. height: 100%;
  893. position: absolute;
  894. top: 0;
  895. left: 0;
  896. }
  897. }
  898. }
  899. </style>