MoreContent.vue 37 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471
  1. <template>
  2. <div
  3. v-if="isReady"
  4. class="more-content"
  5. >
  6. <div
  7. ref="scrollTarget"
  8. v-touch:swipe.left="onSwipeLeft"
  9. v-touch:swipe.right="onswipeRight"
  10. class="scroll-target"
  11. >
  12. <img
  13. class="bg"
  14. :style="{
  15. left: bgLeft + 'px',
  16. }"
  17. src="@/assets/images/fade-chapter-wood/bg-more-content.jpg"
  18. alt=""
  19. draggable="false"
  20. >
  21. <div
  22. class="layer-4"
  23. :style="{
  24. left: layer4Left + 'px',
  25. }"
  26. >
  27. <img
  28. class="bamboo-4_01"
  29. src="@/assets/images/fade-chapter-wood/4_01.webp"
  30. alt=""
  31. draggable="false"
  32. >
  33. <img
  34. class="bamboo-4_02"
  35. src="@/assets/images/fade-chapter-wood/4_02.webp"
  36. alt=""
  37. draggable="false"
  38. >
  39. <!-- <img
  40. class="bamboo-4_03"
  41. src="@/assets/images/fade-chapter-wood/4_03.webp"
  42. alt=""
  43. draggable="false"
  44. > -->
  45. <!-- <img
  46. class="bamboo-4_04"
  47. src="@/assets/images/fade-chapter-wood/4_04.webp"
  48. alt=""
  49. draggable="false"
  50. > -->
  51. <img
  52. class="bamboo-4_05"
  53. src="@/assets/images/fade-chapter-wood/4_05.webp"
  54. alt=""
  55. draggable="false"
  56. >
  57. <img
  58. class="bamboo-4_06"
  59. src="@/assets/images/fade-chapter-wood/4_06.webp"
  60. alt=""
  61. draggable="false"
  62. >
  63. <img
  64. class="bamboo-4_07"
  65. src="@/assets/images/fade-chapter-wood/4_07.webp"
  66. alt=""
  67. draggable="false"
  68. >
  69. <img
  70. class="bamboo-4_08"
  71. src="@/assets/images/fade-chapter-wood/4_08.webp"
  72. alt=""
  73. draggable="false"
  74. >
  75. <img
  76. class="bamboo-4_09"
  77. src="@/assets/images/fade-chapter-wood/4_09.webp"
  78. alt=""
  79. draggable="false"
  80. >
  81. <img
  82. class="bamboo-4_10"
  83. src="@/assets/images/fade-chapter-wood/4_10.webp"
  84. alt=""
  85. draggable="false"
  86. >
  87. <img
  88. class="bamboo-4_11"
  89. src="@/assets/images/fade-chapter-wood/4_11.webp"
  90. alt=""
  91. draggable="false"
  92. >
  93. <img
  94. class="bamboo-4_12"
  95. src="@/assets/images/fade-chapter-wood/4_12.webp"
  96. alt=""
  97. draggable="false"
  98. >
  99. </div>
  100. <div
  101. class="layer-3"
  102. :style="{
  103. left: layer3Left + 'px',
  104. }"
  105. >
  106. <img
  107. class="bamboo-3_01"
  108. src="@/assets/images/fade-chapter-wood/3_01.webp"
  109. alt=""
  110. draggable="false"
  111. >
  112. <img
  113. class="bamboo-3_02"
  114. src="@/assets/images/fade-chapter-wood/3_02.webp"
  115. alt=""
  116. draggable="false"
  117. >
  118. <img
  119. class="bamboo-3_03"
  120. src="@/assets/images/fade-chapter-wood/3_03.webp"
  121. alt=""
  122. draggable="false"
  123. >
  124. <img
  125. class="bamboo-3_04"
  126. src="@/assets/images/fade-chapter-wood/3_04.webp"
  127. alt=""
  128. draggable="false"
  129. >
  130. </div>
  131. <div
  132. class="layer-2"
  133. :style="{
  134. left: layer2Left + 'px',
  135. }"
  136. >
  137. <img
  138. class="bamboo-2_01"
  139. src="@/assets/images/fade-chapter-wood/2_01.webp"
  140. alt=""
  141. draggable="false"
  142. >
  143. <img
  144. class="bamboo-2_03"
  145. src="@/assets/images/fade-chapter-wood/2_03.webp"
  146. alt=""
  147. draggable="false"
  148. >
  149. <img
  150. class="bamboo-2_02"
  151. src="@/assets/images/fade-chapter-wood/2_02.webp"
  152. alt=""
  153. draggable="false"
  154. >
  155. <!-- <img
  156. class="bamboo-2_03"
  157. src="@/assets/images/fade-chapter-wood/2_03.png"
  158. alt=""
  159. draggable="false"
  160. > -->
  161. <img
  162. class="bamboo-2_04"
  163. src="@/assets/images/fade-chapter-wood/2_04.webp"
  164. alt=""
  165. draggable="false"
  166. >
  167. <img
  168. class="bamboo-2_04-1"
  169. src="@/assets/images/fade-chapter-wood/2_04-1.webp"
  170. alt=""
  171. draggable="false"
  172. >
  173. <img
  174. class="bamboo-2_05"
  175. src="@/assets/images/fade-chapter-wood/2_05.webp"
  176. alt=""
  177. draggable="false"
  178. >
  179. </div>
  180. <div
  181. class="layer-1"
  182. :style="{
  183. left: layer1Left + 'px',
  184. }"
  185. >
  186. <img
  187. class="bamboo-1_01"
  188. src="@/assets/images/fade-chapter-wood/1_01.webp"
  189. alt=""
  190. draggable="false"
  191. >
  192. <HotspotComp
  193. class="hotspot"
  194. @click="
  195. router.push({
  196. name: 'BambooHot',
  197. })
  198. "
  199. />
  200. <div class="shuang-gou-she-se-group">
  201. <div
  202. class="watch-detail animation-show-long-hide"
  203. @click="onClickShuangGouEntry"
  204. >
  205. 查看详情
  206. </div>
  207. <div class="group-title">
  208. 双钩设色
  209. <img
  210. class="deco"
  211. src="@/assets/images/more-content-deco.png"
  212. alt=""
  213. draggable="false"
  214. >
  215. </div>
  216. </div>
  217. <img
  218. class="bamboo-1_02"
  219. src="@/assets/images/fade-chapter-wood/1_02.webp"
  220. alt=""
  221. draggable="false"
  222. >
  223. <div class="mo-zhu-group">
  224. <div class="button-group">
  225. <div
  226. class="poem animation-show-long-hide"
  227. @click="onClickEntryAtMoZhu('PoemList')"
  228. >
  229. 人文
  230. </div>
  231. <div
  232. class="animation-show-long-hide"
  233. @click="onClickEntryAtMoZhu('PaintingList')"
  234. >
  235. 画作
  236. </div>
  237. <div
  238. class="animation-show-long-hide"
  239. @click="onClickEntryAtMoZhu('BambooBook')"
  240. >
  241. 竹谱
  242. </div>
  243. </div>
  244. <div class="group-title">
  245. 墨竹
  246. <img
  247. class="deco"
  248. src="@/assets/images/more-content-deco.png"
  249. alt=""
  250. draggable="false"
  251. >
  252. </div>
  253. </div>
  254. <img
  255. class="bamboo-1_03"
  256. src="@/assets/images/fade-chapter-wood/1_03.webp"
  257. alt=""
  258. draggable="false"
  259. >
  260. <img
  261. class="bamboo-1_04"
  262. src="@/assets/images/fade-chapter-wood/1_04.webp"
  263. alt=""
  264. draggable="false"
  265. >
  266. <div class="wei-ye-group">
  267. <img
  268. src="@/assets/images/wu-jing-cang.png"
  269. alt=""
  270. >
  271. <div
  272. class="game-box"
  273. @click="
  274. () => {
  275. isShowGamePage = true;
  276. }
  277. "
  278. >
  279. 画作创作
  280. </div>
  281. <div
  282. class="online-box"
  283. @click="
  284. () => {
  285. isShowScenePage = true;
  286. }
  287. "
  288. >
  289. 线上展厅
  290. </div>
  291. </div>
  292. <img
  293. class="bamboo-1_05"
  294. src="@/assets/images/fade-chapter-wood/1_05.webp"
  295. alt=""
  296. draggable="false"
  297. >
  298. </div>
  299. </div>
  300. <PaginationComp
  301. class="pagination"
  302. :total="3"
  303. :idx="currentAnchorIdx"
  304. />
  305. <BtnBack
  306. @click="
  307. router.push({
  308. name: 'HomeView',
  309. })
  310. "
  311. />
  312. <OperationTip
  313. class="operation-tip"
  314. :direction="'h'"
  315. :text="'下一章'"
  316. :is-show="isShowOperationTip"
  317. :color="'green'"
  318. />
  319. <Transition name="fade-in">
  320. <video
  321. v-if="isShowVideoFadeAtShuangGou"
  322. ref="videoFadeAtShuangGouEl"
  323. class="fade-to-other-page"
  324. src="@/assets/videos/fade-at-shuang-gou.mp4"
  325. playsinline
  326. webkit-playsinline="true"
  327. x5-video-player-type="h5"
  328. muted
  329. @ended="
  330. router.push({
  331. name: 'ShuanggouDetail',
  332. })
  333. "
  334. />
  335. </Transition>
  336. <Transition name="fade-in">
  337. <div
  338. v-if="isShowVideoFadeAtMoZhu"
  339. :class="`RWbox`"
  340. >
  341. <video
  342. ref="videoFadeAtMoZhuEl"
  343. class="fade-to-other-page"
  344. src="@/assets/videos/fade-at-mo-zhu.mp4"
  345. playsinline
  346. muted
  347. webkit-playsinline="true"
  348. x5-video-player-type="h5"
  349. />
  350. <img
  351. class="RWvideoTxt"
  352. src="@/assets/images/RW/titile_mozhu-min.png"
  353. alt=""
  354. >
  355. </div>
  356. </Transition>
  357. <Transition name="fade-in">
  358. <video
  359. v-if="isShowVideoFadeAtPage3"
  360. ref="videoFadeAtPage3El"
  361. class="fade-to-other-page"
  362. src="@/assets/videos/fade-from-more-content-to-game.mp4"
  363. playsinline
  364. muted
  365. webkit-playsinline="true"
  366. x5-video-player-type="h5"
  367. />
  368. </Transition>
  369. <!-- 游戏页面 -->
  370. <div
  371. v-if="isShowGamePage"
  372. class="game-box"
  373. >
  374. <iframe
  375. id="gameIframe"
  376. :src="`./game/index.html`"
  377. />
  378. <!-- edit弹框 -->
  379. <div
  380. v-if="isShowToastFromGame"
  381. class="edit-box"
  382. >
  383. <!-- <input :v-model="inputValue"> -->
  384. <!-- <div class="text" >{{ inputValue }}</div>
  385. <div class="text">{{ }}</div> -->
  386. <!-- <textarea
  387. v-model="inputText"
  388. rows="2"
  389. maxlength="15"
  390. @input="onInput"
  391. /> -->
  392. <div class="input-box">
  393. <input
  394. ref="input1Ref"
  395. v-model="input1"
  396. @input="handleInput1"
  397. @keyup="checkInput1"
  398. >
  399. <input
  400. ref="input2Ref"
  401. v-model="input2"
  402. :readonly="input1.length < 7"
  403. @input="handleInput2"
  404. @keyup="checkInput2"
  405. >
  406. <div class="tips">
  407. 请输入内容
  408. </div>
  409. </div>
  410. <div
  411. class="cencel-btn"
  412. @click="isShowToastFromGame = false"
  413. >
  414. 取消
  415. </div>
  416. <div
  417. class="yes-btn"
  418. @click="saveTitle"
  419. >
  420. 保存
  421. </div>
  422. </div>
  423. </div>
  424. <!-- 线上展厅 -->
  425. <div
  426. v-if="isShowScenePage"
  427. class="scene-box"
  428. >
  429. <BtnBack
  430. class="scene-back"
  431. @click="isShowScenePage = false"
  432. />
  433. <iframe
  434. src="https://www.4dkankan.com/spg.html?m=KJ-et2X3su4ofm"
  435. frameborder="0"
  436. />
  437. </div>
  438. </div>
  439. </template>
  440. <script setup>
  441. import {
  442. ref,
  443. computed,
  444. watch,
  445. onMounted,
  446. onBeforeMount,
  447. inject,
  448. nextTick,
  449. } from "vue"
  450. import { useRoute, useRouter } from "vue-router"
  451. import { useStore } from "vuex"
  452. import PoemList from "@/views/PoemList.vue"
  453. import paintingList from "@/views/PaintingList.vue"
  454. import useSmoothSwipe from "@/useFunctions/useSmoothSwipe.js"
  455. import { useWindowSize } from "@vueuse/core"
  456. import OperationTip from "@/components/OperationTip.vue"
  457. import useSizeAdapt from "@/useFunctions/useSizeAdapt.js"
  458. import PaginationComp from "@/components/PaginationComp.vue"
  459. const route = useRoute()
  460. const router = useRouter()
  461. const store = useStore()
  462. const $env = inject("$env")
  463. const isShowGamePage = ref(false)
  464. const isShowScenePage = ref(false)
  465. const isShowToastFromGame = ref(false)
  466. const input1 = ref("")
  467. const input2 = ref("")
  468. const input1Ref = ref(null)
  469. const input2Ref = ref(null)
  470. const handleInput1 = () => {
  471. console.log("第一个框得内容", input1.value)
  472. if (input1.value.length >= 7) {
  473. input1.value = input1.value.slice(0, 7) // 限制输入长度
  474. input2Ref.value.focus() // 聚焦到第二个输入框
  475. }
  476. }
  477. const checkInput1 = (event) => {
  478. if (event.key === "Backspace" && input1.value.length === 0) {
  479. input2.value = "" // 清空第二个输入框
  480. input1Ref.value.focus() // 聚焦回到第一个输入框
  481. }
  482. }
  483. const handleInput2 = () => {
  484. // 这里可以添加类似的逻辑,但通常不需要,因为我们假设第二个输入框不会自动跳转回去
  485. if (input2.value.length >= 7) {
  486. input2.value = input2.value.slice(0, 7)
  487. }
  488. }
  489. const checkInput2 = (event) => {
  490. if (event.key === "Backspace" && input2.value.length === 0) {
  491. input1Ref.value.focus() // 如果需要从第二个输入框清空后聚焦回第一个输入框
  492. }
  493. }
  494. const saveTitle = () => {
  495. var iframe = document.getElementById("gameIframe")
  496. var iframeWindow = iframe.contentWindow || window.frames["yourIframeId"]
  497. if (iframeWindow) {
  498. iframeWindow.saveTitle(
  499. input1.value.length >= 7
  500. ? input1.value + "\n" + input2.value
  501. : input1.value
  502. )
  503. isShowToastFromGame.value = false
  504. }
  505. }
  506. const { windowSizeInCssForRef, windowSizeWhenDesignForRef } = useSizeAdapt()
  507. const windowWidthDesign = 1560
  508. const windowHeightDesign = 844
  509. const scrollTarget = ref(null)
  510. const { width: windowWidth, height: windowHeight } = useWindowSize()
  511. const maxTranslateLength = computed(() => {
  512. return (windowHeight.value * windowWidthDesign) / windowHeightDesign
  513. })
  514. const positionNumInit = computed(() => {
  515. console.log('x=', windowWidth.value / windowHeight.value)
  516. return windowWidth.value / windowHeight.value >= 0.5 ? 236 : 206
  517. })
  518. const {
  519. onSwipeLeft,
  520. onswipeRight,
  521. haveSwipedThisTime,
  522. translateLength,
  523. currentAnchorIdx,
  524. goingToAnchorIdx,
  525. } = useSmoothSwipe({
  526. scrollTargetRef: scrollTarget,
  527. maxTranslateLength,
  528. viewportWidth: windowWidth,
  529. anchorPosList: [
  530. (maxTranslateLength.value * positionNumInit.value) / windowWidthDesign -
  531. windowWidth.value / 2,
  532. (maxTranslateLength.value * 967) / windowWidthDesign -
  533. windowWidth.value / 2,
  534. (maxTranslateLength.value * 1840) / windowWidthDesign -
  535. windowWidth.value / 2,
  536. // maxTranslateLength.value - windowWidth.value
  537. ],
  538. initialAnchorIdx: Number(route.query.anchorIdx) || 0,
  539. })
  540. const bgInitialLeft = -30
  541. const bgLeft = ref(bgInitialLeft)
  542. const bgSpeedFactor = 0.8 * 0.8 * 0.8 * 0.8
  543. watch(
  544. translateLength,
  545. (v) => {
  546. bgLeft.value = bgInitialLeft - v * bgSpeedFactor
  547. },
  548. {
  549. immediate: true,
  550. }
  551. )
  552. const layer4SpeedFactor = 0.8 * 0.8 * 0.8
  553. const layer4InitialLeft = 0
  554. const layer4Left = ref(layer4InitialLeft)
  555. watch(
  556. translateLength,
  557. (v) => {
  558. layer4Left.value = layer4InitialLeft - v * layer4SpeedFactor
  559. },
  560. {
  561. immediate: true,
  562. }
  563. )
  564. const layer3SpeedFactor = 0.8 * 0.8
  565. const layer3InitialLeft = 0
  566. const layer3Left = ref(layer3InitialLeft)
  567. watch(
  568. translateLength,
  569. (v) => {
  570. layer3Left.value = layer3InitialLeft - v * layer3SpeedFactor
  571. },
  572. {
  573. immediate: true,
  574. }
  575. )
  576. const layer2SpeedFactor = 0.8
  577. const layer2InitialLeft = 0
  578. const layer2Left = ref(layer2InitialLeft)
  579. watch(
  580. translateLength,
  581. (v) => {
  582. layer2Left.value = layer2InitialLeft - v * layer2SpeedFactor
  583. },
  584. {
  585. immediate: true,
  586. }
  587. )
  588. const layer1InitialLeft = 0
  589. const layer1Left = ref(layer1InitialLeft)
  590. watch(
  591. translateLength,
  592. (v) => {
  593. layer1Left.value = layer1InitialLeft - v
  594. },
  595. {
  596. immediate: true,
  597. }
  598. )
  599. const isShowOperationTip = ref(true)
  600. const unwatch = watch(translateLength, (v) => {
  601. isShowOperationTip.value = false
  602. unwatch()
  603. // if (Math.abs(v - (scrollerEl.value.scrollHeight - scrollerEl.value.clientHeight)) <= 1) {
  604. // router.push({
  605. // name: 'MoreContent',
  606. // })
  607. // }
  608. })
  609. const videoFadeAtShuangGouEl = ref(null)
  610. const isShowVideoFadeAtShuangGou = ref(false)
  611. function onClickShuangGouEntry() {
  612. isShowVideoFadeAtShuangGou.value = true
  613. nextTick(() => {
  614. videoFadeAtShuangGouEl.value.play()
  615. })
  616. }
  617. const videoFadeAtMoZhuEl = ref(null)
  618. const isShowVideoFadeAtMoZhu = ref(false)
  619. function onClickEntryAtMoZhu(pathName) {
  620. isShowVideoFadeAtMoZhu.value = true
  621. nextTick(() => {
  622. videoFadeAtMoZhuEl.value.addEventListener('ended', () => {
  623. router.push({
  624. name: pathName,
  625. })
  626. })
  627. videoFadeAtMoZhuEl.value.play()
  628. })
  629. }
  630. const videoFadeAtPage3El = ref(null)
  631. const isShowVideoFadeAtPage3 = ref(false)
  632. watch(goingToAnchorIdx, (v) => {
  633. if (v === 2) {
  634. // 跳转到尾页
  635. // setTimeout(() => {
  636. // isShowVideoFadeAtPage3.value = true
  637. // nextTick(() => {
  638. // videoFadeAtPage3El.value.addEventListener('ended', () => {
  639. // router.push({
  640. // name: 'Game',
  641. // })
  642. // })
  643. // videoFadeAtPage3El.value.play()
  644. // })
  645. // }, 850)
  646. }
  647. })
  648. const isReady = ref(false)
  649. onBeforeMount(() => {
  650. window.addEventListener("resize", () => {
  651. window.setTimeout(() => {
  652. // 根元素
  653. const dom = document.querySelector("#app")
  654. if (dom && document.documentElement.clientWidth < 1000) {
  655. windowWidth.value = document.documentElement.clientWidth
  656. windowHeight.value = document.documentElement.clientHeight
  657. }
  658. }, 100)
  659. })
  660. setTimeout(() => {
  661. isReady.value = true
  662. }, 500)
  663. })
  664. onMounted(() => {
  665. window.dispatchEvent(new Event("resize"))
  666. const dom = document.querySelector("#app")
  667. windowWidth.value = window.windowWidth
  668. windowHeight.value = window.windowHeight
  669. window.closeGame = () => {
  670. isShowGamePage.value = false
  671. }
  672. window.isShowToastFromGame = () => {
  673. isShowToastFromGame.value = true
  674. input1.value = ""
  675. input2.value = ""
  676. }
  677. })
  678. </script>
  679. <style lang="less" scoped>
  680. .button-common-style {
  681. font-family: KaiTi, KaiTi;
  682. font-weight: 400;
  683. font-size: calc(16px * v-bind("windowHeight") / v-bind("windowHeightDesign"));
  684. writing-mode: vertical-lr;
  685. letter-spacing: 0.2em;
  686. white-space: pre;
  687. color: #b8ae7a;
  688. }
  689. .group-title-common-style {
  690. font-family: KingHwa_OldSong, KingHwa_OldSong;
  691. font-weight: 400;
  692. font-size: calc(48px * v-bind("windowHeight") / v-bind("windowHeightDesign"));
  693. color: #474747;
  694. writing-mode: vertical-lr;
  695. letter-spacing: 0.2em;
  696. white-space: pre;
  697. }
  698. .more-content {
  699. position: absolute;
  700. left: 0;
  701. top: 0;
  702. width: 100%;
  703. height: 100%;
  704. user-select: none;
  705. > .scroll-target {
  706. height: 100%;
  707. width: 100%;
  708. display: flex;
  709. gap: 100px;
  710. overflow: hidden;
  711. > img.bg {
  712. position: absolute;
  713. height: 100%;
  714. }
  715. > .layer-4 {
  716. position: absolute;
  717. height: 100%;
  718. > .bamboo-4_01 {
  719. position: absolute;
  720. left: calc(
  721. 0 * v-bind("layer4SpeedFactor") * v-bind("windowHeight") /
  722. v-bind("windowHeightDesign")
  723. );
  724. bottom: 0;
  725. height: calc(
  726. 300px * v-bind("windowHeight") / v-bind("windowHeightDesign")
  727. );
  728. }
  729. > .bamboo-4_02 {
  730. position: absolute;
  731. bottom: 0;
  732. left: calc(
  733. 120px * v-bind("windowHeight") / v-bind("windowHeightDesign")
  734. );
  735. height: calc(
  736. 380px * v-bind("windowHeight") / v-bind("windowHeightDesign")
  737. );
  738. }
  739. > .bamboo-4_03 {
  740. position: absolute;
  741. bottom: 0;
  742. left: calc(
  743. 880px * v-bind("layer4SpeedFactor") * v-bind("windowHeight") /
  744. v-bind("windowHeightDesign")
  745. );
  746. height: calc(
  747. 518px * v-bind("windowHeight") / v-bind("windowHeightDesign")
  748. );
  749. }
  750. > .bamboo-4_04 {
  751. position: absolute;
  752. bottom: 0;
  753. left: calc(
  754. 870px * v-bind("windowHeight") / v-bind("windowHeightDesign")
  755. );
  756. height: 100%;
  757. }
  758. > .bamboo-4_05 {
  759. position: absolute;
  760. bottom: 0;
  761. left: calc(
  762. 450px * v-bind("layer4SpeedFactor") * v-bind("windowHeight") /
  763. v-bind("windowHeightDesign")
  764. );
  765. height: 100%;
  766. }
  767. > .bamboo-4_06 {
  768. position: absolute;
  769. bottom: 0;
  770. left: calc(
  771. 520px * v-bind("layer4SpeedFactor") * v-bind("windowHeight") /
  772. v-bind("windowHeightDesign")
  773. );
  774. height: 100%;
  775. }
  776. > .bamboo-4_07 {
  777. position: absolute;
  778. bottom: 0;
  779. left: calc(
  780. 1000px * v-bind("layer4SpeedFactor") * v-bind("windowHeight") /
  781. v-bind("windowHeightDesign")
  782. );
  783. height: 100%;
  784. }
  785. > .bamboo-4_08 {
  786. position: absolute;
  787. bottom: 0;
  788. height: calc(
  789. 380px * v-bind("windowHeight") / v-bind("windowHeightDesign")
  790. );
  791. left: calc(
  792. 1553px * v-bind("layer4SpeedFactor") * v-bind("windowHeight") /
  793. v-bind("windowHeightDesign")
  794. );
  795. }
  796. > .bamboo-4_09 {
  797. position: absolute;
  798. bottom: 0;
  799. left: calc(
  800. 1345px * v-bind("layer4SpeedFactor") * v-bind("windowHeight") /
  801. v-bind("windowHeightDesign")
  802. );
  803. height: 100%;
  804. }
  805. > .bamboo-4_10 {
  806. position: absolute;
  807. bottom: 0;
  808. left: calc(
  809. 1403px * v-bind("layer4SpeedFactor") * v-bind("windowHeight") /
  810. v-bind("windowHeightDesign")
  811. );
  812. height: 100%;
  813. }
  814. > .bamboo-4_11 {
  815. position: absolute;
  816. bottom: 0;
  817. left: calc(
  818. 1403px * v-bind("layer4SpeedFactor") * v-bind("windowHeight") /
  819. v-bind("windowHeightDesign")
  820. );
  821. height: 100%;
  822. }
  823. > .bamboo-4_12 {
  824. position: absolute;
  825. bottom: 0;
  826. left: calc(
  827. 1403px * v-bind("layer4SpeedFactor") * v-bind("windowHeight") /
  828. v-bind("windowHeightDesign")
  829. );
  830. height: 100%;
  831. }
  832. }
  833. >.layer-3 {
  834. position: absolute;
  835. height: 100%;
  836. >.bamboo-3_01 {
  837. position: absolute;
  838. top: 0;
  839. height: 100%;
  840. left: calc(480px * v-bind('layer3SpeedFactor') * v-bind('windowHeight') / v-bind('windowHeightDesign'));
  841. }
  842. >.bamboo-3_02 {
  843. position: absolute;
  844. top: 0;
  845. height: 100%;
  846. left: calc(880px * v-bind('windowHeight') / v-bind('windowHeightDesign'));
  847. }
  848. >.bamboo-3_03 {
  849. position: absolute;
  850. top: 0;
  851. height: 100%;
  852. left: calc(1290px * v-bind('windowHeight') / v-bind('windowHeightDesign'));
  853. }
  854. >.bamboo-3_04 {
  855. position: absolute;
  856. top: 0;
  857. height: 100%;
  858. left: calc(867px * v-bind('windowHeight') / v-bind('windowHeightDesign'));
  859. }
  860. }
  861. > .layer-3 {
  862. position: absolute;
  863. height: 100%;
  864. > .bamboo-3_01 {
  865. position: absolute;
  866. top: 0;
  867. height: 100%;
  868. left: calc(
  869. 393px * v-bind("layer3SpeedFactor") * v-bind("windowHeight") /
  870. v-bind("windowHeightDesign")
  871. );
  872. }
  873. >.bamboo-2_03 {
  874. display: none;
  875. position: absolute;
  876. top: 0;
  877. height: 100%;
  878. left: calc(
  879. 880px * v-bind("windowHeight") / v-bind("windowHeightDesign")
  880. );
  881. }
  882. > .bamboo-3_03 {
  883. position: absolute;
  884. top: 0;
  885. height: 100%;
  886. left: calc(
  887. 1290px * v-bind("windowHeight") / v-bind("windowHeightDesign")
  888. );
  889. }
  890. > .bamboo-3_04 {
  891. position: absolute;
  892. top: 0;
  893. height: 100%;
  894. left: calc(
  895. 867px * v-bind("windowHeight") / v-bind("windowHeightDesign")
  896. );
  897. }
  898. }
  899. > .layer-2 {
  900. position: absolute;
  901. height: 100%;
  902. > .bamboo-2_01 {
  903. position: absolute;
  904. top: 0;
  905. height: 100%;
  906. left: calc(
  907. 0px * v-bind("layer2SpeedFactor") * v-bind("windowHeight") /
  908. v-bind("windowHeightDesign")
  909. );
  910. }
  911. > .bamboo-2_03 {
  912. position: absolute;
  913. top: 0;
  914. height: 100%;
  915. left: calc(
  916. 420px * v-bind("layer2SpeedFactor") * v-bind("windowHeight") /
  917. v-bind("windowHeightDesign")
  918. );
  919. }
  920. > .bamboo-2_02 {
  921. position: absolute;
  922. top: 0;
  923. height: 100%;
  924. left: calc(
  925. 920px * v-bind("layer2SpeedFactor") * v-bind("windowHeight") /
  926. v-bind("windowHeightDesign")
  927. );
  928. }
  929. // >.bamboo-2_03{
  930. // position: absolute;
  931. // top: 0;
  932. // height: 100%;
  933. // left: calc(920px * v-bind('layer2SpeedFactor') * v-bind('windowHeight') / v-bind('windowHeightDesign'));
  934. // }
  935. > .bamboo-2_04 {
  936. position: absolute;
  937. top: 0;
  938. height: 100%;
  939. left: calc(
  940. 1281px * v-bind("layer2SpeedFactor") * v-bind("windowHeight") /
  941. v-bind("windowHeightDesign")
  942. );
  943. }
  944. > .bamboo-2_04-1 {
  945. position: absolute;
  946. top: 0;
  947. height: 100%;
  948. left: calc(
  949. 1863px * v-bind("layer2SpeedFactor") * v-bind("windowHeight") /
  950. v-bind("windowHeightDesign")
  951. );
  952. }
  953. > .bamboo-2_05 {
  954. position: absolute;
  955. top: 0;
  956. height: 100%;
  957. left: calc(
  958. 997px * v-bind("windowHeight") / v-bind("windowHeightDesign")
  959. );
  960. }
  961. }
  962. > .layer-1 {
  963. position: absolute;
  964. height: 100%;
  965. > .bamboo-1_01 {
  966. position: absolute;
  967. top: 0;
  968. height: 100%;
  969. left: 0;
  970. }
  971. > .hotspot {
  972. position: absolute;
  973. top: calc(
  974. 385px * v-bind("windowHeight") / v-bind("windowHeightDesign")
  975. );
  976. left: calc(
  977. 71px * v-bind("windowHeight") / v-bind("windowHeightDesign")
  978. );
  979. }
  980. > .shuang-gou-she-se-group {
  981. position: absolute;
  982. top: calc(
  983. 245px * v-bind("windowHeight") / v-bind("windowHeightDesign")
  984. );
  985. left: calc(
  986. 216px * v-bind("windowHeight") / v-bind("windowHeightDesign")
  987. );
  988. > .watch-detail {
  989. position: absolute;
  990. top: calc(
  991. 132px * v-bind("windowHeight") / v-bind("windowHeightDesign")
  992. );
  993. left: 0;
  994. background-image: url(@/assets/images/fade-chapter-btn-bg-big.png);
  995. background-size: contain;
  996. background-repeat: no-repeat;
  997. background-position: center center;
  998. padding-top: calc(
  999. 3px / v-bind("windowSizeWhenDesignForRef") *
  1000. v-bind("windowSizeInCssForRef")
  1001. );
  1002. .button-common-style();
  1003. }
  1004. > div.group-title {
  1005. position: absolute;
  1006. top: 0;
  1007. left: calc(
  1008. 41px * v-bind("windowHeight") / v-bind("windowHeightDesign")
  1009. );
  1010. .group-title-common-style();
  1011. > img.deco {
  1012. position: absolute;
  1013. bottom: 0.9em;
  1014. right: -0.05em;
  1015. width: calc(
  1016. 16 / v-bind("windowSizeWhenDesignForRef") *
  1017. v-bind("windowSizeInCssForRef")
  1018. );
  1019. height: calc(
  1020. 16 / v-bind("windowSizeWhenDesignForRef") *
  1021. v-bind("windowSizeInCssForRef")
  1022. );
  1023. }
  1024. }
  1025. }
  1026. > .bamboo-1_02 {
  1027. position: absolute;
  1028. top: 0;
  1029. height: 100%;
  1030. left: calc(433px * v-bind('windowHeight') / v-bind('windowHeightDesign'));
  1031. }
  1032. > .mo-zhu-group {
  1033. position: absolute;
  1034. top: calc(
  1035. 245px * v-bind("windowHeight") / v-bind("windowHeightDesign")
  1036. );
  1037. left: calc(
  1038. 936px * v-bind("windowHeight") / v-bind("windowHeightDesign")
  1039. );
  1040. > .button-group {
  1041. position: absolute;
  1042. width: calc(
  1043. 20 / v-bind("windowSizeWhenDesignForRef") *
  1044. v-bind("windowSizeInCssForRef")
  1045. );
  1046. top: calc(
  1047. 75px * v-bind("windowHeight") / v-bind("windowHeightDesign")
  1048. );
  1049. left: 0;
  1050. display: flex;
  1051. flex-direction: column;
  1052. gap: calc(
  1053. 20 / v-bind("windowSizeWhenDesignForRef") *
  1054. v-bind("windowSizeInCssForRef")
  1055. );
  1056. > div {
  1057. .button-common-style();
  1058. background-image: url(@/assets/images/fade-chapter-btn-bg-small.png);
  1059. background-size: contain;
  1060. background-repeat: no-repeat;
  1061. background-position: center center;
  1062. padding-top: calc(
  1063. 3px / v-bind("windowSizeWhenDesignForRef") *
  1064. v-bind("windowSizeInCssForRef")
  1065. );
  1066. }
  1067. }
  1068. > div.group-title {
  1069. position: absolute;
  1070. top: 0;
  1071. left: calc(
  1072. 41px * v-bind("windowHeight") / v-bind("windowHeightDesign")
  1073. );
  1074. .group-title-common-style();
  1075. > img.deco {
  1076. position: absolute;
  1077. bottom: 0.9em;
  1078. right: 0.1em;
  1079. width: calc(
  1080. 16 / v-bind("windowSizeWhenDesignForRef") *
  1081. v-bind("windowSizeInCssForRef")
  1082. );
  1083. height: calc(
  1084. 16 / v-bind("windowSizeWhenDesignForRef") *
  1085. v-bind("windowSizeInCssForRef")
  1086. );
  1087. }
  1088. }
  1089. }
  1090. > .wei-ye-group {
  1091. position: absolute;
  1092. top: calc(
  1093. 170px * v-bind("windowHeight") / v-bind("windowHeightDesign")
  1094. );
  1095. left: calc(
  1096. 1776px * v-bind("windowHeight") / v-bind("windowHeightDesign")
  1097. );
  1098. font-family: "KingHwa_OldSong";
  1099. color: white;
  1100. z-index: 2;
  1101. width: calc(
  1102. 200 / v-bind("windowSizeWhenDesignForRef") *
  1103. v-bind("windowSizeInCssForRef")
  1104. );
  1105. // background: green;
  1106. > .game-box {
  1107. width: calc(
  1108. 200 / v-bind("windowSizeWhenDesignForRef") *
  1109. v-bind("windowSizeInCssForRef")
  1110. );
  1111. background: url(@/assets/images/game-bg.png);
  1112. background-size: 100% 100%;
  1113. padding: calc(
  1114. 70 / v-bind("windowSizeWhenDesignForRef") *
  1115. v-bind("windowSizeInCssForRef")
  1116. );
  1117. white-space: nowrap;
  1118. display: flex;
  1119. justify-content: center;
  1120. align-items: center;
  1121. margin-top: calc(
  1122. 30 / v-bind("windowSizeWhenDesignForRef") *
  1123. v-bind("windowSizeInCssForRef")
  1124. );
  1125. margin-left: calc(
  1126. -60 / v-bind("windowSizeWhenDesignForRef") * v-bind("windowSizeInCssForRef")
  1127. );
  1128. font-size: calc(
  1129. 20 / v-bind("windowSizeWhenDesignForRef") *
  1130. v-bind("windowSizeInCssForRef")
  1131. );
  1132. }
  1133. > .online-box {
  1134. width: calc(
  1135. 200 / v-bind("windowSizeWhenDesignForRef") *
  1136. v-bind("windowSizeInCssForRef")
  1137. );
  1138. background: url(@/assets/images/online-scene-bg.png);
  1139. background-size: 100% 100%;
  1140. padding: calc(
  1141. 70 / v-bind("windowSizeWhenDesignForRef") *
  1142. v-bind("windowSizeInCssForRef")
  1143. );
  1144. white-space: nowrap;
  1145. display: flex;
  1146. justify-content: center;
  1147. align-items: center;
  1148. margin-top: calc(
  1149. -57 / v-bind("windowSizeWhenDesignForRef") * v-bind("windowSizeInCssForRef")
  1150. );
  1151. margin-left: calc(
  1152. 40 / v-bind("windowSizeWhenDesignForRef") *
  1153. v-bind("windowSizeInCssForRef")
  1154. );
  1155. font-size: calc(
  1156. 20 / v-bind("windowSizeWhenDesignForRef") *
  1157. v-bind("windowSizeInCssForRef")
  1158. );
  1159. }
  1160. }
  1161. > .bamboo-1_03 {
  1162. position: absolute;
  1163. top: 0;
  1164. height: 100%;
  1165. left: calc(
  1166. 960px * v-bind("windowHeight") / v-bind("windowHeightDesign")
  1167. );
  1168. }
  1169. > .bamboo-1_04 {
  1170. position: absolute;
  1171. top: 0;
  1172. height: 100%;
  1173. left: calc(
  1174. 1336px * v-bind("windowHeight") / v-bind("windowHeightDesign")
  1175. );
  1176. }
  1177. > .bamboo-1_05 {
  1178. position: absolute;
  1179. top: 0;
  1180. height: 100%;
  1181. left: calc(
  1182. 1891px * v-bind("windowHeight") / v-bind("windowHeightDesign")
  1183. );
  1184. }
  1185. }
  1186. }
  1187. > .pagination {
  1188. position: absolute;
  1189. left: 50%;
  1190. transform: translateX(-50%);
  1191. bottom: calc(
  1192. 22 / v-bind("windowSizeWhenDesignForRef") *
  1193. v-bind("windowSizeInCssForRef")
  1194. );
  1195. }
  1196. > .operation-tip {
  1197. position: absolute;
  1198. right: calc(
  1199. 44 / v-bind("windowSizeWhenDesignForRef") *
  1200. v-bind("windowSizeInCssForRef")
  1201. );
  1202. bottom: calc(
  1203. 74 / v-bind("windowSizeWhenDesignForRef") *
  1204. v-bind("windowSizeInCssForRef")
  1205. );
  1206. }
  1207. .RWbox {
  1208. position: absolute;
  1209. left: 0;
  1210. top: 0;
  1211. width: 100%;
  1212. height: 100%;
  1213. .RWvideoTxt {
  1214. width: 18%;
  1215. position: absolute;
  1216. z-index: 10;
  1217. top:32%;
  1218. left:44%;
  1219. }
  1220. }
  1221. > .fade-to-other-page {
  1222. position: absolute;
  1223. left: 0;
  1224. top: 0;
  1225. width: 100%;
  1226. height: 100%;
  1227. object-fit: cover;
  1228. object-position: top;
  1229. }
  1230. > .game-box {
  1231. width: 100%;
  1232. height: 100%;
  1233. position: fixed;
  1234. top: 0;
  1235. left: 0;
  1236. z-index: 100;
  1237. > iframe {
  1238. width: 100%;
  1239. height: 100%;
  1240. position: absolute;
  1241. top: 0;
  1242. left: 0;
  1243. }
  1244. .edit-box {
  1245. width: 125%;
  1246. height: 35vh;
  1247. display: flex;
  1248. flex-direction: column;
  1249. justify-content: center;
  1250. align-items: center;
  1251. background: url(@/assets/images/game-tip.png);
  1252. background-size: 100% 100%;
  1253. position: absolute;
  1254. top: 50%;
  1255. left: 50%;
  1256. transform: translate(-50%, -50%);
  1257. z-index: 2;
  1258. font-family: "KaiTi";
  1259. > .input-box {
  1260. width: 50%;
  1261. display: flex;
  1262. flex-direction: column;
  1263. margin-bottom: 10%;
  1264. margin-right: 5%;
  1265. > input {
  1266. width: 100%;
  1267. height: 45px;
  1268. background: none;
  1269. border: none;
  1270. font-size: 20px;
  1271. white-space: pre-wrap;
  1272. color: white;
  1273. border-bottom: 1px solid rgba(255, 255, 255, 0.548);
  1274. font-family: "KaiTi";
  1275. letter-spacing: 2px;
  1276. }
  1277. .tips {
  1278. font-family: "KaiTi";
  1279. font-size: 14px;
  1280. margin-top: calc(
  1281. 5 / v-bind("windowSizeWhenDesignForRef") *
  1282. v-bind("windowSizeInCssForRef")
  1283. );
  1284. color: rgba(255, 255, 255, 0.418);
  1285. }
  1286. }
  1287. > textarea {
  1288. width: 34%;
  1289. height: 40%;
  1290. background: none;
  1291. border: none;
  1292. font-size: 20px;
  1293. white-space: pre-wrap;
  1294. }
  1295. > .cencel-btn {
  1296. // width: calc(70 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  1297. // height: calc(30 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  1298. background: url(@/assets/images/game-tip-cancel.png);
  1299. background-size: 100% 100%;
  1300. display: flex;
  1301. justify-content: center;
  1302. align-items: center;
  1303. color: #ffffff;
  1304. position: absolute;
  1305. left: 30%;
  1306. bottom: calc(
  1307. 60 / v-bind("windowSizeWhenDesignForRef") *
  1308. v-bind("windowSizeInCssForRef")
  1309. );
  1310. padding: 5px 10px;
  1311. font-family: "KaiTi";
  1312. }
  1313. > .yes-btn {
  1314. // width: calc(70 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  1315. // height: calc(30 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  1316. background: url(@/assets/images/game-tip-yes.png);
  1317. background-size: 100% 100%;
  1318. display: flex;
  1319. justify-content: center;
  1320. align-items: center;
  1321. color: #f4e09d;
  1322. position: absolute;
  1323. right: 38%;
  1324. bottom: calc(
  1325. 60 / v-bind("windowSizeWhenDesignForRef") *
  1326. v-bind("windowSizeInCssForRef")
  1327. );
  1328. padding: 5px 10px;
  1329. font-family: "KaiTi";
  1330. }
  1331. }
  1332. }
  1333. > .scene-box {
  1334. width: 100%;
  1335. height: 100%;
  1336. position: fixed;
  1337. position: fixed;
  1338. top: 0;
  1339. left: 0;
  1340. z-index: 100;
  1341. > .scene-back {
  1342. position: absolute;
  1343. left: 20px;
  1344. top: 25px;
  1345. transform: scale(1.2);
  1346. z-index: 2;
  1347. }
  1348. > iframe {
  1349. width: 100%;
  1350. height: 100%;
  1351. position: absolute;
  1352. top: 0;
  1353. left: 0;
  1354. }
  1355. }
  1356. }
  1357. </style>