CameraContent-1-2-2.vue 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356
  1. <template>
  2. <div class="camera-content-1-2-2">
  3. <button
  4. class="return"
  5. @click="emit('close')"
  6. />
  7. <div class="content-wrap">
  8. <h1>皇城内的建筑布局</h1>
  9. <div class="tabbar">
  10. <button
  11. :class="{
  12. active: activeTabIdx === 1
  13. }"
  14. @click="activeTabIdx = 1"
  15. >
  16. 御苑
  17. </button>
  18. <div class="splitter" />
  19. <button
  20. :class="{
  21. active: activeTabIdx === 2
  22. }"
  23. @click="activeTabIdx = 2"
  24. >
  25. 太液池
  26. </button>
  27. <div class="splitter" />
  28. <button
  29. :class="{
  30. active: activeTabIdx === 3
  31. }"
  32. @click="activeTabIdx = 3"
  33. >
  34. 隆福宫与兴圣宫
  35. </button>
  36. </div>
  37. <div
  38. v-if="activeTabIdx === 0"
  39. class="df-card"
  40. >
  41. <p class="df-card__title card-title both">
  42. 元大都皇城、宫城、太液池之间的位置相互关系
  43. </p>
  44. <div class="df-card__inner">
  45. <p>
  46. 元大都的皇城和宫城是全城的核心,皇城位于全城南部的中央地区,宫城偏在皇城的东部。宫城与皇城围绕太液池规划,宫城位于太液池的东南。宫城里的建筑分南、北两组,南面是以大明殿为主体的前朝,北面是以延春阁为主体的后廷。宫城以北是御苑,以西即是太液池。太液池以西分布着两组建筑,北面为兴圣宫,南面为隆福宫。这几组建筑用萧墙(也称阑马墙)围绕起来,构成了元大都的皇城。皇城的北墙与宫城之间的宫苑区极富草原气。
  47. </p>
  48. <div class="img-wrap">
  49. <img
  50. src="@/assets/images/camera-content-1-2-2-default-content.jpg"
  51. alt=""
  52. draggable="false"
  53. >
  54. <div class="img-title">
  55. 元大都宫殿位置图
  56. </div>
  57. </div>
  58. </div>
  59. </div>
  60. <div
  61. v-if="activeTabIdx === 1"
  62. class="tab-content tab-1-content"
  63. >
  64. <p class="text-indent">
  65. 宫城以北是御苑,主要种植供统治者观赏之用的花草树木,“内有水碾,引水自玄武池灌溉花木”。在花丛中有华丽精致的小殿。此外,还有“熟地八顷”,元朝统治者为了表示自己重视农业,有时要举行仪式,拿着农具做做样子,这些“熟地”就是为此设置的。御苑是禁地,百姓如果闯入御苑的禁墙(即皇城阑马墙),就要以“大不敬”论罪。
  66. </p>
  67. </div>
  68. <div
  69. v-if="activeTabIdx === 2"
  70. class="tab-content tab-2-content"
  71. >
  72. <p class="text-indent">
  73. 宫城以西是太液池,包括现在北海和中海(南海当时尚未开凿)。太液池中满载芙蓉。元朝皇帝专门造了龙船,在太液池内往来游戏。池中有两个小岛,南面的小岛,称为瀛洲,就是今天团城所在地,上有仪天殿(一名圆殿,后改称承光殿);北面的小岛面积较大,就是著名的琼华岛,至元八年(1271)改称万寿山(又称万岁山)。万寿山高数十丈,都是用玲珑石堆砌而成。山顶就是著名的广寒殿,殿中有十二根柱子,刻有云龙,涂以黄金。全殿的左、右、后三面全用香木造成彩云状,上涂黄金。这座坐落于大都城地势最高处的宫殿,光辉灿烂,别具风格。在广寒殿上四望空阔,既可以远眺西山云气,也可以下瞰大都的街衢市井。广寒殿周围,都是杨柳树。万寿山和太液池,山水相映,更增添了光彩。在万寿山和瀛洲之间,有长达二百余尺的白玉石桥,将两者连接起来。瀛洲东西两侧都有长桥,东边是木桥,西边是木吊桥,与陆地相通。太液池的东边有一处灵圃,为皇家动物园,“奇兽珍禽在焉”。
  74. </p>
  75. <img
  76. class=""
  77. src="@/assets/images/camera-content-1-2-2-tab-2-img.jpg"
  78. alt=""
  79. draggable="false"
  80. >
  81. <div class="img-title">
  82. 《广寒宫图》轴
  83. </div>
  84. </div>
  85. <div
  86. v-if="activeTabIdx === 3"
  87. class="tab-content tab-3-content"
  88. >
  89. <p class="text-indent">
  90. 在太液池以西,有两大建筑群,靠南的是隆福宫,靠北的是兴圣宫。隆福宫的主要建筑是光天殿,后有寝殿,用廊柱相连,寝殿两端各有小殿,外有一百余间周庑围绕。其结构与宫城中的大明殿、延春阁大体一致。在光天殿周庑之外,还有东、西鹿顶殿、香殿等建筑。整个隆福宫围有砖墙,呈长方形。隆福宫原为皇太子住所,称东宫或皇太子宫。著名的王著杀阿合马事件就发生在宫前。后来成为皇太后的居所,始改名为隆福宫。
  91. </p>
  92. <p class="text-indent">
  93. 兴圣宫是在元朝中期元武宗当政(1308-1311)时建造的,主要建筑是兴圣殿,也有廊柱和寝殿相连,有砖垣二重,内垣相当于周庑。兴圣殿后有延华阁,还有东、西鹿顶殿、畏吾儿殿及其他附属建筑。专门收藏文物图书的奎章阁,就在兴圣宫内。
  94. </p>
  95. </div>
  96. </div>
  97. </div>
  98. </template>
  99. <script setup>
  100. import { ref, computed, watch, onMounted } from "vue"
  101. import { useRoute, useRouter } from "vue-router"
  102. import { useStore } from "vuex"
  103. const {
  104. windowSizeInCssForRef,
  105. windowSizeWhenDesignForRef,
  106. } = useSizeAdapt(1920, 970)
  107. const route = useRoute()
  108. const router = useRouter()
  109. const store = useStore()
  110. const emit = defineEmits(['close'])
  111. const activeTabIdx = ref(0)
  112. </script>
  113. <style lang="less" scoped>
  114. .df-card {
  115. position: absolute;
  116. left: calc(500 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  117. top: calc(86 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  118. width: calc(850 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  119. height: calc(680 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  120. &__title {
  121. margin-bottom: 45px;
  122. }
  123. &__inner {
  124. display: flex;
  125. align-items: flex-start;
  126. p {
  127. font-size: 20px;
  128. line-height: 30px !important;
  129. }
  130. >.img-wrap {
  131. flex: 0 0 437px;
  132. margin-left: 23px;
  133. padding: 20px;
  134. display: flex;
  135. flex-direction: column;
  136. justify-content: center;
  137. align-items: center;
  138. // border: 1px solid #FFE88B;
  139. // background: rgba(145,129,117,0.25);
  140. >img{
  141. }
  142. >.img-title{
  143. margin-top: 0.5em;
  144. }
  145. }
  146. }
  147. }
  148. .camera-content-1-2-2{
  149. position: absolute;
  150. left: 0;
  151. top: 0;
  152. width: 100%;
  153. height: 100%;
  154. background: rgba(0,0,0,0.45);
  155. backdrop-filter: blur(60px);
  156. >button.return{
  157. position: absolute;
  158. width: 58px;
  159. height: 58px;
  160. left: 42px;
  161. top: 68px;
  162. background-image: url(@/assets/images/btn-return.png);
  163. background-size: contain;
  164. background-repeat: no-repeat;
  165. background-position: center center;
  166. }
  167. >.content-wrap{
  168. position: absolute;
  169. left: 50%;
  170. top: 54%;
  171. width: calc(1585 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  172. height: calc(819 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  173. transform: translate(-50%, -50%);
  174. background-image: url(@/assets/images/camera-content-1-1-2-bg.png);
  175. background-size: cover;
  176. background-repeat: no-repeat;
  177. background-position: center center;
  178. >h1{
  179. position: absolute;
  180. left: calc(163 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  181. top: calc(200 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  182. font-size: calc(40 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  183. font-family: Source Han Serif CN;
  184. color: #FBF7DC;
  185. line-height: calc(47 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  186. writing-mode: vertical-lr;
  187. letter-spacing: 0.3em;
  188. font-family: "SourceHanSerifCN-SemiBold";
  189. }
  190. >.tabbar{
  191. position: absolute;
  192. display: flex;
  193. flex-direction: column;
  194. align-items: center;
  195. left: calc(373 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  196. top: calc(42 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  197. >button {
  198. width: calc(46 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  199. padding-top: calc(30 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  200. padding-bottom: calc(30 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  201. writing-mode: vertical-lr;
  202. display: flex;
  203. justify-content: center;
  204. align-items: center;
  205. background: #AC997F;
  206. color: #FFF3C3;
  207. letter-spacing: 8px;
  208. font-size: 19px;
  209. font-family: "SourceHanSerifCN-SemiBold";
  210. box-shadow: 3px 4px 9px 0px rgba(0,0,0,0.25);
  211. }
  212. >button.active{
  213. color: #6A3906;
  214. background: linear-gradient(322deg, #C69D49 0%, #F8E6A9 68%);
  215. }
  216. >.splitter{
  217. // position: absolute;
  218. // left: 50%;
  219. // top: 50%;
  220. // transform: translate(-50%, -50%);
  221. width: calc(34 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  222. height: 1px;
  223. background-color: #FFF3C3;
  224. }
  225. }
  226. >.tab-content{
  227. position: absolute;
  228. left: calc(450 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  229. top: calc(42 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  230. width: calc(950 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  231. height: calc(750 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  232. display: flex;
  233. justify-content: center;
  234. align-items: center;
  235. }
  236. >.default-content{
  237. padding: calc(40 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'))
  238. }
  239. >.tab-1-content{
  240. >p{
  241. width: calc(809 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  242. max-height: 80%;
  243. overflow: auto;
  244. font-size: calc(20 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  245. font-family: Source Han Sans SC, Source Han Sans SC;
  246. font-weight: 300;
  247. color: #000000;
  248. line-height: calc(30 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  249. letter-spacing: calc(4 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  250. padding-right: 0.5em;
  251. }
  252. >div.table{
  253. position: absolute;
  254. left: 0;
  255. top: 0;
  256. width: 100%;
  257. height: 100%;
  258. display: flex;
  259. flex-direction: column;
  260. justify-content: center;
  261. align-items: center;
  262. >h3{
  263. width: calc(528 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  264. height: calc(64 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  265. display: flex;
  266. justify-content: center;
  267. align-items: center;
  268. background-image: url(@/assets/images/camera-content-1-1-2-tab-1-table-title.png);
  269. background-size: cover;
  270. background-repeat: no-repeat;
  271. background-position: center center;
  272. font-size: calc(28 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  273. font-family: Source Han Serif CN;
  274. font-weight: 600;
  275. color: #6A3906;
  276. line-height: calc(33 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  277. letter-spacing: calc(5 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  278. margin-bottom: calc(30 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  279. }
  280. >img.table-img{
  281. width: calc(931 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  282. height: calc(528 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  283. }
  284. }
  285. >button.change-page{
  286. position: absolute;
  287. width: calc(60 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  288. height: calc(60 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  289. right: calc(30 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  290. bottom: calc(50 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  291. background-size: cover;
  292. background-repeat: no-repeat;
  293. background-position: center center;
  294. }
  295. }
  296. >.tab-2-content{
  297. padding-top: calc(50 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  298. padding-bottom: calc(50 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  299. display: flex;
  300. flex-direction: column;
  301. justify-content: space-evenly;
  302. align-items: center;
  303. >p{
  304. width: calc(809 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  305. max-height: calc(250 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  306. overflow: auto;
  307. font-size: calc(20 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  308. font-family: Source Han Sans CN, Source Han Sans CN;
  309. font-weight: 300;
  310. color: #000000;
  311. line-height: 30px;
  312. // letter-spacing: calc(8 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  313. }
  314. >img{
  315. width: calc(818 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  316. height: calc(216 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  317. // border: 1px solid #FFE88B;
  318. // padding: calc(22 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  319. background-color: rgba(145,129,117,0.25);
  320. object-fit: cover;
  321. }
  322. >.img-title{
  323. margin-top: -1em;
  324. }
  325. }
  326. >.tab-3-content{
  327. padding-top: calc(50 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  328. padding-bottom: calc(50 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  329. display: flex;
  330. flex-direction: column;
  331. // justify-content: space-evenly;
  332. align-items: center;
  333. >p{
  334. width: calc(809 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  335. overflow: auto;
  336. font-size: calc(20 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  337. font-family: Source Han Sans CN, Source Han Sans CN;
  338. font-weight: 300;
  339. color: #000000;
  340. line-height: 30px;
  341. // letter-spacing: calc(8 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  342. }
  343. }
  344. }
  345. }
  346. </style>