|
@@ -17,6 +17,7 @@ const isShowGuide = ref(false)
|
|
const goScenefu = () => {
|
|
const goScenefu = () => {
|
|
store.mode = curMode.value;
|
|
store.mode = curMode.value;
|
|
store.currentInfoPart = curInfoPart.value;
|
|
store.currentInfoPart = curInfoPart.value;
|
|
|
|
+ console.log(curInfoPart.value)
|
|
router.push({
|
|
router.push({
|
|
path: '/scene',
|
|
path: '/scene',
|
|
query: {
|
|
query: {
|
|
@@ -25,13 +26,35 @@ const goScenefu = () => {
|
|
})
|
|
})
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
|
|
+const isMobile = ref(false)
|
|
|
|
+
|
|
|
|
+const isMobileDevice = () => {
|
|
|
|
+ const mobileRegex = /Mobi|Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i;
|
|
|
|
+ return mobileRegex.test(navigator.userAgent);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+const time =ref()
|
|
|
|
+
|
|
|
|
+
|
|
onMounted(() => {
|
|
onMounted(() => {
|
|
if (Object.keys(store.currentInfoPart).length != 0) {
|
|
if (Object.keys(store.currentInfoPart).length != 0) {
|
|
curInfoPart.value = store.currentInfoPart
|
|
curInfoPart.value = store.currentInfoPart
|
|
}
|
|
}
|
|
curMoudle.value = 'construction'
|
|
curMoudle.value = 'construction'
|
|
curMode.value = store.dataAll.modeList[0]
|
|
curMode.value = store.dataAll.modeList[0]
|
|
-
|
|
|
|
|
|
+ isMobile.value = isMobileDevice()
|
|
|
|
+
|
|
|
|
+ // 重新获取高度
|
|
|
|
+ // @ts-ignore
|
|
|
|
+ time.current = window.setTimeout(() => {
|
|
|
|
+ // 根元素
|
|
|
|
+ const dom: HTMLDivElement | null = document.querySelector("#app");
|
|
|
|
+ if (dom && document.documentElement.clientWidth < 1000) {
|
|
|
|
+ dom.style.height = document.documentElement.clientHeight + "px";
|
|
|
|
+ dom.style.width = document.documentElement.clientWidth + "px";
|
|
|
|
+ }
|
|
|
|
+ }, 100);
|
|
})
|
|
})
|
|
|
|
|
|
</script>
|
|
</script>
|
|
@@ -77,7 +100,7 @@ onMounted(() => {
|
|
|
|
|
|
<!-- 船体列表 -->
|
|
<!-- 船体列表 -->
|
|
<div class="list-box"
|
|
<div class="list-box"
|
|
- :style="{ backgroundImage: curSelect.name == '顶甲板' ? `url(${baseURl}/selectEnd.png)` : curSelect.name == '救生艇' ? `url(${baseURl}/selectLast.png)` : '' }">
|
|
|
|
|
|
+ :style="{ backgroundImage: curSelect.name == '顶甲板' && !isMobile ? `url(${baseURl}/selectEnd.png)` : curSelect.name == '救生艇' && !isMobile ? `url(${baseURl}/selectLast.png)` : '' }">
|
|
<div class="stereoscopic-box"
|
|
<div class="stereoscopic-box"
|
|
@click="() => { curSelect = {}, curMode = store.dataAll.modeList[0], curInfoPart = {}, isShowGuide = false }">
|
|
@click="() => { curSelect = {}, curMode = store.dataAll.modeList[0], curInfoPart = {}, isShowGuide = false }">
|
|
{{ store.dataAll.modeList[0].title }}
|
|
{{ store.dataAll.modeList[0].title }}
|
|
@@ -87,12 +110,13 @@ onMounted(() => {
|
|
<img class="bottomAc" src="@/assets/images/bottomAc.png" alt=""> -->
|
|
<img class="bottomAc" src="@/assets/images/bottomAc.png" alt=""> -->
|
|
|
|
|
|
<div class="list-item" :class="{ 'active': item.name == curSelect.name }"
|
|
<div class="list-item" :class="{ 'active': item.name == curSelect.name }"
|
|
- @click="() => { index === store.dataAll.modeList[1].content.length - 1 ? goScenefu() : (curSelect = item, curMode = store.dataAll.modeList[1], curInfoPart = item, isShowGuide = true) }"
|
|
|
|
|
|
+ @click="() => { index === store.dataAll.modeList[1].content.length - 1 ? (curInfoPart = item, goScenefu()) : (curSelect = item, curMode = store.dataAll.modeList[1], curInfoPart = item, isShowGuide = true) }"
|
|
v-for="(item, index) in store.dataAll.modeList[1].content" :key="item.id"
|
|
v-for="(item, index) in store.dataAll.modeList[1].content" :key="item.id"
|
|
- :style="{ borderBottom: index == store.dataAll.modeList[1].content.length - 1 ? 'none' : '', background: index == store.dataAll.modeList[1].content.length - 1 || index == 0 ? 'none' : '' }">
|
|
|
|
|
|
+ :style="{ borderBottom: index == store.dataAll.modeList[1].content.length - 1 ? 'none' : '', background: (index == store.dataAll.modeList[1].content.length - 1 || index == 0) && !isMobile ? 'none' : '' }">
|
|
{{ item.number + item.name }}
|
|
{{ item.number + item.name }}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
+ <img v-show="isMobile" class="down-line" src="@/assets/images/down-line.png" alt="">
|
|
</div>
|
|
</div>
|
|
<!-- 信息框 -->
|
|
<!-- 信息框 -->
|
|
<div class="info-box-detail" v-show="Object.keys(curSelect).length > 0 && isShowGuide">
|
|
<div class="info-box-detail" v-show="Object.keys(curSelect).length > 0 && isShowGuide">
|
|
@@ -100,31 +124,32 @@ onMounted(() => {
|
|
<div class="title">{{ curSelect.number + curSelect.name }}</div>
|
|
<div class="title">{{ curSelect.number + curSelect.name }}</div>
|
|
<div class="line"></div>
|
|
<div class="line"></div>
|
|
<div class="bottom-content">
|
|
<div class="bottom-content">
|
|
- <div>{{ curSelect.info }}</div>
|
|
|
|
|
|
+ <div v-show="!isMobile">{{ curSelect.info }}</div>
|
|
<img @click="goScenefu()" :src="`${baseURl}/plane/pic${curSelect.id}.png`" alt="">
|
|
<img @click="goScenefu()" :src="`${baseURl}/plane/pic${curSelect.id}.png`" alt="">
|
|
|
|
+ <div v-show="isMobile">{{ curSelect.info }}</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
-
|
|
|
|
<!-- 指引 -->
|
|
<!-- 指引 -->
|
|
- <div class="guide-box" v-if="Object.keys(curSelect).length > 0 && isShowGuide && curSelect.name != '救生艇'"
|
|
|
|
|
|
+ <div class="guide-box" v-if="Object.keys(curSelect).length > 0 && curSelect.name != '救生艇'"
|
|
:style="{ top: curInfoPart.guideP.top, left: curInfoPart.guideP.left }">
|
|
:style="{ top: curInfoPart.guideP.top, left: curInfoPart.guideP.left }">
|
|
- <img class="hot-icon" :style="{ top: curInfoPart.hotP.top, left: curInfoPart.hotP.left }" @click="goScenefu()"
|
|
|
|
|
|
+ <img v-show="isMobile ? true : isShowGuide" class="hot-icon"
|
|
|
|
+ :style="{ top: curInfoPart.hotP.top, left: curInfoPart.hotP.left }" @click="goScenefu()"
|
|
src="@/assets/images/hot.png" alt="">
|
|
src="@/assets/images/hot.png" alt="">
|
|
- <img class="line"
|
|
|
|
|
|
+ <img v-show="isShowGuide" class="line"
|
|
:style="{ width: curInfoPart.lineP.width, height: curInfoPart.lineP.height, left: curInfoPart.lineP.left }"
|
|
:style="{ width: curInfoPart.lineP.width, height: curInfoPart.lineP.height, left: curInfoPart.lineP.left }"
|
|
:src="`${baseURl}/plane/line${curSelect.id}.png`" alt="">
|
|
:src="`${baseURl}/plane/line${curSelect.id}.png`" alt="">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
-
|
|
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
|
|
|
|
<style lang='less' scoped>
|
|
<style lang='less' scoped>
|
|
.detail-page {
|
|
.detail-page {
|
|
- width: 100vw;
|
|
|
|
- height: 100vh;
|
|
|
|
|
|
+ width: 100%;
|
|
|
|
+ height: 100%;
|
|
background: url(@/assets/images/bg.png);
|
|
background: url(@/assets/images/bg.png);
|
|
background-size: 100% 100%;
|
|
background-size: 100% 100%;
|
|
|
|
+ overflow: hidden;
|
|
|
|
|
|
.logo-welcome {
|
|
.logo-welcome {
|
|
width: 40vw;
|
|
width: 40vw;
|
|
@@ -227,25 +252,44 @@ onMounted(() => {
|
|
position: absolute;
|
|
position: absolute;
|
|
left: 0;
|
|
left: 0;
|
|
top: 0;
|
|
top: 0;
|
|
|
|
+ overflow: hidden;
|
|
|
|
|
|
.img-map {
|
|
.img-map {
|
|
position: absolute;
|
|
position: absolute;
|
|
left: 5%;
|
|
left: 5%;
|
|
top: 5%;
|
|
top: 5%;
|
|
|
|
+
|
|
|
|
+ @media screen and (max-width: 1000px) {
|
|
|
|
+ left: 3vw;
|
|
|
|
+ top: 0vh;
|
|
|
|
+ width: 150px;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
.img-left {
|
|
.img-left {
|
|
position: absolute;
|
|
position: absolute;
|
|
left: 26px;
|
|
left: 26px;
|
|
top: 50%;
|
|
top: 50%;
|
|
- transform: translateY(-50%)
|
|
|
|
|
|
+ transform: translateY(-50%);
|
|
|
|
+
|
|
|
|
+ @media screen and (max-width: 1000px) {
|
|
|
|
+ width: 20px;
|
|
|
|
+ left: 5px;
|
|
|
|
+ height: 100%;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
.img-right {
|
|
.img-right {
|
|
position: absolute;
|
|
position: absolute;
|
|
right: 26px;
|
|
right: 26px;
|
|
top: 50%;
|
|
top: 50%;
|
|
- transform: translateY(-50%)
|
|
|
|
|
|
+ transform: translateY(-50%);
|
|
|
|
+
|
|
|
|
+ @media screen and (max-width: 1000px) {
|
|
|
|
+ width: 20px;
|
|
|
|
+ right: 5px;
|
|
|
|
+ height: 100%;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
.img-bottom {
|
|
.img-bottom {
|
|
@@ -270,6 +314,15 @@ onMounted(() => {
|
|
padding-bottom: 1%;
|
|
padding-bottom: 1%;
|
|
box-sizing: border-box;
|
|
box-sizing: border-box;
|
|
|
|
|
|
|
|
+ @media screen and (max-width: 1000px) {
|
|
|
|
+ width: 25vw;
|
|
|
|
+ height: 98%;
|
|
|
|
+ right: 1vw;
|
|
|
|
+ top: 1%;
|
|
|
|
+ background: url(@/assets/images/list-bg-mo.png);
|
|
|
|
+ background-size: 100% 100%;
|
|
|
|
+ }
|
|
|
|
+
|
|
.stereoscopic-box {
|
|
.stereoscopic-box {
|
|
width: 100%;
|
|
width: 100%;
|
|
height: 10%;
|
|
height: 10%;
|
|
@@ -282,6 +335,15 @@ onMounted(() => {
|
|
font-size: 1.4em;
|
|
font-size: 1.4em;
|
|
letter-spacing: 2px;
|
|
letter-spacing: 2px;
|
|
cursor: pointer;
|
|
cursor: pointer;
|
|
|
|
+
|
|
|
|
+ @media screen and (max-width: 1000px) {
|
|
|
|
+ font-size: 1.2em;
|
|
|
|
+ margin-top: 4%;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ ::-webkit-scrollbar {
|
|
|
|
+ width: 0;
|
|
}
|
|
}
|
|
|
|
|
|
.list-bottom {
|
|
.list-bottom {
|
|
@@ -297,6 +359,16 @@ onMounted(() => {
|
|
letter-spacing: 2px;
|
|
letter-spacing: 2px;
|
|
position: relative;
|
|
position: relative;
|
|
|
|
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ @media screen and (max-width: 1000px) {
|
|
|
|
+ width: 25vw;
|
|
|
|
+ height: 80%;
|
|
|
|
+ overflow: auto;
|
|
|
|
+ margin-bottom: 10%;
|
|
|
|
+ margin-top: 8%;
|
|
|
|
+ }
|
|
|
|
+
|
|
.topAc {
|
|
.topAc {
|
|
width: 100%;
|
|
width: 100%;
|
|
position: absolute;
|
|
position: absolute;
|
|
@@ -320,6 +392,11 @@ onMounted(() => {
|
|
font-size: 0.7em;
|
|
font-size: 0.7em;
|
|
position: relative;
|
|
position: relative;
|
|
z-index: 2;
|
|
z-index: 2;
|
|
|
|
+
|
|
|
|
+ @media screen and (max-width: 1000px) {
|
|
|
|
+ width: 90%;
|
|
|
|
+ text-align: center;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
.active {
|
|
.active {
|
|
@@ -327,9 +404,24 @@ onMounted(() => {
|
|
border-bottom: none;
|
|
border-bottom: none;
|
|
width: 96%;
|
|
width: 96%;
|
|
font-weight: bold;
|
|
font-weight: bold;
|
|
|
|
+
|
|
|
|
+ @media screen and (max-width: 1000px) {
|
|
|
|
+ width: 90%;
|
|
|
|
+ background: url(@/assets/images/active-bg.png);
|
|
|
|
+ background-size: 100% 100%;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ .down-line {
|
|
|
|
+ position: absolute;
|
|
|
|
+ bottom: 10px;
|
|
|
|
+ width: 80%;
|
|
|
|
+ left: 50%;
|
|
|
|
+ transform: translateX(-50%);
|
|
|
|
+ z-index: 2;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
.info-box-detail {
|
|
.info-box-detail {
|
|
@@ -343,6 +435,17 @@ onMounted(() => {
|
|
right: 25%;
|
|
right: 25%;
|
|
padding: 20px 20px;
|
|
padding: 20px 20px;
|
|
z-index: 2;
|
|
z-index: 2;
|
|
|
|
+ box-sizing: border-box;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ @media screen and (max-width: 1000px) {
|
|
|
|
+ height: 70vh;
|
|
|
|
+ right: 27%;
|
|
|
|
+ top: 16%;
|
|
|
|
+ padding: 0;
|
|
|
|
+ width: 22vw;
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
|
|
.close-icon {
|
|
.close-icon {
|
|
width: 35px;
|
|
width: 35px;
|
|
@@ -351,12 +454,24 @@ onMounted(() => {
|
|
position: absolute;
|
|
position: absolute;
|
|
top: 10px;
|
|
top: 10px;
|
|
right: 10px;
|
|
right: 10px;
|
|
|
|
+
|
|
|
|
+ @media screen and (max-width: 1000px) {
|
|
|
|
+ width: 20px;
|
|
|
|
+ height: 20px;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
.title {
|
|
.title {
|
|
color: #FFFFFF;
|
|
color: #FFFFFF;
|
|
font-weight: bold;
|
|
font-weight: bold;
|
|
font-size: 1.2em;
|
|
font-size: 1.2em;
|
|
|
|
+
|
|
|
|
+ @media screen and (max-width: 1000px) {
|
|
|
|
+ font-size: 0.8em;
|
|
|
|
+ margin-top: 5px;
|
|
|
|
+ padding-left: 10px;
|
|
|
|
+ padding-top: 5px;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
.line {
|
|
.line {
|
|
@@ -364,23 +479,47 @@ onMounted(() => {
|
|
height: 2px;
|
|
height: 2px;
|
|
background: linear-gradient(to right, rgba(63, 151, 188, 1), rgba(63, 151, 188, 0));
|
|
background: linear-gradient(to right, rgba(63, 151, 188, 1), rgba(63, 151, 188, 0));
|
|
margin: 10px 0;
|
|
margin: 10px 0;
|
|
|
|
+
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
|
|
.bottom-content {
|
|
.bottom-content {
|
|
display: flex;
|
|
display: flex;
|
|
color: white;
|
|
color: white;
|
|
|
|
|
|
|
|
+ @media screen and (max-width: 1000px) {
|
|
|
|
+ flex-direction: column;
|
|
|
|
+ padding: 0px 15px;
|
|
|
|
+ overflow: auto;
|
|
|
|
+ height: 50vh;
|
|
|
|
+ // justify-content: center;
|
|
|
|
+ align-items: center;
|
|
|
|
+ }
|
|
|
|
+
|
|
img {
|
|
img {
|
|
width: 40%;
|
|
width: 40%;
|
|
object-fit: cover;
|
|
object-fit: cover;
|
|
margin-left: 10px;
|
|
margin-left: 10px;
|
|
cursor: pointer;
|
|
cursor: pointer;
|
|
|
|
+
|
|
|
|
+ @media screen and (max-width: 1000px) {
|
|
|
|
+ width: 90%;
|
|
|
|
+ height: 20vh;
|
|
|
|
+ margin-left: 0px;
|
|
|
|
+ box-shadow: -4px 0px 4px 0px rgba(0, 0, 0, 0.3);
|
|
|
|
+ margin-bottom: 5px;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
div {
|
|
div {
|
|
max-height: 10vh;
|
|
max-height: 10vh;
|
|
overflow: auto;
|
|
overflow: auto;
|
|
font-size: 0.9em;
|
|
font-size: 0.9em;
|
|
|
|
+
|
|
|
|
+ @media screen and (max-width: 1000px) {
|
|
|
|
+ font-size: 0.7em;
|
|
|
|
+ max-height: 25vh;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
::-webkit-scrollbar {
|
|
::-webkit-scrollbar {
|
|
@@ -413,10 +552,18 @@ onMounted(() => {
|
|
position: absolute;
|
|
position: absolute;
|
|
z-index: 2;
|
|
z-index: 2;
|
|
cursor: pointer;
|
|
cursor: pointer;
|
|
|
|
+
|
|
|
|
+ @media screen and (max-width: 1000px) {
|
|
|
|
+ width: 60px;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
.line {
|
|
.line {
|
|
position: absolute;
|
|
position: absolute;
|
|
|
|
+
|
|
|
|
+ @media screen and (max-width: 1000px) {
|
|
|
|
+ display: none;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|