CameraContent-1-1-1.vue 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712
  1. <template>
  2. <div
  3. class="camera-content-1-1"
  4. >
  5. <button
  6. class="return"
  7. @click="emit('close')"
  8. />
  9. <div class="content-wrap">
  10. <h1>{{ title }}</h1>
  11. <div class="switch-wrap">
  12. <button
  13. class="switch-design"
  14. :class="{
  15. active: currentSwitchIdx === 0
  16. }"
  17. @click.stop="currentSwitchIdx = 0"
  18. >
  19. 设计
  20. </button>
  21. <button
  22. class="switch-layout"
  23. :class="{
  24. active: currentSwitchIdx === 1
  25. }"
  26. @click.stop="currentSwitchIdx = 1"
  27. >
  28. 布局
  29. </button>
  30. </div>
  31. <div
  32. v-if="currentSwitchIdx === 0"
  33. class="design-wrap"
  34. >
  35. <h2 class="character-name">
  36. <span>刘秉忠</span><span>太保兼领中书省事</span>
  37. </h2>
  38. <div class="zhuanchang">
  39. 专长
  40. </div>
  41. <div class="zhuanchang-tag one">
  42. 建筑设计
  43. </div>
  44. <div class="zhuanchang-tag two">
  45. 城市规划
  46. </div>
  47. <!-- <div class="character-wrap">
  48. <img
  49. class="character"
  50. src="@/assets/images/character-luibingzhong.png"
  51. alt=""
  52. draggable="false"
  53. >
  54. </div> -->
  55. <div
  56. class="character-frames-wrapper"
  57. >
  58. <img
  59. v-show="animationType === 1"
  60. class="frames frames-2"
  61. :class="{
  62. animating: isCharacterSpecialMoving1,
  63. state1: isCharacterSpecialMoving1 === 0,
  64. state2: isCharacterSpecialMoving1 === 1,
  65. }"
  66. src="@/assets/images/character-luibingzhong-2.png"
  67. alt=""
  68. draggable="false"
  69. >
  70. <img
  71. v-show="animationType === 2"
  72. class="frames frames-3"
  73. :class="{
  74. animating: isCharacterSpecialMoving2,
  75. state1: isCharacterSpecialMoving2 === 0,
  76. state2: isCharacterSpecialMoving2 === 1,
  77. }"
  78. src="@/assets/images/character-luibingzhong-1.png"
  79. alt=""
  80. draggable="false"
  81. >
  82. </div>
  83. <h2 class="design">
  84. 大都设计
  85. </h2>
  86. <div class="design-detail">
  87. <p class="text-indent">
  88. 大都城的平面设计,以《周礼·考工纪》关于都城建设为指导思想,按照“南朝北市,左祖右社”的原则,进行规划建造。
  89. </p>
  90. <p class="text-indent">
  91. 平地新建的元大都有着统一的规划布局,采取外城、皇城、宫城三重城垣环环相套的形制,皇城位于外城南半部,宫城位于皇城中央偏东。整座都城规模浩大,外城南北约7595米,东西约6705米,面积约50.9平方公里。城墙东、西、南三面均设三门,北面设两门。东面三门由北至南为光熙门、崇仁门、齐化门;南面三门由东至西为文明门、丽正门、顺城门;西面三门由南至北为平则门、和义门、肃清门;北门二门由西至东为健德门、安贞门。城内主要街道包括南北向街道九条、东西向大街六条。都城有着明确的中轴线,城内以大街为主干,辅以东西向平行的胡同。
  92. </p>
  93. <p class="text-indent">
  94. 城内还建设了专供宫廷用水的金水河水系与由高粱河、积水潭、通惠河组成的漕运水系,特别是后者将大都与大运河联系在一起,大运河成为了大都物资供给的重要“动脉”。
  95. </p>
  96. </div>
  97. <img
  98. class="city"
  99. src="@/assets/images/camera-content-1-1-1-design-city.png"
  100. alt=""
  101. draggable="false"
  102. >
  103. </div>
  104. <div
  105. v-if="currentSwitchIdx === 1"
  106. class="map-wrap"
  107. >
  108. <button
  109. class="hotspot"
  110. :class="{
  111. active: displayingHotspotIdx === 0
  112. }"
  113. @mouseenter="displayingHotspotIdx = 0"
  114. @mouseleave="displayingHotspotIdx = -1"
  115. >
  116. <!-- <div class="label">
  117. 中轴线
  118. </div> -->
  119. <img
  120. class="deco"
  121. src="@/assets/images/camera-content-1-1-1-hotspot-1-line.png"
  122. alt=""
  123. draggable="false"
  124. >
  125. </button>
  126. <button
  127. class="hotspot"
  128. :class="{
  129. active: displayingHotspotIdx === 1
  130. }"
  131. @mouseenter="displayingHotspotIdx = 1"
  132. @mouseleave="displayingHotspotIdx = -1"
  133. >
  134. <!-- <div class="label">
  135. 水系
  136. </div> -->
  137. <img
  138. class="deco"
  139. src="@/assets/images/camera-content-1-1-1-hotspot-2-river.png"
  140. alt=""
  141. draggable="false"
  142. >
  143. </button>
  144. <button
  145. class="hotspot"
  146. :class="{
  147. active: displayingHotspotIdx === 2
  148. }"
  149. @mouseenter="displayingHotspotIdx = 2"
  150. @mouseleave="displayingHotspotIdx = -1"
  151. >
  152. <!-- <div class="label">
  153. 外城
  154. </div> -->
  155. <img
  156. class="deco"
  157. src="@/assets/images/camera-content-1-1-1-hotspot-3-area.png"
  158. alt=""
  159. draggable="false"
  160. style="z-index: 5;"
  161. >
  162. </button>
  163. <button
  164. class="hotspot"
  165. :class="{
  166. active: displayingHotspotIdx === 3
  167. }"
  168. @mouseenter="displayingHotspotIdx = 3"
  169. @mouseleave="displayingHotspotIdx = -1"
  170. >
  171. <!-- <div class="label">
  172. 皇城和宫城
  173. </div> -->
  174. <img
  175. class="deco"
  176. src="@/assets/images/camera-content-1-1-1-hotspot-4-area.png"
  177. alt=""
  178. draggable="false"
  179. >
  180. </button>
  181. <div
  182. class="desc"
  183. >
  184. <h3 v-if="layoutDataList[displayingHotspotIdx+1].title">
  185. {{ layoutDataList[displayingHotspotIdx+1].title }}
  186. </h3>
  187. <div class="hotspot-detail text-indent">
  188. <p
  189. v-for="(item, idx) in layoutDataList[displayingHotspotIdx+1].detail.split('\n')"
  190. :key="idx"
  191. >
  192. {{ item }}
  193. </p>
  194. </div>
  195. </div>
  196. </div>
  197. </div>
  198. </div>
  199. </template>
  200. <script setup>
  201. import { ref, computed, watch, onMounted } from "vue"
  202. import { useRoute, useRouter } from "vue-router"
  203. import { useStore } from "vuex"
  204. const {
  205. windowSizeInCssForRef,
  206. windowSizeWhenDesignForRef,
  207. } = useSizeAdapt(1920, 968)
  208. const route = useRoute()
  209. const router = useRouter()
  210. const store = useStore()
  211. const emit = defineEmits(['close'])
  212. const currentSwitchIdx = ref(0)
  213. const title = computed(() => {
  214. if (currentSwitchIdx.value === 0) {
  215. return '刘秉忠亲述自己对大都的设计'
  216. } else if (currentSwitchIdx.value === 1) {
  217. return '大都城街道布局及建筑面积规划'
  218. } else {
  219. return ''
  220. }
  221. })
  222. const layoutDataList = [
  223. {
  224. title: '',
  225. detail: '在元大都通往11座城门的大街之间东西平行分布的胡同,大多相距78米,即元代的50步。元大都的衙署和民居就分布在这样的街道系统中。按照元代的规定,普通民居的面积不能超过八亩,重要衙署和寺院的面积要远远超过普通民居,打破胡同的界限。',
  226. },
  227. {
  228. title: '中轴线',
  229. detail: '大都城有着明确的中轴线,城内以大街为主干,辅以东西向平行的胡同,构成了开放式街巷制的街道规划。'
  230. },
  231. {
  232. title: '水系规划',
  233. detail: '水系在大都城的规划中占有重要地位,皇城和宫城围绕着太液池而规划,和太液池相连的金水河水系与沟通通惠河的漕运水系贯穿整个城市。\n漕运水系将大运河的终点通州与积水潭连接起来,漕船可以经由通惠河直达大都城内的积水潭,由此积水潭中出现了舳舻蔽水的盛况。\n积水潭的东岸、北岸也成为大都城内繁华的商业区。粮食和物资通过运河汇聚到元大都,为大都的繁荣奠定了基础。'
  234. },
  235. {
  236. title: '外城',
  237. detail: '外城南北约7.6公里,东西约6.7公里,面积约50平方公里。外城共设城门11座,东西南三面各有三座城门,北面有两座城门。'
  238. },
  239. {
  240. title: '皇城和宫城',
  241. detail: '皇城和宫城是全城的核心,居于外城南部中央,宫城偏于皇城东部,正南门为崇天门,正是在这里,元朝皇帝向天下发出号令。'
  242. },
  243. ]
  244. const displayingHotspotIdx = ref(-1)
  245. const isCharacterSpecialMoving1 = ref(0)
  246. const isCharacterSpecialMoving2 = ref(0)
  247. const animationType = ref(1)
  248. setTimeout(() => {
  249. isCharacterSpecialMoving1.value = 1
  250. setTimeout(() => {
  251. animationType.value = 2
  252. }, 3000)
  253. }, 0)
  254. setInterval(() => {
  255. isCharacterSpecialMoving2.value = 1
  256. setTimeout(() => {
  257. isCharacterSpecialMoving2.value = 0
  258. }, 3000)
  259. }, 3300)
  260. </script>
  261. <style lang="less" scoped>
  262. @page-height-design-px: 970;
  263. @frame-width: 256px;
  264. @frame-height: 512px;
  265. @duration-2: 3s;
  266. @frame-num-2: 72;
  267. @duration-3: 3s;
  268. @frame-num-3: 72;
  269. .camera-content-1-1{
  270. position: absolute;
  271. left: 0;
  272. top: 0;
  273. width: 100%;
  274. height: 100%;
  275. background: rgba(0,0,0,0.45);
  276. backdrop-filter: blur(60px);
  277. >button.return{
  278. position: absolute;
  279. width: 58px;
  280. height: 58px;
  281. left: 42px;
  282. top: 68px;
  283. background-image: url(@/assets/images/btn-return.png);
  284. background-size: contain;
  285. background-repeat: no-repeat;
  286. background-position: center center;
  287. z-index: 10;
  288. }
  289. h1{
  290. position: absolute;
  291. left: 0;
  292. top: calc(-60 / @page-height-design-px * 100vh);
  293. width: 100%;
  294. height: calc(120 / @page-height-design-px * 100vh);
  295. background-image: url(@/assets/images/camera-content-1-1-1-title-bg.png);
  296. background-size: auto 100%;
  297. background-repeat: no-repeat;
  298. background-position: center center;
  299. font-size: calc(32 / @page-height-design-px * 100vh);
  300. font-family: "Source Han Serif CN Heavy";
  301. color: #FFFFFF;
  302. line-height: calc(38 / @page-height-design-px * 100vh);
  303. display: flex;
  304. justify-content: center;
  305. align-items: center;
  306. z-index: 1;
  307. }
  308. >.content-wrap{
  309. position: absolute;
  310. left: 50%;
  311. top: 54%;
  312. width: calc(1920 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  313. height: calc(723 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  314. transform: translate(-50%, -50%);
  315. >.switch-wrap{
  316. position: absolute;
  317. right: calc(65 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  318. bottom: calc(83 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  319. z-index: 10;
  320. >button{
  321. width: calc(118 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  322. height: calc(118 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  323. background-image: url(@/assets/images/camera-content-1-1-1-swtich-btn-bg.png);
  324. background-size: 60%;
  325. background-repeat: no-repeat;
  326. background-position: center center;
  327. font-size: calc(24 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  328. font-family: Source Han Sans SC, Source Han Sans SC;
  329. font-weight: 400;
  330. color: #FFFFFF;
  331. line-height: calc(28 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  332. letter-spacing: calc(4 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  333. }
  334. >button:last-of-type{
  335. margin-left: calc(60 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  336. }
  337. >button.active{
  338. background-image: url(@/assets/images/camera-content-1-1-1-swtich-btn-bg-active.png);
  339. background-size: 100%;
  340. }
  341. }
  342. >.design-wrap{
  343. position: absolute;
  344. left: 0;
  345. top: 0;
  346. width: 100%;
  347. height: 100%;
  348. background-image: url(@/assets/images/camera-content-1-1-1-design-bg.png);
  349. background-size: 100% 100%;
  350. background-repeat: no-repeat;
  351. background-position: center center;
  352. >h2.character-name{
  353. position: absolute;
  354. width: calc(62 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  355. height: calc(379 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  356. left: calc(40 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  357. top: calc(15 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  358. background-image: url(@/assets/images/camera-content-1-1-1-design-name-bg.png);
  359. background-size: contain;
  360. background-repeat: no-repeat;
  361. background-position: center center;
  362. display: flex;
  363. flex-direction: column;
  364. justify-content: center;
  365. align-items: center;
  366. >span:first-of-type{
  367. display: block;
  368. writing-mode: vertical-lr;
  369. font-size: calc(23 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  370. font-family: "SourceHanSerifCN-SemiBold";
  371. color: #FFF7D9;
  372. line-height: calc(27 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  373. letter-spacing: calc(10 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  374. }
  375. >span:last-of-type{
  376. margin-top: calc(20 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  377. display: block;
  378. writing-mode: vertical-lr;
  379. font-size: calc(18 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  380. font-family: "Source Han Sans SC Regular";
  381. color: #43310E;
  382. line-height: calc(23 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  383. letter-spacing: calc(5 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  384. }
  385. }
  386. >.zhuanchang{
  387. position: absolute;
  388. top: calc(80 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  389. left: calc(120 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  390. width: calc(16 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  391. height: calc(47 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  392. background: #796545;
  393. border-radius: calc(8 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  394. font-size: calc(10 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  395. font-family: "SourceHanSerifCN-SemiBold";
  396. color: #FFFFFF;
  397. line-height: calc(12 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  398. letter-spacing: calc(4 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  399. display: flex;
  400. justify-content: center;
  401. align-items: center;
  402. writing-mode: vertical-lr;
  403. padding-right: calc(2 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  404. }
  405. >.zhuanchang-tag{
  406. position: absolute;
  407. top: calc(70 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  408. width: calc(27 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  409. height: calc(148 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  410. background-image: url(@/assets/images/camera-content-1-1-1-design-zhuanchang-tag-bg.png);
  411. background-size: cover;
  412. background-repeat: no-repeat;
  413. background-position: center center;
  414. writing-mode: vertical-lr;
  415. font-size: calc(19 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  416. font-family: "SourceHanSerifCN-SemiBold";
  417. color: #43310E;
  418. line-height: calc(22 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  419. letter-spacing: calc(8 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  420. padding-top: calc(30 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  421. }
  422. >.zhuanchang-tag.one{
  423. left: calc(160 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  424. }
  425. >.zhuanchang-tag.two{
  426. left: calc(220 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  427. }
  428. // >.character-wrap{
  429. // position: absolute;
  430. // left: calc(60 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  431. // top: calc(-60 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  432. // width: calc(585 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  433. // height: calc(796 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  434. // >img.character{
  435. // position: absolute;
  436. // left: 0;
  437. // top: 0;
  438. // width: 100%;
  439. // height: 100%;
  440. // }
  441. // }
  442. >.character-frames-wrapper {
  443. position: absolute;
  444. left: calc(200 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  445. bottom: calc(-30 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  446. height: calc(@frame-height * 1.5);
  447. width: calc(@frame-width * 1.5);
  448. overflow: hidden;
  449. >.frames {
  450. position: absolute;
  451. height: 100%;
  452. transition-property: none;
  453. &.animating{
  454. transition-property: left;
  455. }
  456. &.state1 {
  457. left: 0;
  458. }
  459. }
  460. >.frames-2{
  461. transition-duration: @duration-2;
  462. transition-timing-function: steps(@frame-num-2 - 1, jump-end);
  463. &.state2 {
  464. left: calc(-100% * (@frame-num-2 - 1));
  465. }
  466. }
  467. >.frames-3{
  468. transition-duration: @duration-3;
  469. transition-timing-function: steps(@frame-num-3 - 1, jump-end);
  470. &.state2 {
  471. left: calc(-100% * (@frame-num-3 - 1));
  472. }
  473. }
  474. }
  475. >h2.design{
  476. position: absolute;
  477. width: calc(76 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  478. height: calc(241 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  479. left: calc(650 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  480. top: calc(160 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  481. background-image: url(@/assets/images/camera-content-1-1-1-design-h2-design-bg.png);
  482. background-size: contain;
  483. background-repeat: no-repeat;
  484. background-position: center center;
  485. display: flex;
  486. justify-content: center;
  487. align-items: center;
  488. writing-mode: vertical-lr;
  489. padding-right: calc(4 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  490. padding-bottom: calc(10 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));;
  491. font-size: calc(24 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  492. font-family: "Source Han Serif CN Heavy";
  493. color: #43310E;
  494. line-height: calc(28 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  495. letter-spacing: calc(4 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  496. }
  497. >.design-detail{
  498. position: absolute;
  499. left: calc(740 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  500. top: calc(175 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  501. width: calc(568 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  502. height: calc(305 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  503. overflow: auto;
  504. padding-right: calc(18 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  505. >p{
  506. font-size: calc(20 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  507. color: #000000;
  508. }
  509. }
  510. >img.city{
  511. position: absolute;
  512. left: calc(1350 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  513. top: calc(170 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  514. width: calc(436 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  515. height: calc(307 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  516. border-radius: calc(9 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  517. opacity: 1;
  518. border: calc(4 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef')) solid #C9AD83;
  519. padding: calc(8 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  520. background-color: #F4F2E9;
  521. }
  522. }
  523. >.map-wrap{
  524. position: absolute;
  525. left: 0;
  526. top: 0;
  527. width: 100%;
  528. height: 100%;
  529. background-image: url(@/assets/images/camera-content-1-1-1-layout-bg.png);
  530. background-size: 100% 100%;
  531. background-repeat: no-repeat;
  532. background-position: center center;
  533. >button.hotspot{
  534. position: absolute;
  535. width: calc(73 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  536. height: calc(73 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  537. background-image: url(@/assets/images/camera-content-1-1-1-hotspot.png);
  538. background-size: cover;
  539. background-repeat: no-repeat;
  540. background-position: center center;
  541. top: calc(100 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  542. left: calc(50 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  543. >.label{
  544. position: absolute;
  545. left: calc(50% + 7 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  546. bottom: calc(-20 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  547. transform: translate(-50%, 0);
  548. width: calc(123 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  549. height: calc(404 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  550. background-image: url(@/assets/images/camera-content-1-1-1-hotspot-label.png);
  551. background-size: contain;
  552. background-repeat: no-repeat;
  553. background-position: center center;
  554. display: none;
  555. justify-content: center;
  556. align-items: center;
  557. writing-mode: vertical-lr;
  558. font-size: calc(24 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  559. font-family: "SourceHanSansSC-Normal";
  560. font-weight: bold;
  561. color: #F4D085;
  562. line-height: calc(28 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  563. letter-spacing: 0.5em;
  564. padding-right: calc(14 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  565. z-index: 6;
  566. }
  567. >.deco{
  568. display: none;
  569. }
  570. }
  571. >button.hotspot.active{
  572. >.label{
  573. display: flex;
  574. pointer-events: none;
  575. }
  576. >.deco{
  577. display: initial;
  578. pointer-events: none;
  579. }
  580. }
  581. >button.hotspot:nth-of-type(1){
  582. left: calc(488 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  583. top: calc(136 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  584. >img.deco{
  585. position: absolute;
  586. width: calc(42 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  587. height: calc(615.5 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  588. left: calc(22 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  589. top: calc(-72 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  590. }
  591. }
  592. >button.hotspot:nth-of-type(2){
  593. left: calc(329 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  594. top: calc(228 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  595. >img.deco{
  596. position: absolute;
  597. width: calc(1125 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  598. height: calc(851 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  599. left: calc(-368 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  600. top: calc(-229 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  601. }
  602. }
  603. >button.hotspot:nth-of-type(3){
  604. left: calc(847 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  605. top: calc(181 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  606. >img.deco{
  607. position: absolute;
  608. width: calc(1470 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  609. height: calc(621 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  610. left: calc(-1051 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  611. top: calc(-125 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  612. }
  613. }
  614. >button.hotspot:nth-of-type(4){
  615. left: calc(504 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  616. top: calc(453 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  617. >img.deco{
  618. position: absolute;
  619. width: calc(509 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  620. height: calc(211 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  621. left: calc(-305 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  622. top: calc(-85 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  623. z-index: 1;
  624. }
  625. }
  626. >.desc{
  627. position: absolute;
  628. left: calc(1180 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  629. top: calc(110 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  630. width: calc(686 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  631. height: calc(461 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  632. background-image: url(@/assets/images/camera-content-1-1-1-desc-bg.png);
  633. background-size: contain;
  634. background-repeat: no-repeat;
  635. background-position: center center;
  636. display: flex;
  637. justify-content: center;
  638. align-items: center;
  639. padding-top: calc(80 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  640. padding-bottom: calc(80 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  641. padding-left: calc(100 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  642. padding-right: calc(60 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  643. >h3{
  644. position: absolute;
  645. left: calc(-24 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  646. top: calc(50 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  647. width: calc(76 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  648. height: calc(241 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  649. background-image: url(@/assets/images/camera-content-1-1-1-desc-title-bg.png);
  650. background-size: contain;
  651. background-repeat: no-repeat;
  652. background-position: center center;
  653. display: flex;
  654. justify-content: center;
  655. align-items: center;
  656. writing-mode: vertical-lr;
  657. font-size: calc(24 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  658. font-family: "SourceHanSerifCN-SemiBold";
  659. color: #43310E;
  660. line-height: calc(28 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  661. letter-spacing: calc(2 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  662. padding-right: calc(4 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  663. }
  664. >div.hotspot-detail{
  665. max-height: 100%;
  666. overflow: auto;
  667. padding-right: calc(20 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  668. >p{
  669. // margin-bottom: 1em;
  670. font-size: calc(20 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  671. font-family: Source Han Sans SC, Source Han Sans SC;
  672. font-weight: 300;
  673. color: #000000;
  674. line-height: calc(30 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  675. // letter-spacing: calc(4 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  676. }
  677. }
  678. }
  679. }
  680. }
  681. }
  682. @media only screen and (max-width: 1560px) {
  683. .character-frames-wrapper {
  684. left: calc(250 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef')) !important;
  685. bottom: calc(0 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef')) !important;
  686. height: calc(@frame-height * 1) !important;
  687. width: calc(@frame-width * 1) !important;
  688. }
  689. }
  690. @media only screen and (max-width: 1100px) {
  691. .character-frames-wrapper {
  692. left: calc(230 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef')) !important;
  693. bottom: calc(0 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef')) !important;
  694. height: 350px !important;
  695. width: 175px !important;
  696. }
  697. }
  698. </style>