Home.vue 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844
  1. <template>
  2. <div class="home">
  3. <div class="main">
  4. <div v-show="selectedTitle !== '揭開看看吧!'" :class="['mainCon', { noImg: !activeObj.images[myInd]?.url }]">
  5. <audio id="myAudio" v-if="audio" v-show="isOneAduio" :src="urlToFitFu(audio)" controls></audio>
  6. <div class="contenBoxMain">
  7. <img class="logo" src="../assets/logo.png" alt="" />
  8. <div class="contenBox" v-show="!onImg" :class="{ contenBoxAc: index === myInd }" v-for="(item, index) in filteredImages" :key="item.url">
  9. <div class="imgBox">
  10. <div class="smImgBox">
  11. <video
  12. ref="videoRef"
  13. v-if="(/\.(mp4|webm|ogg|mov)$/i.test(item.url) && curLanguage === 'zh-hk') || (/\.(mp4|webm|ogg|mov)$/i.test(item.url_en) && curLanguage === 'en') || (/\.(mp4|webm|ogg|mov)$/i.test(item.url_pe) && curLanguage === 'pe')"
  14. :src="curLanguage === 'zh-hk' ? item.url : curLanguage === 'en' ? item.url_en : item.url_pe"
  15. controls
  16. />
  17. <img v-if="/\.(jpg|jpeg|png)$/i.test(item.url)" v-lazy="item.url" alt="" @click="lookImg(item.url)" />
  18. </div>
  19. </div>
  20. </div>
  21. <div class="tips" v-if="filteredImages.length < 1">
  22. {{ curLanguage === "zh-hk" ? "暂无内容" : curLanguage === "en" ? "This content is available only in Chinese. We ask for your understanding for this inconvenience" : "Nenhum conteúdo ainda" }}
  23. </div>
  24. <!-- 左右箭头 -->
  25. <div @click="cutMyInd(-1, myInd === 0)" class="leftJJ awccJJ" :class="{ noClick: myInd === 0 }" v-show="!onImg" v-if="activeObj.images && filteredImages.length > 1"></div>
  26. <div @click="cutMyInd(1, myInd === filteredImages.length - 1)" class="rightJJ awccJJ" v-show="!onImg" :class="{ noClick: myInd === filteredImages.length - 1 }" v-if="activeObj.images && filteredImages.length > 1"></div>
  27. </div>
  28. <div class="listBox">
  29. <div class="changeList">
  30. <div class="list">
  31. <div
  32. class="item"
  33. @click="
  34. activeObj = element;
  35. myInd = 0;
  36. "
  37. v-show="list.length > 1"
  38. v-for="(element, index) in list"
  39. :key="index"
  40. :class="{ active: element.id == activeObj.id }"
  41. >
  42. {{ element.title }}
  43. </div>
  44. </div>
  45. </div>
  46. <!-- 音频图标 v-if="audio && !isOneAduio"-->
  47. <div :class="onImg ? 'iconLists' : 'iconList'">
  48. <div
  49. class="audioIcon"
  50. @click="showAudlist"
  51. :style="{
  52. opacity: curLanguage === 'zh-hk' && audioList.length > 0 ? 1 : 0,
  53. pointerEvents: curLanguage === 'zh-hk' && audioList.length > 0 ? 'auto' : 'none',
  54. }"
  55. >
  56. <div class="ppList auList" v-show="isShowAudlist">
  57. <div
  58. v-for="item in audioList"
  59. :key="item.key"
  60. @click="handleAudio(item)"
  61. :style="{
  62. color: item.key === audioType ? '#0F7562' : '#00221C',
  63. }"
  64. >
  65. {{ item.name }}
  66. </div>
  67. </div>
  68. <img :src="require(`@/assets/images/pc/yuyin.png`)" alt="" />
  69. </div>
  70. <div class="audioIcon" @click="autoAudioSta = !autoAudioSta" v-show="audioList.length > 0">
  71. <img :src="require(`@/assets/images/pc/auto${!autoAudioSta ? 'Ac' : ''}.png`)" alt="" />
  72. </div>
  73. </div>
  74. </div>
  75. <!-- 下面的文字介绍 -->
  76. <div class="flooTxt" :class="{ onImg: !!onImg }" v-if="activeObj.images[myInd]">
  77. <div class="flooTxtBox">
  78. <div class="myTitle" v-html="curLanguage === 'zh-hk' ? filteredImages[myInd]?.title_zhhk : curLanguage === 'en' ? filteredImages[myInd]?.title_en : filteredImages[myInd]?.title_pe"></div>
  79. </div>
  80. </div>
  81. </div>
  82. <Book :lookImg="lookImg" :list="list" :curLang="curLanguage" v-show="selectedTitle === '揭開看看吧!'" />
  83. </div>
  84. <!-- 查看图片 -->
  85. <viewer class="viewerCla" ref="viewer" :images="lookPics">
  86. <img :src="lookPics[0]" alt="" />
  87. </viewer>
  88. </div>
  89. </template>
  90. <script>
  91. // import { hotList } from "./data.js";
  92. import Book from "@/components/Book.vue";
  93. export default {
  94. name: "Home",
  95. data() {
  96. return {
  97. selectedTitle: this.$route.query.title,
  98. m: this.$route.query.m,
  99. id: this.$route.query.id,
  100. languageList: [],
  101. audioList: [],
  102. language: "",
  103. // 音频地址
  104. audio: "",
  105. audioType: "",
  106. // 如果只有单独的音频
  107. isOneAduio: false,
  108. // 音频状态
  109. audioSta: false,
  110. // 自动续播
  111. autoAudioSta: false,
  112. //无图,模式
  113. onImg: false,
  114. myInd: 0,
  115. // 当前 type
  116. list: [],
  117. // 查看图片
  118. lookPics: [],
  119. activeObj: {
  120. id: 1,
  121. images: [],
  122. },
  123. isShowLanlist: false,
  124. isShowAudlist: false,
  125. curLanguage: this.$route.query.curLang || localStorage.getItem("locale"),
  126. };
  127. },
  128. watch: {
  129. myType() {
  130. this.myInd = 0;
  131. },
  132. myInd(newVal, oldVal) {
  133. if (!this.activeObj.images || newVal < 0 || newVal >= this.activeObj.images.length) {
  134. this.audio = "";
  135. return;
  136. }
  137. let item = this.activeObj.images[this.myInd];
  138. this.resetList(item);
  139. // 切换暂停播放视频
  140. if (this.selectedTitle.includes("視頻") && this.$refs.videoRef?.[oldVal]) {
  141. this.$refs.videoRef[oldVal].pause();
  142. }
  143. },
  144. activeObj(newVal) {
  145. this.resetList(newVal.images[this.myInd]);
  146. },
  147. // 音频的开启和关闭
  148. audioSta(val) {
  149. const dom = document.querySelector("#myAudio");
  150. console.log("----val", this.audio, val, dom);
  151. if (val) {
  152. dom.play();
  153. dom.onended = () => {
  154. // console.log("----音频播放完毕");
  155. if (this.autoAudioSta) {
  156. this.cutMyInd(1, this.myInd === this.activeObj.images.length - 1);
  157. } else {
  158. this.audioSta = false;
  159. }
  160. };
  161. } else dom.pause();
  162. },
  163. autoAudioSta(val) {
  164. this.audioSta = val;
  165. },
  166. },
  167. computed: {
  168. filteredImages() {
  169. if (!this.activeObj?.images) return [];
  170. const isVideo = (item) => {
  171. return (/\.(mp4|webm|ogg|mov)$/i.test(item.url) && this.curLanguage === "zh-hk") || (/\.(mp4|webm|ogg|mov)$/i.test(item.url_en) && this.curLanguage === "en") || (/\.(mp4|webm|ogg|mov)$/i.test(item.url_pe) && this.curLanguage === "pe");
  172. };
  173. const isImage = (item) => /\.(jpg|jpeg|png)$/i.test(item.url);
  174. const isTitle = (item) => {
  175. return item.title_zh || item.title_zhhk || item.title_pe || item.title_en;
  176. };
  177. const filterArr = this.activeObj.images.filter((item) => {
  178. return isVideo(item) || isImage(item) || isTitle(item);
  179. });
  180. console.log(
  181. this.activeObj.images.filter((item) => {
  182. return isVideo(item) || isImage(item);
  183. })
  184. );
  185. // return filterArr.filter((i, index) => {
  186. // return index <= this.myInd + 3;
  187. // });
  188. if (this.selectedTitle.includes("視頻")) {
  189. return this.activeObj.images.filter((item) => {
  190. console.log("当前是视频热点");
  191. return isVideo(item) || isImage(item);
  192. });
  193. }
  194. return filterArr;
  195. },
  196. },
  197. components: {
  198. Book,
  199. },
  200. methods: {
  201. handlePlay() {
  202. console.log("----this.$refs.videoRef", this.$refs.videoRef);
  203. const currentVideo = this.$refs.videoRef?.[this.myInd];
  204. if (!currentVideo) return;
  205. currentVideo.requestFullscreen();
  206. if (currentVideo.paused) {
  207. currentVideo.play().catch((err) => {
  208. console.error("视频播放失败:", err);
  209. });
  210. } else {
  211. currentVideo.pause();
  212. }
  213. },
  214. hanleType(item) {
  215. this.language = item.key;
  216. // this.$i18n.locale = 'fr';
  217. },
  218. handleAudio(item) {
  219. let data = this.activeObj.images[this.myInd];
  220. this.audio = data[item.key];
  221. this.audioType = item.key;
  222. this.audioSta = false;
  223. this.$nextTick(() => {
  224. this.audioSta = true;
  225. });
  226. localStorage.setItem("cnPreference", item.key);
  227. },
  228. showText(type) {
  229. let item = this.activeObj.images[this.myInd];
  230. let objTitle = {
  231. "zh-cn": item.title_zh,
  232. "zh-hk": item.title_zhhk,
  233. pe: item.title_pe,
  234. en: item.title_en,
  235. not: " ",
  236. };
  237. let objText = {
  238. "zh-cn": item.text_zh,
  239. "zh-hk": item.text_zhhk,
  240. pe: item.text_pe,
  241. en: item.text_en,
  242. };
  243. if (type == "title") {
  244. return objTitle[this.language];
  245. } else {
  246. return objText[this.language];
  247. }
  248. },
  249. // 本地化 url 适配
  250. urlToFitFu(url) {
  251. return url.url || url;
  252. // const resUrl = url;
  253. // if (url.includes("https://super.4dage.com")) {
  254. // return url.replace("https://super.4dage.com", "");
  255. // } else if (url.includes("http://super.4dage.com")) {
  256. // return url.replace("http://super.4dage.com", "");
  257. // } else return resUrl;
  258. },
  259. // 点击左右箭头
  260. cutMyInd(num, flag) {
  261. if (flag) return;
  262. this.myInd += num;
  263. this.audioSta = false;
  264. if (this.autoAudioSta)
  265. this.$nextTick(() => {
  266. this.audioSta = true;
  267. });
  268. // this.activeObj = this.activeObj.images[this.myInd];
  269. },
  270. // 点击查看大图
  271. lookImg(url) {
  272. let dom = this.$refs.viewer.$viewer;
  273. this.lookPics = [url.url || url];
  274. console.log(this.lookPics);
  275. dom.show();
  276. },
  277. resetList(item) {
  278. this.languageList = [];
  279. this.audioList = [];
  280. const isHk = item?.title_zhhk || item?.text_zhhk;
  281. const isEn = item?.title_en || item?.text_en;
  282. const isPe = item?.title_pe || item?.text_pe;
  283. isHk && this.languageList.push({ name: "繁體中文", key: "zh-hk" });
  284. isEn && this.languageList.push({ name: "English", key: "en" });
  285. isPe && this.languageList.push({ name: "Português", key: "pe" });
  286. this.curLanguage === "zh-hk" && item?.mp3_zh && this.audioList.push({ name: "普通話", key: "mp3_zh" });
  287. this.curLanguage === "zh-hk" && item?.mp3_zhhk && this.audioList.push({ name: "粵語", key: "mp3_zhhk" });
  288. this.curLanguage === "en" && item?.mp3_en && this.audioList.push({ name: "English", key: "mp3_en" });
  289. this.curLanguage === "pe" && item?.mp3_pe && this.audioList.push({ name: "Português", key: "mp3_pe" });
  290. console.log(this.audioList, "this.audioList");
  291. const cnPreference = localStorage.getItem("cnPreference");
  292. console.log(cnPreference === "mp3_zh", 'cnPreference === "mp3_zh"');
  293. this.audio = (this.curLanguage === "zh-hk" && (cnPreference === "mp3_zh" ? item?.mp3_zh : item?.mp3_zhhk)) || (this.curLanguage === "en" && item?.mp3_en) || (this.curLanguage === "pe" && item?.mp3_pe) || "";
  294. console.log(this.audio, "-----------audio");
  295. this.audioType = this.curLanguage === "zh-hk" && item?.mp3_zhhk ? cnPreference || "mp3_zhhk" : this.curLanguage === "en" && item?.mp3_en ? "mp3_en" : this.curLanguage === "pe" && item?.mp3_pe ? "mp3_pe" : "";
  296. this.language = this.curLanguage === "zh-hk" && isHk ? "zh-hk" : this.curLanguage === "en" && isEn ? "en" : this.curLanguage === "pe" && isPe ? "pe" : "not";
  297. console.log(this.language, "===============");
  298. // this.$nextTick(() => {
  299. // this.autoAudioSta = true;
  300. // });
  301. },
  302. getData() {
  303. // https://www.4dmodel.com/
  304. // let url = `https://houseoss.4dkankan.com/project/aoMenScene/static/hot/${
  305. // 线上数据
  306. // let url = `/static/data/${
  307. //本地化部署
  308. // this.m
  309. // }/data.json?time=${Math.random()}`;
  310. // let result = (await this.$http.get(url)).data;
  311. console.log("..................123", window.hotList);
  312. const resData = window.hotList.find((item) => item.key === this.selectedTitle)?.contentList;
  313. console.log("..................", resData);
  314. this.list = resData;
  315. let showData = resData && resData[0];
  316. let item = showData?.images[this.myInd];
  317. this.resetList(item);
  318. this.activeObj = {
  319. ...showData,
  320. };
  321. },
  322. showLanlist() {
  323. this.isShowLanlist = !this.isShowLanlist;
  324. },
  325. showAudlist() {
  326. this.isShowAudlist = !this.isShowAudlist;
  327. },
  328. },
  329. mounted() {
  330. this.getData();
  331. },
  332. };
  333. </script>
  334. <style lang="less" scoped>
  335. .home {
  336. .viewerCla img {
  337. display: none;
  338. }
  339. width: 100%;
  340. height: 100%;
  341. background-color: rgba(255, 252, 247, 0.6);
  342. backdrop-filter: blur(10px);
  343. position: relative;
  344. #myAudio {
  345. z-index: 11;
  346. position: absolute;
  347. top: 50%;
  348. left: 50%;
  349. transform: translate(-50%, -50%);
  350. width: 500px;
  351. height: 60px;
  352. }
  353. .main {
  354. width: 70%;
  355. margin: 0 auto;
  356. height: 87%;
  357. padding-top: 95px;
  358. .mainCon {
  359. background-image: url("../assets/bg.png");
  360. background-size: 100% 100%;
  361. border-radius: 6px;
  362. overflow: hidden;
  363. width: 100%;
  364. height: 100%;
  365. .oneTabNum {
  366. z-index: 10;
  367. position: absolute;
  368. bottom: 30px;
  369. left: 50%;
  370. transform: translateX(-50%);
  371. font-size: 14px;
  372. }
  373. .flooTabBox {
  374. z-index: 10;
  375. position: absolute;
  376. bottom: 30px;
  377. left: 50%;
  378. transform: translateX(-50%);
  379. display: flex;
  380. .tabRow {
  381. cursor: pointer;
  382. display: flex;
  383. align-items: center;
  384. margin: 0 12px;
  385. font-size: 12px;
  386. background-color: #dedede;
  387. padding: 0px 14px;
  388. height: 36px;
  389. border-radius: 18px;
  390. & > img {
  391. margin-right: 6px;
  392. }
  393. }
  394. .tabRowAc {
  395. background-color: #b90c0c;
  396. pointer-events: none;
  397. color: #d6b970;
  398. }
  399. }
  400. .contenBoxMain {
  401. position: relative;
  402. width: 100%;
  403. height: 70%;
  404. .logo {
  405. position: absolute;
  406. left: 52px;
  407. top: 37px;
  408. height: 60px;
  409. }
  410. .tips {
  411. display: flex;
  412. width: 100%;
  413. height: 145%;
  414. justify-content: center;
  415. align-items: center;
  416. color: #fff;
  417. font-size: 22px;
  418. font-weight: 700;
  419. }
  420. }
  421. .listBox {
  422. position: relative;
  423. top: -54%;
  424. width: 72%;
  425. margin: 0 auto;
  426. display: flex;
  427. justify-content: space-between;
  428. align-items: center;
  429. .iconList,
  430. .iconLists {
  431. display: flex;
  432. .audioIcon {
  433. z-index: 10;
  434. cursor: pointer;
  435. width: 62px;
  436. position: relative;
  437. img {
  438. width: 100%;
  439. }
  440. .ppList {
  441. padding: 8px 10px;
  442. width: 99px;
  443. position: absolute;
  444. top: 66px;
  445. left: -46px;
  446. background: #fff;
  447. opacity: 0.85;
  448. border-radius: 8px;
  449. div {
  450. height: 30px;
  451. line-height: 30px;
  452. font-family: Source Han Serif CN;
  453. font-weight: 600;
  454. font-size: 14px;
  455. color: #00221c;
  456. opacity: 0.85;
  457. text-align: center;
  458. border-bottom: 1px solid #d2c9c1;
  459. &:last-child {
  460. border: none;
  461. }
  462. }
  463. }
  464. .auList {
  465. left: 6px;
  466. }
  467. }
  468. }
  469. .changeList {
  470. margin-left: 95px;
  471. .list {
  472. display: flex;
  473. align-items: center;
  474. .active {
  475. opacity: 1;
  476. color: #02362c;
  477. }
  478. div {
  479. height: 100%;
  480. padding: 8px 7px 10px 7px;
  481. min-width: 70px;
  482. text-align: center;
  483. background: #dde5e2;
  484. border-radius: 7px;
  485. font-family: Source Han Serif CN;
  486. font-weight: 500;
  487. font-size: 14px;
  488. color: #02362c;
  489. line-height: 14px;
  490. opacity: 0.79;
  491. margin-right: 20px;
  492. }
  493. }
  494. }
  495. }
  496. .contenBox {
  497. width: 51%;
  498. height: 80%;
  499. position: absolute;
  500. top: auto;
  501. left: calc(50% - 315px);
  502. opacity: 0;
  503. pointer-events: none;
  504. transition: all 0.5s;
  505. bottom: 0 !important;
  506. left: 50% !important;
  507. transform: translate(-50%, 28px);
  508. .modelBox,
  509. .videoBox,
  510. .imgBox {
  511. width: 100%;
  512. height: 100%;
  513. object-fit: contain;
  514. }
  515. .modelBox {
  516. iframe {
  517. width: 100%;
  518. height: 100%;
  519. }
  520. }
  521. .videoBox {
  522. // padding: 100px 100px 120px;
  523. video {
  524. width: 100%;
  525. height: 100%;
  526. object-fit: contain;
  527. }
  528. }
  529. .imgBox {
  530. // padding: 100px 100px 120px;
  531. .smImgBox {
  532. position: relative;
  533. width: 100%;
  534. height: 100%;
  535. & > img,
  536. & > video {
  537. // pointer-events: none;
  538. width: 100%;
  539. height: 100%;
  540. object-fit: contain;
  541. }
  542. & > img {
  543. cursor: zoom-in;
  544. }
  545. }
  546. }
  547. }
  548. .contenBoxAc {
  549. opacity: 1;
  550. pointer-events: auto;
  551. }
  552. .awccJJ {
  553. cursor: pointer;
  554. position: fixed;
  555. top: 50%;
  556. left: 50%;
  557. transform: translate(-563px, -60px);
  558. width: 48px;
  559. height: 60px;
  560. background-image: url("../assets/images/icon/left.png");
  561. background-size: 100% 100%;
  562. &:focus {
  563. outline: none;
  564. }
  565. }
  566. .rightJJ {
  567. transform: translate(526px, -60px);
  568. background-image: url("../assets/images/icon/right.png");
  569. }
  570. .noClick {
  571. cursor: default;
  572. opacity: 0.4;
  573. }
  574. .flooTxt {
  575. margin-top: 20px;
  576. width: 80%;
  577. height: 135px;
  578. margin: 0 auto;
  579. // position: relative;
  580. top: -137px;
  581. .flooTxtBox {
  582. width: 100%;
  583. height: 100%;
  584. overflow-y: auto;
  585. .myTitle {
  586. color: #dde5e2;
  587. font-size: 22px;
  588. font-weight: 700;
  589. line-height: 38px;
  590. margin-bottom: 10px;
  591. text-align: justify;
  592. text-indent: 2em;
  593. }
  594. .myTxt {
  595. font-family: Adobe Heiti Std;
  596. font-weight: normal;
  597. font-size: 19px;
  598. color: #dde5e2;
  599. line-height: 31px;
  600. * {
  601. text-indent: 2em;
  602. }
  603. }
  604. &::-webkit-scrollbar {
  605. /*滚动条整体样式*/
  606. width: 3px; /*高宽分别对应横竖滚动条的尺寸*/
  607. height: 1px;
  608. }
  609. &::-webkit-scrollbar-thumb {
  610. /*滚动条里面小方块*/
  611. border-radius: 10px;
  612. -webkit-box-shadow: inset 0 0 5px transparent;
  613. background: #2f714a;
  614. }
  615. &::-webkit-scrollbar-track {
  616. /*滚动条里面轨道*/
  617. -webkit-box-shadow: inset 0 0 5px transparent;
  618. border-radius: 10px;
  619. background: transparent;
  620. }
  621. }
  622. }
  623. }
  624. .noImg {
  625. .contenBoxMain {
  626. height: 16%;
  627. .contenBox {
  628. display: none;
  629. }
  630. .tips {
  631. display: none;
  632. }
  633. }
  634. .listBox {
  635. position: initial;
  636. }
  637. .flooTxt {
  638. width: 51%;
  639. height: 48%;
  640. }
  641. }
  642. .onImg {
  643. top: -600px !important;
  644. height: 360px;
  645. }
  646. .flooTxtOne {
  647. height: 600px;
  648. }
  649. }
  650. }
  651. // 移动端
  652. @media screen and (max-width: 1000px) {
  653. .home {
  654. .logo {
  655. display: none;
  656. }
  657. #myAudio {
  658. width: 90vw;
  659. max-width: 500px;
  660. }
  661. .main {
  662. width: 90%;
  663. height: 85%;
  664. padding: 0;
  665. position: absolute;
  666. top: 50%;
  667. left: 50%;
  668. transform: translate(-50%, -50%);
  669. .mainCon {
  670. border-radius: 8px 8px 0 0;
  671. background-image: url("../assets/images/mobileBg.png");
  672. .contenBoxMain {
  673. height: 42%;
  674. max-height: 260px;
  675. .contenBox {
  676. width: calc(100% - 84px);
  677. height: 165px;
  678. transform: translate(-50%, 0);
  679. .videoBox {
  680. padding: 0px 0;
  681. position: relative;
  682. video {
  683. width: 96%;
  684. max-height: 100%;
  685. height: auto;
  686. position: absolute;
  687. top: 50%;
  688. left: 2%;
  689. transform: translateY(-50%);
  690. }
  691. }
  692. .imgBox {
  693. // padding: 60px 50px 80px;
  694. .smImgBox {
  695. cursor: default;
  696. }
  697. }
  698. }
  699. .awccJJ {
  700. left: 0;
  701. width: 28px;
  702. top: 50%;
  703. bottom: 0;
  704. transform: translateY(-59px);
  705. height: 57px;
  706. cursor: default;
  707. background-image: url("../assets/images/icon/left.png");
  708. }
  709. .rightJJ {
  710. left: auto;
  711. right: 0;
  712. background-image: url("../assets/images/icon/right.png");
  713. }
  714. }
  715. .listBox {
  716. width: 76%;
  717. top: -188px;
  718. height: 0;
  719. .changeList {
  720. width: 100%;
  721. height: 30px;
  722. margin: 0;
  723. .list {
  724. gap: 5px;
  725. }
  726. div {
  727. font-size: 8px !important;
  728. .item {
  729. padding: 6px 4px !important;
  730. min-width: 35px;
  731. margin: 0;
  732. }
  733. }
  734. }
  735. .iconList {
  736. align-items: center;
  737. gap: 6px;
  738. .audioIcon {
  739. cursor: default;
  740. width: 30px;
  741. height: 30px;
  742. & > img {
  743. width: 30px;
  744. }
  745. .auList {
  746. left: -180px !important;
  747. }
  748. .ppList {
  749. top: 35px !important;
  750. left: -75px !important;
  751. }
  752. }
  753. }
  754. }
  755. .flooTabBox {
  756. width: 100%;
  757. bottom: 20px;
  758. justify-content: center;
  759. .tabRow {
  760. cursor: default;
  761. margin: 0 6px;
  762. padding: 0 10px;
  763. height: 32px;
  764. & > img {
  765. width: 16px;
  766. }
  767. }
  768. }
  769. .flooTxt {
  770. margin-top: 0;
  771. padding: 20px 0 15px;
  772. height: 52%;
  773. // background-color: #fff;
  774. border-radius: 0 0 8px 8px;
  775. top: -383px;
  776. .flooTxtBox {
  777. .myTitle {
  778. text-align: justify;
  779. text-indent: 2em;
  780. font-size: 18px;
  781. text-indent: 2em;
  782. }
  783. .myTxt {
  784. font-size: 14px;
  785. line-height: 22px;
  786. }
  787. }
  788. }
  789. }
  790. .noImg {
  791. .contenBoxMain {
  792. height: 10%;
  793. }
  794. .listBox {
  795. top: -7px;
  796. .iconList {
  797. .audioIcon {
  798. .auList {
  799. left: -4px !important;
  800. }
  801. }
  802. }
  803. }
  804. .flooTxt {
  805. height: 75%;
  806. width: 80%;
  807. }
  808. }
  809. .flooTxtOne {
  810. height: 100%;
  811. }
  812. }
  813. }
  814. }
  815. </style>