任一存 1 anno fa
parent
commit
5413fe8563

+ 1 - 1
public/index.html

@@ -4,7 +4,7 @@
     <meta charset="utf-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=no">
-    <link rel="icon" href="<%= BASE_URL %>logo.png">
+    <link rel="icon" href="<%= BASE_URL %>logo.ico">
     <title>大都:元代北京城</title>
   </head>
   <body>

BIN
public/logo.ico


BIN
public/logo.png


BIN
src/assets/images/btn-return-home-active.png


BIN
src/assets/images/btn-return-home.png


BIN
src/assets/images/camera-btn-1-1-1-active.png


BIN
src/assets/images/camera-btn-1-1-1.png


BIN
src/assets/images/camera-btn-1-1-2-active.png


BIN
src/assets/images/camera-btn-1-1-2.png


BIN
src/assets/images/camera-btn-1-1-3-active.png


BIN
src/assets/images/camera-btn-1-1-3.png


BIN
src/assets/images/camera-btn-1-1-4-active.png


BIN
src/assets/images/camera-btn-1-1-4.png


BIN
src/assets/images/camera-list-bg.png


BIN
src/assets/images/camera-list-item-active.png


BIN
src/assets/images/camera-list-item-bg-active.png


BIN
src/assets/images/camera-list-item-bg.png


BIN
src/assets/images/people-btn-track.png


BIN
src/assets/images/people-name-bg-active.png


BIN
src/assets/images/people-name-bg.png


+ 196 - 38
src/views/PanoView.vue

@@ -6,9 +6,7 @@
       @click="router.push({
         name: 'HomeView',
       })"
-    >
-      返回home
-    </button>
+    />
     <CameraDesc
       v-if="isShowCameraDesc"
       @close="isShowCameraDesc = false"
@@ -22,7 +20,7 @@
         class="name"
         @click="isShowCharacterDesc = true"
       >
-        金二胖
+        <span>金二胖</span>
       </button>
       <img
         class="character"
@@ -31,17 +29,29 @@
         draggable="false"
         @click="isShowCameraDesc = true"
       >
-      <button class="one">
-        按钮1
+      <img
+        class="btn-track"
+        src="@/assets/images/people-btn-track.png"
+        alt=""
+        draggable="false"
+      >
+      <button
+        class="one btn-on-track"
+      >
+        <span>雄伟帝都</span>
       </button>
-      <button class="two">
-        按钮2
+      <button
+        class="two btn-on-track"
+      >
+        <span>雄伟帝都</span>
       </button>
-      <button class="three">
-        按钮3
+      <button
+        class="three btn-on-track"
+      >
+        <span>雄伟帝都</span>
       </button>
       <button
-        class="four"
+        class="four btn-on-track"
         @click="router.push({
           name: 'RelicList',
           query: {
@@ -50,7 +60,7 @@
           }
         })"
       >
-        文物列表
+        <span>雄伟帝都</span>
       </button>
     </div>
     <div class="camera-list">
@@ -68,7 +78,19 @@
           }
         })"
       >
-        {{ item.name }}
+        <span>{{ item.name }}</span>
+        <img
+          class="bg-normal"
+          src="@/assets/images/camera-list-item-bg.png"
+          alt=""
+          draggable="false"
+        >
+        <img
+          class="bg-active"
+          src="@/assets/images/camera-list-item-bg-active.png"
+          alt=""
+          draggable="false"
+        >
       </button>
     </div>
   </div>
@@ -82,10 +104,24 @@ import * as krfn from "@/libs/pano-core/index.js"
 import CameraDesc from '@/components/CameraDesc.vue'
 import CharacterDesc from '@/components/CharacterDesc.vue'
 
+const {
+  windowSizeInCssForRef,
+  windowSizeWhenDesignForRef,
+} = useSizeAdapt()
+
 const route = useRoute()
 const router = useRouter()
 const store = useStore()
 
+const btnOnTrack1ImgUrl = 'url(' + require(`@/assets/images/camera-btn-${Number(route.query.sceneIdx) + 1}-${Number(route.query.cameraIdx) + 1}-1.png`) + ')'
+const btnOnTrack1ActiveImgUrl = 'url(' + require(`@/assets/images/camera-btn-${Number(route.query.sceneIdx) + 1}-${Number(route.query.cameraIdx) + 1}-1-active.png`) + ')'
+const btnOnTrack2ImgUrl = 'url(' + require(`@/assets/images/camera-btn-${Number(route.query.sceneIdx) + 1}-${Number(route.query.cameraIdx) + 1}-2.png`) + ')'
+const btnOnTrack2ActiveImgUrl = 'url(' + require(`@/assets/images/camera-btn-${Number(route.query.sceneIdx) + 1}-${Number(route.query.cameraIdx) + 1}-2-active.png`) + ')'
+const btnOnTrack3ImgUrl = 'url(' + require(`@/assets/images/camera-btn-${Number(route.query.sceneIdx) + 1}-${Number(route.query.cameraIdx) + 1}-3.png`) + ')'
+const btnOnTrack3ActiveImgUrl = 'url(' + require(`@/assets/images/camera-btn-${Number(route.query.sceneIdx) + 1}-${Number(route.query.cameraIdx) + 1}-3-active.png`) + ')'
+const btnOnTrack4ImgUrl = 'url(' + require(`@/assets/images/camera-btn-${Number(route.query.sceneIdx) + 1}-${Number(route.query.cameraIdx) + 1}-4.png`) + ')'
+const btnOnTrack4ActiveImgUrl = 'url(' + require(`@/assets/images/camera-btn-${Number(route.query.sceneIdx) + 1}-${Number(route.query.cameraIdx) + 1}-4-active.png`) + ')'
+
 const isShowCameraDesc = ref(false)
 const isShowCharacterDesc = ref(false)
 
