Rbottom.vue 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804
  1. <template>
  2. <div class="Rbottom" :style="`${leftList[1].done ? 'bottom:0px' : ''}`">
  3. <!--热点列表div -->
  4. <div class="hotBox" :class="{ activeHotBox: hotListShow }">
  5. <div class="hot_main">
  6. <!-- 关闭按钮 -->
  7. <div class="hot_close" @click="hotListShow = false"></div>
  8. <!-- 标题 -->
  9. <div class="hot_title">热点列表</div>
  10. <!-- 输入框 -->
  11. <div class="hot_search" @keyup.enter="mySearch">
  12. <!-- <input type="text" v-model="hotTxt"> -->
  13. <el-input type="text" placeholder="请输关键字" v-model="hotTxt" maxlength="30" show-word-limit>
  14. </el-input>
  15. <div class="hot_btn" @click="mySearch">搜索</div>
  16. </div>
  17. <!-- 历史记录 -->
  18. <div class="hot_his" v-show="hotHisList.length > 0">
  19. <div class="hot_hisRow" @click="selectHis(item)" v-for="(item, index) in hotHisList" :key="index">{{ item }}
  20. </div>
  21. <!-- 清除 -->
  22. <div class="hot_clearHis" @click="clearHotHis">清除历史记录</div>
  23. </div>
  24. <!-- 热点列表 -->
  25. <div class="hot_list" :style="`height:${hotHisList.length === 0 ? '540px' : '450px'}`">
  26. <div class="hot_listRow" @click="openHot(item)" v-for="item in hotListShowData" :key="item.sid">{{
  27. item.title?.split('&')[0]
  28. }}</div>
  29. </div>
  30. </div>
  31. </div>
  32. <audio src="@/assets/media/bacMusic.mp3" loop id="bacMusic"></audio>
  33. <div class="box1">
  34. <div class="mainll mainrr">
  35. <div v-show="list.length !== 0 || item.type > 2" @click="leftCutClick(item.type)" class="row"
  36. :class="{ active2: item.done }" v-for="item in leftList" :key="item.type">
  37. <img :src="
  38. require(`@/assets/img/LeftTop/inco${item.type}${item.done ? 'Ac' : ''
  39. }.png`)
  40. " alt="" />
  41. <p>{{ item.name }}</p>
  42. </div>
  43. <!-- 热点列表 -->
  44. <div class="row" :class="{ active2: hotListShow }" @click="hotListShow = true">
  45. <img :src="
  46. require(`@/assets/img/LeftTop/incoHot${hotListShow ? 'Ac' : ''
  47. }.png`)
  48. " alt="" />
  49. <p>热点列表</p>
  50. </div>
  51. </div>
  52. <div class="mainrr">
  53. <div class="row" @click="rightClisk(item.type)" v-for="item in rightList" :key="item.type" :class="{
  54. active2:
  55. (music && item.type === 2) ||
  56. (like && item.type === 3) ||
  57. (share && item.type === 4) ||
  58. (isFullscreen && item.type === 5),
  59. }">
  60. <img :src="require(`@/assets/img/Goods/inco${item.type}Ac.png`)" alt="" v-if="music && item.type === 2" />
  61. <img :src="require(`@/assets/img/Goods/inco${item.type}Ac.png`)" alt="" v-else-if="like && item.type === 3" />
  62. <img :src="require(`@/assets/img/Goods/inco${item.type}Ac.png`)" alt=""
  63. v-else-if="share && item.type === 4" />
  64. <img :src="require(`@/assets/img/Goods/inco${item.type}Ac.png`)" alt=""
  65. v-else-if="isFullscreen && item.type === 5" />
  66. <img :src="require(`@/assets/img/Goods/inco${item.type}.png`)" alt="" v-else />
  67. <transition name="likeAddAnimate">
  68. <div class="likeMove" v-show="like && item.type === 3">+ 1</div>
  69. </transition>
  70. <p>
  71. {{ item.name }}
  72. </p>
  73. </div>
  74. </div>
  75. </div>
  76. <div class="box2" :style="`${leftList[1].done ? '' : 'height:0px;padding:0;opacity:0'}`">
  77. <div class="swiper-container">
  78. <div class="swiper-wrapper" v-if="list.length">
  79. <div @click="cutGoods(index)" class="swiper-slide" v-for="(item, index) in list"
  80. :class="{ active: (acList === index && playing) || (clickBottomAc && acList === index) }" :key="index">
  81. <img :src="item.list[0].enter.cover" alt="" />
  82. <div class="plan" v-show="(acList === index && playing) || (clickBottomAc && acList === index)"
  83. :style="{ width: progressPart + '%' }"></div>
  84. <p :class="{
  85. txtActive: (acList === index && playing) || (clickBottomAc && acList === index),
  86. }">
  87. {{ item.name }}
  88. </p>
  89. </div>
  90. <div class="swiper-slide" style="pointer-events: none"></div>
  91. </div>
  92. <div class="swiper-scrollbar"></div>
  93. </div>
  94. </div>
  95. <!-- 分享页面 -->
  96. <div class="shareBox" :class="{ shareBoxShow: share }">
  97. <div class="shareMain">
  98. <div class="close" @click="share = false"></div>
  99. <h3>分享</h3>
  100. <p>
  101. 请使用手机扫描二维码或
  102. <br />
  103. 复制分享链接
  104. </p>
  105. <img src="@/assets/img/Goods/Rcode.jpg" alt="" />
  106. <div class="btnn" @click="copyPcTxt">复制分享链接</div>
  107. </div>
  108. </div>
  109. </div>
  110. </template>
  111. <script>
  112. import { getHotHis, setHotHis, clearHotHis } from '../utils/storage'
  113. import { addNumAPI } from "@/utils/api";
  114. import Swiper from "./swiper.js";
  115. export default {
  116. name: "Rbottom",
  117. components: {},
  118. props: ["acList", "progressPart", "playing", "clickBottomAc"],
  119. data() {
  120. //这里存放数据
  121. return {
  122. rightList: [
  123. { name: "首页", type: 1 },
  124. { name: "声音", type: 2 },
  125. { name: "点赞", type: 3 },
  126. { name: "分享", type: 4 },
  127. { name: "全屏", type: 5 },
  128. ],
  129. rightType: "",
  130. music: false,
  131. like: false,
  132. share: false,
  133. isFullscreen: false,
  134. // --------------
  135. hotList: [],
  136. hotListShowData: [],
  137. hotHisList: [],
  138. hotTxt: '',
  139. hotListShow: true,
  140. leftList: [
  141. { name: "自动漫游", type: 1, done: false },
  142. { name: "场景导览", type: 2, done: false },
  143. { name: "全景漫游", type: 3, done: true },
  144. { name: "迷你模型", type: 4, done: false },
  145. { name: "顶部俯视", type: 5, done: false },
  146. ],
  147. list: [],
  148. Swiper: null,
  149. };
  150. },
  151. //监听属性 类似于data概念
  152. computed: {},
  153. //监控data中的数据变化
  154. watch: {
  155. hotListShow(val) {
  156. if (val) {
  157. if (this.leftList[0].done) {
  158. this.$emit("stopPlay", true);
  159. this.leftList[0].done = false
  160. if (window.bacMusic) {
  161. setTimeout(() => {
  162. this.music = true;
  163. }, 100);
  164. }
  165. }
  166. }
  167. },
  168. acList(val) {
  169. let temp = val - 2;
  170. if (temp < 0) temp = 0;
  171. this.Swiper.slideTo(temp);
  172. },
  173. music(val) {
  174. let dom = document.querySelector("#bacMusic");
  175. if (val) dom.play();
  176. else dom.pause();
  177. },
  178. },
  179. //方法集合
  180. methods: {
  181. // 给父组件调用,拿到热点数据
  182. getHotListToFather(data) {
  183. this.hotList = data.filter(v => v.title.split("&")[2] || !v.title.includes("&"))
  184. this.hotListShowData = [...this.hotList]
  185. },
  186. openHot(item) {
  187. this.$emit('openHot', item)
  188. },
  189. selectHis(val) {
  190. this.hotHisList = this.hotHisList.filter(v => v !== val)
  191. this.hotTxt = val
  192. this.hotHisList.unshift(val)
  193. setHotHis(this.hotHisList)
  194. this.hotListShowData = this.hotList.filter(v => v.title.includes(this.hotTxt))
  195. },
  196. clearHotHis() {
  197. clearHotHis()
  198. this.hotHisList = []
  199. },
  200. mySearch() {
  201. if (this.hotTxt.trim() === '') {
  202. this.hotListShowData = [...this.hotList]
  203. } else {
  204. this.hotListShowData = this.hotList.filter(v => v.title.includes(this.hotTxt))
  205. this.hotHisList = this.hotHisList.filter(v => v !== this.hotTxt)
  206. this.hotHisList.unshift(this.hotTxt)
  207. if (this.hotHisList.length > 14) this.hotHisList.length = 14
  208. setHotHis(this.hotHisList)
  209. }
  210. },
  211. cutGoods(index) {
  212. this.$emit("update:clickBottomAc", false);
  213. this.$emit("daoLanCut", index);
  214. this.leftList[0].done = false;
  215. if (window.bacMusic) {
  216. setTimeout(() => {
  217. this.music = true;
  218. }, 100);
  219. }
  220. },
  221. leftCutClick(type) {
  222. this.$emit("cutKankan", type - 1);
  223. if (type === 1) {
  224. let dom = document.querySelector("#bacMusic");
  225. if (!this.leftList[0].done) {
  226. // 防止多次点击自动漫游
  227. let mainApp = document.querySelector("#app");
  228. mainApp.style.pointerEvents = "none";
  229. // 自动漫游开始的时候的音乐播放状态
  230. window.bacMusic = !dom.paused;
  231. setTimeout(() => {
  232. this.music = false;
  233. }, 200);
  234. } else {
  235. if (window.bacMusic) {
  236. setTimeout(() => {
  237. this.music = true;
  238. }, 100);
  239. }
  240. }
  241. this.leftList[1].done = true;
  242. this.leftList[0].done = !this.leftList[0].done;
  243. } else if (type === 2) {
  244. this.leftList[1].done = !this.leftList[1].done;
  245. } else if (type >= 4) {
  246. this.$emit("stopPlay", true);
  247. }
  248. },
  249. // 给父组件调用的控制音乐播放的方法
  250. opMusic(val) {
  251. this.music = val;
  252. },
  253. // 给父组件操作控制左边按钮的方法
  254. leftCut(index) {
  255. if (index > 2) {
  256. if (window.bacMusic) {
  257. setTimeout(() => {
  258. this.music = true;
  259. }, 100);
  260. }
  261. this.leftList.forEach((v, i) => {
  262. if (i === index) v.done = true;
  263. else v.done = false;
  264. });
  265. } else if (index === -1) {
  266. if (window.bacMusic) {
  267. setTimeout(() => {
  268. this.music = true;
  269. }, 100);
  270. }
  271. this.leftList[0].done = false;
  272. } else if (index === 2) {
  273. this.leftList[2].done = true;
  274. this.leftList[3].done = this.leftList[4].done = false;
  275. }
  276. },
  277. // 点击全屏
  278. fullShow() {
  279. let element = document.documentElement;
  280. if (this.isFullscreen) {
  281. if (document.exitFullscreen) {
  282. document.exitFullscreen();
  283. } else if (document.webkitCancelFullScreen) {
  284. document.webkitCancelFullScreen();
  285. } else if (document.mozCancelFullScreen) {
  286. document.mozCancelFullScreen();
  287. } else if (document.msExitFullscreen) {
  288. document.msExitFullscreen();
  289. }
  290. } else {
  291. if (element.requestFullscreen) {
  292. element.requestFullscreen();
  293. } else if (element.webkitRequestFullScreen) {
  294. element.webkitRequestFullScreen();
  295. } else if (element.mozRequestFullScreen) {
  296. element.mozRequestFullScreen();
  297. } else if (element.msRequestFullscreen) {
  298. element.msRequestFullscreen();
  299. }
  300. }
  301. // 改变当前全屏状态
  302. this.isFullscreen = !this.isFullscreen;
  303. },
  304. rightClisk(type) {
  305. if (type === 1) window.location.replace("/YHT/index.html#/Home");
  306. else if (type === 2) {
  307. let dom = document.querySelector("#bacMusic");
  308. window.bacMusic = dom.paused;
  309. this.music = !this.music;
  310. this.$emit("stopPlay");
  311. } else if (type === 3) {
  312. if (this.like) return;
  313. this.like = true;
  314. setTimeout(() => {
  315. this.like = false;
  316. }, 2000);
  317. addNumAPI("star");
  318. } else if (type === 4) {
  319. this.$emit("stopPlay");
  320. this.share = true;
  321. } else this.fullShow();
  322. },
  323. //点击复制链接
  324. copyPcTxt() {
  325. // 存储传递过来的数据
  326. let OrderNumber = window.location.origin + "/YHT/index.html";
  327. // 创建一个input 元素
  328. // createElement() 方法通过指定名称创建一个元素
  329. let newInput = document.createElement("input");
  330. // 讲存储的数据赋值给input的value值
  331. newInput.value = OrderNumber;
  332. // appendChild() 方法向节点添加最后一个子节点。
  333. document.body.appendChild(newInput);
  334. // 选中input元素中的文本
  335. // select() 方法用于选择该元素中的文本。
  336. newInput.select();
  337. // 执行浏览器复制命令
  338. // execCommand方法是执行一个对当前文档,当前选择或者给出范围的命令
  339. document.execCommand("Copy");
  340. // 清空输入框
  341. newInput.remove();
  342. alert("复制成功");
  343. },
  344. // 初始化轮播图
  345. baseSw(data) {
  346. this.list = data;
  347. this.$nextTick(() => {
  348. this.Swiper = new Swiper(".Rbottom .swiper-container", {
  349. slidesPerView: 9,
  350. spaceBetween: 25,
  351. scrollbar: {
  352. el: ".swiper-scrollbar",
  353. },
  354. });
  355. });
  356. },
  357. },
  358. //生命周期 - 创建完成(可以访问当前this实例)
  359. created() {
  360. this.hotHisList = getHotHis()
  361. },
  362. //生命周期 - 挂载完成(可以访问DOM元素)
  363. mounted() {
  364. // 监听esc事件
  365. document.addEventListener("webkitfullscreenchange", (e) => {
  366. if (!e.currentTarget.webkitIsFullScreen) this.isFullscreen = false;
  367. });
  368. document.addEventListener("fullscreenchange", (e) => {
  369. if (!document.fullscreenElement) this.isFullscreen = false;
  370. });
  371. document.addEventListener("MSFullscreenChange", (e) => {
  372. if (!document.msFullscreenElement) this.isFullscreen = false;
  373. });
  374. document.addEventListener("mozfullscreenchange", (e) => {
  375. if (!document.mozFullScreenElement) this.isFullscreen = false;
  376. });
  377. },
  378. beforeCreate() { }, //生命周期 - 创建之前
  379. beforeMount() { }, //生命周期 - 挂载之前
  380. beforeUpdate() { }, //生命周期 - 更新之前
  381. updated() { }, //生命周期 - 更新之后
  382. beforeDestroy() { }, //生命周期 - 销毁之前
  383. destroyed() { }, //生命周期 - 销毁完成
  384. activated() { }, //如果页面有keep-alive缓存功能,这个函数会触发
  385. };
  386. </script>
  387. <style lang='less' scoped>
  388. .swiper-scrollbar {
  389. height: 4px;
  390. background-color: #fff;
  391. overflow: hidden;
  392. }
  393. /deep/.swiper-scrollbar-drag {
  394. background-color: #930909;
  395. }
  396. @import "./swiper.css";
  397. .likeAddAnimate-enter-active,
  398. .likeAddAnimate-leave-active {
  399. transition: all 2s ease;
  400. }
  401. .likeAddAnimate-enter,
  402. .likeAddAnimate-leave {
  403. transform: translateY(0) scale(0);
  404. opacity: 0;
  405. }
  406. .likeAddAnimate-enter-to,
  407. .likeAddAnimate-leave-to {
  408. transform: translateY(-50px) scale(1.2);
  409. opacity: 1;
  410. }
  411. .Rbottom {
  412. transition: all 0.5s;
  413. z-index: 11;
  414. position: absolute;
  415. bottom: 24px;
  416. right: 0px;
  417. width: 100%;
  418. // 热点列表页面
  419. .hotBox {
  420. transition: opacity .3s;
  421. opacity: 0;
  422. pointer-events: none;
  423. position: fixed;
  424. z-index: 99;
  425. top: 0;
  426. left: 0;
  427. width: 100%;
  428. height: 100%;
  429. backdrop-filter: blur(4px);
  430. .hot_main {
  431. padding: 25px 50px 15px;
  432. position: absolute;
  433. top: 50%;
  434. left: 50%;
  435. transform: translate(-50%, -50%);
  436. width: 1100px;
  437. height: 700px;
  438. background-image: url('../assets/img/LeftTop/hotBox.png');
  439. background-size: 100% 100%;
  440. .hot_close {
  441. cursor: pointer;
  442. position: absolute;
  443. background-image: url('../assets/img/Goods/shareClose.png');
  444. background-size: 100% 100%;
  445. right: -20px;
  446. top: -20px;
  447. z-index: 11;
  448. width: 48px;
  449. height: 48px;
  450. }
  451. .hot_title {
  452. font-size: 24px;
  453. color: #D8B275;
  454. margin-bottom: 15px;
  455. }
  456. .hot_search {
  457. display: flex;
  458. height: 40px;
  459. justify-content: space-between;
  460. .el-input {
  461. width: 860px;
  462. /deep/input {
  463. background-color: transparent;
  464. border-radius: 20px;
  465. border: 1px solid #D8B275;
  466. color: #fff;
  467. }
  468. /deep/.el-input__count-inner {
  469. background-color: transparent;
  470. color: #fff;
  471. }
  472. }
  473. .hot_btn {
  474. width: 100px;
  475. height: 40px;
  476. background-color: #D8B275;
  477. border-radius: 20px;
  478. cursor: pointer;
  479. text-align: center;
  480. line-height: 40px;
  481. color: #930909;
  482. font-size: 14px;
  483. }
  484. }
  485. .hot_his {
  486. display: flex;
  487. flex-wrap: wrap;
  488. position: relative;
  489. padding-right: 120px;
  490. .hot_clearHis {
  491. position: absolute;
  492. bottom: 0;
  493. right: 0;
  494. cursor: pointer;
  495. padding-left: 20px;
  496. background: url('../assets/img/LeftTop/delete.png') left center no-repeat;
  497. background-size: 17px 17px;
  498. color: #fff;
  499. font-size: 14px;
  500. }
  501. .hot_hisRow {
  502. height: 30px;
  503. line-height: 30px;
  504. padding: 0 8px;
  505. background-color: #EEEEEE;
  506. margin-right: 15px;
  507. margin-top: 15px;
  508. cursor: pointer;
  509. border-radius: 15px;
  510. max-width: 110px;
  511. overflow: hidden;
  512. text-overflow: ellipsis;
  513. white-space: nowrap;
  514. }
  515. }
  516. .hot_list::-webkit-scrollbar {
  517. /*滚动条整体样式*/
  518. width: 5px;
  519. /*高宽分别对应横竖滚动条的尺寸*/
  520. height: 1px;
  521. }
  522. .hot_list::-webkit-scrollbar-thumb {
  523. /*滚动条里面小方块*/
  524. border-radius: 1px;
  525. -webkit-box-shadow: inset 0 0 5px transparent;
  526. background: #d8b275;
  527. }
  528. .hot_list::-webkit-scrollbar-track {
  529. /*滚动条里面轨道*/
  530. -webkit-box-shadow: inset 0 0 5px transparent;
  531. border-radius: 10px;
  532. background: transparent;
  533. }
  534. .hot_list {
  535. padding-right: 15px;
  536. margin-top: 28px;
  537. height: 450px;
  538. overflow-y: auto;
  539. .hot_listRow {
  540. cursor: pointer;
  541. border-bottom: 1px solid #fff;
  542. height: 50px;
  543. line-height: 48px;
  544. color: #fff;
  545. font-size: 16px;
  546. &:nth-of-type(1) {
  547. border-top: 1px solid #fff;
  548. }
  549. &:hover {
  550. color: #d8b275;
  551. border-bottom: 1px solid #d8b275;
  552. position: relative;
  553. &::before {
  554. content: '';
  555. position: absolute;
  556. top: -1px;
  557. left: 0;
  558. width: 100%;
  559. height: 1px;
  560. background-color: #D8B275;
  561. }
  562. }
  563. }
  564. }
  565. }
  566. }
  567. .activeHotBox {
  568. opacity: 1;
  569. pointer-events: auto;
  570. }
  571. .box1 {
  572. padding: 0 25px;
  573. width: 100%;
  574. display: flex;
  575. justify-content: space-between;
  576. .mainrr {
  577. display: flex;
  578. .row {
  579. position: relative;
  580. cursor: pointer;
  581. width: 50px;
  582. text-align: center;
  583. margin-left: 18px;
  584. color: #fff;
  585. &>img {
  586. width: 50px;
  587. }
  588. p {
  589. font-size: 12px;
  590. }
  591. .likeMove {
  592. color: #930909;
  593. position: absolute;
  594. top: 10px;
  595. width: 100%;
  596. text-align: center;
  597. }
  598. }
  599. .active2 {
  600. color: #930909;
  601. font-weight: 700;
  602. p {
  603. font-size: 12px;
  604. }
  605. }
  606. }
  607. .mainll {
  608. .row {
  609. width: 80px;
  610. margin-left: 0;
  611. }
  612. }
  613. }
  614. .box2 {
  615. overflow: hidden;
  616. transition: height 0.5s;
  617. margin-top: 5px;
  618. width: 100%;
  619. height: 170px;
  620. background-color: #d8b275;
  621. padding: 15px 25px 0;
  622. .swiper-container {
  623. cursor: grab;
  624. height: 100%;
  625. .swiper-slide {
  626. cursor: pointer;
  627. height: 120px;
  628. img {
  629. width: 100%;
  630. height: 110px;
  631. object-fit: cover;
  632. }
  633. p {
  634. text-align: center;
  635. height: 30px;
  636. line-height: 30px;
  637. color: #ffffff;
  638. font-size: 14px;
  639. }
  640. .plan {
  641. height: 4px;
  642. background-color: #930909;
  643. }
  644. .txtActive {
  645. color: #930909;
  646. }
  647. }
  648. .active {
  649. img {
  650. border: 3px solid #930909;
  651. }
  652. }
  653. }
  654. }
  655. }
  656. .shareBox {
  657. z-index: 11;
  658. position: fixed;
  659. top: 0;
  660. left: 0;
  661. width: 100%;
  662. height: 100%;
  663. opacity: 0;
  664. pointer-events: none;
  665. backdrop-filter: blur(4px);
  666. transition: opacity 0.5s;
  667. .shareMain {
  668. padding: 40px 30px 0;
  669. position: absolute;
  670. top: 50%;
  671. left: 50%;
  672. transform: translate(-50%, -50%);
  673. width: 450px;
  674. height: 650px;
  675. background-image: url("../assets/img/Goods/shareBac.png");
  676. background-size: 100% 100%;
  677. text-align: center;
  678. .close {
  679. width: 48px;
  680. height: 48px;
  681. cursor: pointer;
  682. position: absolute;
  683. right: -24px;
  684. top: -24px;
  685. background-image: url("../assets/img/Goods/shareClose.png");
  686. background-size: 100% 100%;
  687. }
  688. h3 {
  689. text-align: left;
  690. color: #d8b275;
  691. font-size: 24px;
  692. margin-bottom: 50px;
  693. }
  694. p {
  695. font-size: 20px;
  696. color: #ffffff;
  697. margin-bottom: 40px;
  698. }
  699. img {
  700. width: 240px;
  701. margin-bottom: 50px;
  702. }
  703. .btnn {
  704. cursor: pointer;
  705. width: 280px;
  706. margin: 0 auto;
  707. height: 60px;
  708. border-radius: 30px;
  709. border: 2px solid #d8b275;
  710. line-height: 58px;
  711. font-size: 20px;
  712. color: #ffffff;
  713. }
  714. }
  715. }
  716. .shareBoxShow {
  717. opacity: 1;
  718. pointer-events: auto;
  719. }
  720. </style>