|
@@ -1,5 +1,5 @@
|
|
|
<template>
|
|
|
- <div class="hotspot" v-if="!isMobile">
|
|
|
+ <div class="hotspot" v-if="!isMobile">
|
|
|
<img
|
|
|
class="vhotspot"
|
|
|
:src="require(`@/assets/images/project/kuangti/hotspot_${theme}.png`)"
|
|
@@ -25,7 +25,12 @@
|
|
|
alt=""
|
|
|
/>
|
|
|
<div class="imgmain">
|
|
|
- <video controlslist="nodownload noremoteplayback" disablePictureInPicture controls autoplay>
|
|
|
+ <video
|
|
|
+ controlslist="nodownload noremoteplayback"
|
|
|
+ disablePictureInPicture
|
|
|
+ controls
|
|
|
+ autoplay
|
|
|
+ >
|
|
|
<source :src="hotspot.video[active].url" type="video/mp4" />
|
|
|
</video>
|
|
|
</div>
|
|
@@ -49,39 +54,42 @@
|
|
|
|
|
|
<div v-else class="mbhotspot">
|
|
|
<img
|
|
|
- class="vhotspot"
|
|
|
- :src="require(`@/assets/images/mobile/kuangti/hotspot_${theme}.png`)"
|
|
|
- alt=""
|
|
|
- />
|
|
|
- <div class="brightness"></div>
|
|
|
- <img
|
|
|
@click="$emit('close')"
|
|
|
class="close"
|
|
|
:src="require('@/assets/images/project/icon/close.png')"
|
|
|
alt=""
|
|
|
/>
|
|
|
<div class="mbhcon">
|
|
|
- <div class="title">{{ hotspot.title }}</div>
|
|
|
- <div class="swcon" v-swiper:mySwipervd="swiperOption">
|
|
|
- <ul class="swiper-wrapper swiper-wrapper-n">
|
|
|
- <div
|
|
|
- class="swiper-slide"
|
|
|
- v-for="(item, index) in hotspot.video"
|
|
|
- :key="index"
|
|
|
- >
|
|
|
- <div class="sl-item">
|
|
|
- <video controlslist="nodownload noremoteplayback" disablePictureInPicture controls autoplay>
|
|
|
- <source :src="item.url" type="video/mp4" />
|
|
|
- </video>
|
|
|
- </div>
|
|
|
+ <div class="img-con">
|
|
|
+ <img
|
|
|
+ class="aa"
|
|
|
+ v-if="hotspot.video.length > 1"
|
|
|
+ :src="require('@/assets/images/project/icon/hotspot_l.png')"
|
|
|
+ alt=""
|
|
|
+ @click="handlePage('prev')"
|
|
|
+ />
|
|
|
+ <div class="imgmain" :class="{ bigImg: !hotspot.content }">
|
|
|
+ <video
|
|
|
+ controlslist="nodownload noremoteplayback"
|
|
|
+ disablePictureInPicture
|
|
|
+ controls
|
|
|
+ autoplay
|
|
|
+ >
|
|
|
+ <source :src="hotspot.video[active].url" type="video/mp4" />
|
|
|
+ </video>
|
|
|
</div>
|
|
|
- </ul>
|
|
|
- <div class="swiper-pagination pagination" slot="pagination"></div>
|
|
|
- </div>
|
|
|
-
|
|
|
+ <img
|
|
|
+ class="aa"
|
|
|
+ v-if="hotspot.video.length > 1"
|
|
|
+ :src="require('@/assets/images/project/icon/hotspot_r.png')"
|
|
|
+ alt=""
|
|
|
+ @click="handlePage('next')"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
|
|
|
- <div v-if="hotspot.content" class="desc">
|
|
|
- <div v-html="handleContent(hotspot.content,14)"></div>
|
|
|
+ <div class="desc">
|
|
|
+ <div class="title">{{ hotspot.title }}</div>
|
|
|
+ <div v-html="handleContent(hotspot.content, 14)"></div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -92,7 +100,6 @@ import { directive } from "vue-awesome-swiper";
|
|
|
// import style (<= Swiper 5.x)
|
|
|
import "swiper/css/swiper.css";
|
|
|
|
|
|
-
|
|
|
export default {
|
|
|
directives: {
|
|
|
swiper: directive,
|
|
@@ -101,7 +108,6 @@ export default {
|
|
|
data() {
|
|
|
return {
|
|
|
active: 0,
|
|
|
- mbactive: 0,
|
|
|
};
|
|
|
},
|
|
|
methods: {
|
|
@@ -122,26 +128,6 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
},
|
|
|
- computed: {
|
|
|
- swiperOption() {
|
|
|
- let that = this;
|
|
|
- return {
|
|
|
- slidesPerView: "auto",
|
|
|
- autoplay: false,
|
|
|
- centeredSlides: true,
|
|
|
- watchSlidesProgress: true,
|
|
|
- loop: false,
|
|
|
- pagination: {
|
|
|
- el: ".swiper-pagination",
|
|
|
- },
|
|
|
- on: {
|
|
|
- slideChangeTransitionEnd: function() {
|
|
|
- that.mbactive = this.realIndex;
|
|
|
- },
|
|
|
- },
|
|
|
- };
|
|
|
- },
|
|
|
- },
|
|
|
};
|
|
|
</script>
|
|
|
|
|
@@ -195,164 +181,159 @@ export default {
|
|
|
z-index: 99;
|
|
|
font-size: 20px;
|
|
|
}
|
|
|
-.hotspotcon {
|
|
|
+ .hotspotcon {
|
|
|
width: 90%;
|
|
|
top: 50%;
|
|
|
left: 50%;
|
|
|
transform: translate(-50%, -50%);
|
|
|
position: absolute;
|
|
|
- .img-con {
|
|
|
- display: flex;
|
|
|
- width: 90%;
|
|
|
- align-items: center;
|
|
|
- justify-content: space-between;
|
|
|
- position: relative;
|
|
|
- top: 50%;
|
|
|
- left: 50%;
|
|
|
- transform: translate(-50%, -50%);
|
|
|
- position: absolute;
|
|
|
- .imgmain {
|
|
|
+ .img-con {
|
|
|
+ display: flex;
|
|
|
width: 90%;
|
|
|
- max-height: 76vh;
|
|
|
- overflow-x: hidden;
|
|
|
- overflow-y: auto;
|
|
|
- margin: 0 auto;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: space-between;
|
|
|
position: relative;
|
|
|
- video {
|
|
|
- width: 89%;
|
|
|
+ top: 50%;
|
|
|
+ left: 50%;
|
|
|
+ transform: translate(-50%, -50%);
|
|
|
+ position: absolute;
|
|
|
+ .imgmain {
|
|
|
+ width: 100%;
|
|
|
+ max-height: 86vh;
|
|
|
+ overflow-x: hidden;
|
|
|
+ overflow-y: auto;
|
|
|
+ margin: 0 auto;
|
|
|
+ position: relative;
|
|
|
+ video {
|
|
|
+ width: 100%;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .aa {
|
|
|
+ width: 30px;
|
|
|
+ height: auto;
|
|
|
+ cursor: pointer;
|
|
|
+ }
|
|
|
+ .pagna {
|
|
|
+ position: absolute;
|
|
|
+ bottom: -40px;
|
|
|
+ left: 50%;
|
|
|
+ transform: translateX(-50%);
|
|
|
+ text-align: center;
|
|
|
+ z-index: 999;
|
|
|
+ font-size: 18px;
|
|
|
+ color: rgba(255, 255, 255, 0.8);
|
|
|
}
|
|
|
}
|
|
|
- .aa {
|
|
|
- width: 30px;
|
|
|
- height: auto;
|
|
|
- cursor: pointer;
|
|
|
- }
|
|
|
- .pagna {
|
|
|
- position: absolute;
|
|
|
- bottom: -40px;
|
|
|
- left: 50%;
|
|
|
- transform: translateX(-50%);
|
|
|
- text-align: center;
|
|
|
- z-index: 999;
|
|
|
- font-size: 18px;
|
|
|
- color: rgba(255, 255, 255, 0.8);
|
|
|
+ .desc {
|
|
|
+ width: 80%;
|
|
|
+ font-size: 16px;
|
|
|
+ text-align: left;
|
|
|
+ line-height: 1.8;
|
|
|
+ padding-right: 14px;
|
|
|
+ max-height: 120px;
|
|
|
+ margin: 20px auto 0;
|
|
|
+ overflow-y: auto;
|
|
|
}
|
|
|
}
|
|
|
- .desc {
|
|
|
- width: 80%;
|
|
|
- font-size: 16px;
|
|
|
- text-align: left;
|
|
|
- line-height: 1.8;
|
|
|
- padding-right: 14px;
|
|
|
- max-height: 120px;
|
|
|
- margin: 20px auto 0;
|
|
|
- overflow-y: auto;
|
|
|
- }
|
|
|
- }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
.mbhotspot {
|
|
|
- width: 96%;
|
|
|
- margin: 60px auto 0;
|
|
|
- position: relative;
|
|
|
- .vhotspot {
|
|
|
- width: 100%;
|
|
|
- position: relative;
|
|
|
- pointer-events: none;
|
|
|
- }
|
|
|
-
|
|
|
- .brightness {
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
+ position: fixed;
|
|
|
+ background: #000;
|
|
|
+ left: 0;
|
|
|
+ top: 0;
|
|
|
+ z-index: 999999;
|
|
|
+ .close {
|
|
|
position: absolute;
|
|
|
- width: 100%;
|
|
|
- height: 100%;
|
|
|
- left: 0;
|
|
|
- top: 0;
|
|
|
- z-index: -1;
|
|
|
- clip-path: polygon(1% 11%, 10% 2%, 99% 2%, 99% 89%, 92% 99%, 1% 99%);
|
|
|
- }
|
|
|
- .close{
|
|
|
- position: absolute;
|
|
|
- top: 26px;
|
|
|
- right: 16px;
|
|
|
- width: 14px;
|
|
|
- z-index: 1000;
|
|
|
+ top: 26px;
|
|
|
+ right: 16px;
|
|
|
+ width: 14px;
|
|
|
+ z-index: 1000;
|
|
|
}
|
|
|
.mbhcon {
|
|
|
position: absolute;
|
|
|
- top: 0;
|
|
|
- left: 0;
|
|
|
+ top: 50%;
|
|
|
width: 100%;
|
|
|
- .title {
|
|
|
- position: absolute;
|
|
|
- top: 14px;
|
|
|
- left: 40px;
|
|
|
- display: inline-block;
|
|
|
- font-size: 16px;
|
|
|
- margin: 0px auto;
|
|
|
- width: 50vw;
|
|
|
- }
|
|
|
- .swcon {
|
|
|
+ left: 50%;
|
|
|
+ transform: translate(-50%, -50%);
|
|
|
+ height: 100%;
|
|
|
+ .img-con {
|
|
|
+ display: flex;
|
|
|
+ height: 100%;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: space-between;
|
|
|
position: relative;
|
|
|
- margin: 60px auto 0;
|
|
|
- width: 84%;
|
|
|
- .swiper-wrapper {
|
|
|
- height: 250px;
|
|
|
- padding: 0;
|
|
|
- .swiper-slide {
|
|
|
- width: 100%;
|
|
|
- transform-style: preserve-3d;
|
|
|
- position: relative;
|
|
|
- height: 100%;
|
|
|
- margin: 0 auto;
|
|
|
- transform: translate3d(0, 0, 0);
|
|
|
- .sl-item {
|
|
|
- position: absolute;
|
|
|
- top: 0;
|
|
|
- left: 50%;
|
|
|
- height: 100%;
|
|
|
- transform: translateX(-50%);
|
|
|
- width: 100%;
|
|
|
- overflow: hidden;
|
|
|
- > video {
|
|
|
- width: 100%;
|
|
|
- transform: translateX(-50%);
|
|
|
- position: absolute;
|
|
|
- left: 50%;
|
|
|
- }
|
|
|
- }
|
|
|
+ overflow: hidden;
|
|
|
+ .imgmain {
|
|
|
+ width: 100%;
|
|
|
+ height: auto;
|
|
|
+ min-height: 100%;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ video {
|
|
|
+ cursor: pointer;
|
|
|
+ max-width: 100%;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- .pagination {
|
|
|
- position: static;
|
|
|
- margin-top: 4px;
|
|
|
- z-index: 999;
|
|
|
- & /deep/ .swiper-pagination-bullet,
|
|
|
- & /deep/ .swiper-pagination-bullet-active {
|
|
|
- background-color: #fff!important;
|
|
|
+ @h: 100%;
|
|
|
+ .bigImg {
|
|
|
+ max-height: @h;
|
|
|
+ margin: 0;
|
|
|
+ > img {
|
|
|
+ max-height: @h;
|
|
|
}
|
|
|
- & /deep/ .swiper-pagination-bullet-active {
|
|
|
- background: #fff !important;
|
|
|
+ }
|
|
|
+ @pos: 14px;
|
|
|
+ .aa {
|
|
|
+ position: absolute;
|
|
|
+ width: 10px;
|
|
|
+ height: auto;
|
|
|
+ cursor: pointer;
|
|
|
+ top: 50%;
|
|
|
+ transform: translateY(-50%);
|
|
|
+ left: @pos;
|
|
|
+ &:last-of-type {
|
|
|
+ right: @pos;
|
|
|
+ left: unset;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
.desc {
|
|
|
+ position: absolute;
|
|
|
+ z-index: 99999;
|
|
|
+ bottom: 8px;
|
|
|
+ left: 50%;
|
|
|
+ width: 100%;
|
|
|
+ padding: 2% 5%;
|
|
|
+ transform: translateX(-50%);
|
|
|
+ margin: 0;
|
|
|
text-align: justify;
|
|
|
- width: 85%;
|
|
|
- padding-right: 14px;
|
|
|
- margin: 10px auto 0;
|
|
|
- p {
|
|
|
+ min-height: 10vh;
|
|
|
+ max-height: 34vh;
|
|
|
+ background: rgba(0, 0, 0, 0.5);
|
|
|
+ .title {
|
|
|
+ width: 100%;
|
|
|
+ display: inline-block;
|
|
|
font-size: 16px;
|
|
|
- font-weight: bold;
|
|
|
+ margin-bottom: 10px;
|
|
|
}
|
|
|
- div {
|
|
|
- font-size: 14px;
|
|
|
- margin-top: 10px;
|
|
|
- line-height: 1.5;
|
|
|
- max-height: 50vh;
|
|
|
- overflow-y: auto;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .fullcon {
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
+ .img-con {
|
|
|
+ height: 100%;
|
|
|
+ .imgmain {
|
|
|
+ width: 100%;
|
|
|
+ height: auto;
|
|
|
+ min-height: 100%;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
}
|
|
|
}
|
|
|
}
|