@@ -175,62 +211,184 @@ onBeforeRouteUpdate((to, from) => {
   }
   >button.return-home{
     position: absolute;
-    width: 100px;
-    height: 100px;
-    top: 100px;
-    right: 100px;
-    background-color: red;
+    width: 77px;
+    height: 77px;
+    top: 43px;
+    right: 51px;
+    background-image: url(@/assets/images/btn-return-home.png);
+    background-size: cover;
+    background-repeat: no-repeat;
+    background-position: center center;
+    &:hover{
+      background-image: url(@/assets/images/btn-return-home-active.png);
+    }
   }
   >.character-wrap{
     position: absolute;
-    left: 0;
+    left: calc(40 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
     bottom: 0;
-    width: 100px;
-    height: 100px;
+    width: calc(335 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
+    height: calc(452 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
     >button.name{
       position: absolute;
       top: 0;
       left: 0;
+      transform: translateX(-50%);
+      width: calc(36 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
+      height: calc(178 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
       z-index: 1;
+      font-size: calc(23 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
+      font-family: Source Han Serif SC, Source Han Serif SC;
+      font-weight: 400;
+      color: #43310E;
+      line-height: calc(27 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
+      letter-spacing: calc(7 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
+      writing-mode: vertical-lr;
+      background-image: url(@/assets/images/people-name-bg.png);
+      background-size: contain;
+      background-repeat: no-repeat;
+      background-position: center center;
+      >span{
+        position: absolute;
+        left: 45%;
+        top: 50%;
+        transform: translate(-50%, -50%);
+      }
     }
-    >img{
+    >img.character{
       position: absolute;
       left: 0;
       top: 0;
       width: 100%;
       height: 100%;
+      z-index: 1;
       cursor: pointer;
     }
-    >button.one{
+    >img.btn-track{
       position: absolute;
-      left: calc(100% + 10px);
-      top: 10px;
+      width: calc(598 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
+      height: calc(598 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
+      left: calc(-52 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
+      bottom: calc(-101 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
     }
-    >button.two{
+    >button.btn-on-track{
       position: absolute;
-      left: calc(100% + 10px);
-      top: 30px;
+      width: calc(78 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
+      height: calc(78 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
+      background-size: cover;
+      background-repeat: no-repeat;
+      background-position: center center;
+      >span{
+        display: none;
+        font-size: calc(23 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
+        font-family: Source Han Serif SC, Source Han Serif SC;
+        font-weight: 600;
+        color: #FFF1BE;
+        line-height: calc(27 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
+        letter-spacing: calc(5 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
+      }
+      &:hover{
+        width: calc(397 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
+        height: calc(91 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
+        transform: translate(calc(-10 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef')), calc(-10 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef')));
+        >span{
+          display: initial;
+        }
+      }
+    }
+    >button.one{
+      left: calc(310 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
+      top: calc(-39 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
+      background-image: v-bind(btnOnTrack1ImgUrl);
+      &:hover{
+        background-image: v-bind(btnOnTrack1ActiveImgUrl);
+      }
+    }
+    >button.two{
+      left: calc(433 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
+      top: calc(62 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
+      background-image: v-bind(btnOnTrack2ImgUrl);
+      &:hover{
+        background-image: v-bind(btnOnTrack2ActiveImgUrl);
+      }
     }
     >button.three{
-      position: absolute;
-      left: calc(100% + 10px);
-      top: 50px;
+      left: calc(483 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
+      top: calc(205 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
+      background-image: v-bind(btnOnTrack3ImgUrl);
+      &:hover{
+        background-image: v-bind(btnOnTrack3ActiveImgUrl);
+      }
     }
     >button.four{
-      position: absolute;
-      left: calc(100% + 10px);
-      top: 70px;
+      left: calc(450 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
+      top: calc(353 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
+      background-image: v-bind(btnOnTrack4ImgUrl);
+      &:hover{
+        background-image: v-bind(btnOnTrack4ActiveImgUrl);
+      }
     }
   }
   >div.camera-list{
     position: absolute;
-    bottom: 10px;
-    right: 50px;
+    bottom: 0;
+    right: 0;
+    width: calc(1346 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
+    height: calc(161 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
+    background-image: url(@/assets/images/camera-list-bg.png);
+    background-size: cover;
+    background-repeat: no-repeat;
+    background-position: center center;
+    display: flex;
+    justify-content: flex-end;
+    align-items: center;
+    padding-top: calc(10 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
+    padding-right: calc(204 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
     >button{
-
+      width: calc(198 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
+      height: calc(41 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
+      font-size: calc(21 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
+      font-family: Source Han Serif SC, Source Han Serif SC;
+      font-weight: 600;
+      color: #FFED87;
+      line-height: calc(25 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
+      letter-spacing: calc(9 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
+      position: relative;
+      z-index: 0;
+      >img.bg-normal{
+        display: initial;
+        position: absolute;
+        left: 50%;
+        top: 50%;
+        transform: translate(-50%, -50%);
+        width: calc(198/ v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
+        height: calc(55 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
+        z-index: -1;
+      }
+      >img.bg-active{
+        display: none;
+        position: absolute;
+        left: 50%;
+        top: 0%;
+        transform: translate(-50%, -50%);
+        width: calc(230 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
+        height: auto;
+        z-index: -1;
+      }
     }
     >button.active{
-      color: red;
+      font-size: calc(21 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
+      font-family: Source Han Serif SC, Source Han Serif SC;
+      font-weight: 600;
+      color: #794A00;
+      line-height: calc(25 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
+      letter-spacing: calc(9 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
+      >img.bg-normal{
+        display: none;
+      }
+      >img.bg-active{
+        display: initial;
+      }
     }
   }
 }