|
@@ -46,6 +46,12 @@
|
|
|
left: labelPosList.value[idx]?.x + 'px' || '-500px',
|
|
|
bottom: labelPosList.value[idx]?.y + 'px' || '-500px',
|
|
|
}"
|
|
|
+ @click="$router.push({
|
|
|
+ name: 'Level2',
|
|
|
+ query: {
|
|
|
+ sceneIdx: idx,
|
|
|
+ },
|
|
|
+ })"
|
|
|
>
|
|
|
<div
|
|
|
:style="{
|
|
@@ -68,7 +74,7 @@ export default {
|
|
|
const bgImgWidth = 1920
|
|
|
const bgImgHeight = 1080
|
|
|
const labelPosList = reactive({ value: [] })
|
|
|
- function computeActualWindowRatio() {
|
|
|
+ function computeLabelsPos() {
|
|
|
labelPosList.value = []
|
|
|
for (const iterator of menu) {
|
|
|
labelPosList.value.push(getLabelPos(iterator.pos))
|
|
@@ -76,16 +82,16 @@ export default {
|
|
|
console.log(labelPosList)
|
|
|
}
|
|
|
onMounted(() => {
|
|
|
- computeActualWindowRatio()
|
|
|
- window.addEventListener('resize', computeActualWindowRatio)
|
|
|
+ computeLabelsPos()
|
|
|
+ window.addEventListener('resize', computeLabelsPos)
|
|
|
})
|
|
|
onUnmounted(() => {
|
|
|
- window.removeEventListener('resize', computeActualWindowRatio)
|
|
|
+ window.removeEventListener('resize', computeLabelsPos)
|
|
|
})
|
|
|
- // true: 实际窗口更宽扁,背景图与实际窗口等宽,上下被裁减
|
|
|
- // false: 实际窗口更窄高,背景图与实际窗口等高,左右被裁减
|
|
|
|
|
|
function getLabelPos(posRaw) {
|
|
|
+ // true: 实际窗口更宽扁,背景图与实际窗口等宽,上下被裁减
|
|
|
+ // false: 实际窗口更窄高,背景图与实际窗口等高,左右被裁减
|
|
|
if (window.innerWidth / window.innerHeight > bgImgWidth / bgImgHeight) {
|
|
|
const scale = window.innerWidth / bgImgWidth
|
|
|
return {
|
|
@@ -102,109 +108,7 @@ export default {
|
|
|
}
|
|
|
|
|
|
const isHideMenu = ref(true)
|
|
|
- const menu = reactive([
|
|
|
- {
|
|
|
- name: '桃花源里人家',
|
|
|
- pos: {
|
|
|
- x: 540,
|
|
|
- y: 273,
|
|
|
- },
|
|
|
-
|
|
|
- children: [
|
|
|
- {
|
|
|
- name: '文化溯源',
|
|
|
- },
|
|
|
- {
|
|
|
- name: '画里乡村',
|
|
|
- },
|
|
|
- {
|
|
|
- name: '水口园林',
|
|
|
- },
|
|
|
- ]
|
|
|
- },
|
|
|
- {
|
|
|
- name: '牌坊',
|
|
|
- pos: {
|
|
|
- x: 248,
|
|
|
- y: 414,
|
|
|
- },
|
|
|
- children: [
|
|
|
- {
|
|
|
- name: '认识牌坊',
|
|
|
- },
|
|
|
- {
|
|
|
- name: '牌坊形制',
|
|
|
- },
|
|
|
- {
|
|
|
- name: '牌坊构造',
|
|
|
- },
|
|
|
- ]
|
|
|
- },
|
|
|
- {
|
|
|
- name: '祠堂',
|
|
|
- pos: {
|
|
|
- x: 1247,
|
|
|
- y: 591,
|
|
|
- },
|
|
|
- children: [
|
|
|
- {
|
|
|
- name: '认识祠堂',
|
|
|
- },
|
|
|
- {
|
|
|
- name: '祠堂的建筑艺术 ①',
|
|
|
- },
|
|
|
- {
|
|
|
- name: '祠堂的建筑艺术 ②',
|
|
|
- },
|
|
|
- ]
|
|
|
- },
|
|
|
- {
|
|
|
- name: '民居',
|
|
|
- pos: {
|
|
|
- x: 1389,
|
|
|
- y: 355,
|
|
|
- },
|
|
|
- children: [
|
|
|
- {
|
|
|
- name: '认识民居',
|
|
|
- },
|
|
|
- {
|
|
|
- name: '民居的营造 ①',
|
|
|
- },
|
|
|
- {
|
|
|
- name: '民居的营造 ②',
|
|
|
- },
|
|
|
- ]
|
|
|
- }, {
|
|
|
- name: '匠心独运',
|
|
|
- pos: {
|
|
|
- x: 928,
|
|
|
- y: 657,
|
|
|
- },
|
|
|
- children: [
|
|
|
- {
|
|
|
- name: '榫卯技艺',
|
|
|
- },
|
|
|
- {
|
|
|
- name: '雕刻艺术 ①',
|
|
|
- },
|
|
|
- {
|
|
|
- name: '雕刻艺术 ②',
|
|
|
- },
|
|
|
- ]
|
|
|
- }, {
|
|
|
- name: '拾遗',
|
|
|
- pos: {
|
|
|
- x: 746,
|
|
|
- y: 446,
|
|
|
- },
|
|
|
- children: [
|
|
|
- {
|
|
|
- name: '其他建筑类型鉴赏',
|
|
|
- },
|
|
|
- ]
|
|
|
- },
|
|
|
- ])
|
|
|
+ const menu = reactive(config.sceneTree)
|
|
|
|
|
|
return {
|
|
|
labelPosList,
|
|
@@ -221,8 +125,6 @@ export default {
|
|
|
]),
|
|
|
},
|
|
|
mounted() {
|
|
|
- console.log(process.env)
|
|
|
- this.$mitt.emit('test', { msg: 'home mounted' })
|
|
|
},
|
|
|
unmounted() {
|
|
|
},
|
|
@@ -285,7 +187,7 @@ export default {
|
|
|
background-repeat: no-repeat;
|
|
|
background-position: center center;
|
|
|
counter-reset: lalala;
|
|
|
- transition: all 1s;
|
|
|
+ transition: all 0.7s;
|
|
|
>.level1 {
|
|
|
font-size: 24px;
|
|
|
font-family: Source Han Sans CN-Bold, Source Han Sans CN;
|