CameraContent-3-1-2.vue 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362
  1. <template>
  2. <div class="camera-content-1-1">
  3. <button
  4. class="return"
  5. @click="emit('close')"
  6. />
  7. <div class="content-wrap">
  8. <h1>上流社会的雅集盛会</h1>
  9. <div class="tabbar">
  10. <span
  11. :class="{
  12. active: activeTabIdx === 1
  13. }"
  14. @click="activeTabIdx = 1"
  15. >
  16. 盛会介绍
  17. </span>
  18. <div class="splitter" />
  19. <span
  20. :class="{
  21. active: activeTabIdx === 2
  22. }"
  23. @click="activeTabIdx = 2"
  24. >
  25. 活动内容
  26. </span>
  27. </div>
  28. <div
  29. v-if="activeTabIdx === 1"
  30. class="tab-content tab-1-content"
  31. >
  32. <h3>元代上流社会的雅集盛会</h3>
  33. <p class="text-indent">
  34. 雅集是古代文人的派对形式之一,举办聚会的理由是各式各样的,规模亦可大可小。在雅集的活动里,主人与宾客除了享用精致美味的佳肴,也会有吟诗、鼓琴、对弈、观画、品茗等助兴活动,更不用说宴会上即席挥毫、题咏等具有纪念性质的副产品产出。宴集上文人之间相互激荡与较劲,因此雅集亦可说是文化的孕育摇篮。 元文宗奎章阁中汇集的历代收藏和公主祥哥剌吉天庆寺的清赏雅集,更是元大都文化与艺术发展的见证。经由此雅集盛会的举办,宋元时期的书画名作将得到更多展示鉴赏的机会,艺术作品所汇聚的美感能量跨越时空与身份,进而延续或创造新的艺术文化成果。
  35. </p>
  36. <!-- <img
  37. class=""
  38. src="@/assets/images/camera-content-3-1-2-tab-1-img.png"
  39. alt=""
  40. draggable="false"
  41. > -->
  42. <!-- <div
  43. v-if="tab1ContentPageNumber === 2"
  44. class="table"
  45. >
  46. <h3>大都城主要设计者和建设者</h3>
  47. <img
  48. class="table-img"
  49. src="@/assets/images/camera-content-1-1-2-tab-1-table.png"
  50. alt=""
  51. draggable="false"
  52. >
  53. </div> -->
  54. <button
  55. v-if="tab1ContentPageNumber === 1"
  56. class="change-page next-page"
  57. @click="tab1ContentPageNumber = 2"
  58. />
  59. <button
  60. v-if="tab1ContentPageNumber === 2"
  61. class="change-page previous-page"
  62. @click="tab1ContentPageNumber = 1"
  63. />
  64. </div>
  65. <div
  66. v-if="activeTabIdx === 2"
  67. class="tab-content tab-2-content"
  68. >
  69. <h3>
  70. 雅集盛会活动内容
  71. </h3>
  72. <div class="content-box">
  73. <div class="left-list">
  74. <div class="left-list-item">
  75. <div class="item-title">
  76. (1)名家收藏
  77. </div>
  78. <div class="item-span">
  79. 欣赏文人雅士收藏的宋元时期书画作品。
  80. </div>
  81. </div>
  82. <div class="left-list-item">
  83. <div class="item-title">
  84. (2)士人题跋
  85. </div>
  86. <div class="item-span">
  87. 对喜爱的书画作品题跋留念。
  88. </div>
  89. </div>
  90. <div class="left-list-item">
  91. <div class="item-title">
  92. (3)多元艺术
  93. </div>
  94. <div class="item-span">
  95. 呈现蒙元时代文化艺术成果。
  96. </div>
  97. </div>
  98. <div class="left-list-item">
  99. <div class="item-title">
  100. (4)交流互鉴
  101. </div>
  102. <div class="item-span">
  103. 现场挥毫泼墨,品鉴、交流。
  104. </div>
  105. </div>
  106. </div>
  107. <div class="right-img">
  108. <img src="@/assets/images/camera-content-3-1-2-tab-2-img.png">
  109. <div class="title">
  110. 玉山雅集图
  111. </div>
  112. </div>
  113. </div>
  114. </div>
  115. </div>
  116. </div>
  117. </template>
  118. <script setup>
  119. import { ref, computed, watch, onMounted } from "vue"
  120. import { useRoute, useRouter } from "vue-router"
  121. import { useStore } from "vuex"
  122. const {
  123. windowSizeInCssForRef,
  124. windowSizeWhenDesignForRef,
  125. } = useSizeAdapt(1920, 970)
  126. const route = useRoute()
  127. const router = useRouter()
  128. const store = useStore()
  129. const emit = defineEmits(['close'])
  130. const activeTabIdx = ref(1)
  131. // const tab1ContentPageNumber = ref(1)
  132. </script>
  133. <style lang="less" scoped>
  134. .camera-content-1-1{
  135. position: absolute;
  136. left: 0;
  137. top: 0;
  138. width: 100%;
  139. height: 100%;
  140. background: rgba(0,0,0,0.45);
  141. backdrop-filter: blur(60px);
  142. >button.return{
  143. position: absolute;
  144. width: 58px;
  145. height: 58px;
  146. left: 42px;
  147. top: 68px;
  148. background-image: url(@/assets/images/btn-return.png);
  149. background-size: contain;
  150. background-repeat: no-repeat;
  151. background-position: center center;
  152. }
  153. >.content-wrap{
  154. position: absolute;
  155. left: 50%;
  156. top: 54%;
  157. width: calc(1585 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  158. height: calc(819 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  159. transform: translate(-50%, -50%);
  160. background-image: url(@/assets/images/camera-content-3-1-1-bg.png);
  161. background-size: cover;
  162. background-repeat: no-repeat;
  163. background-position: center center;
  164. >h1{
  165. position: absolute;
  166. left: calc(163 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  167. top: calc(190 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  168. font-size: calc(40 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  169. font-family: "SourceHanSerifCN-SemiBold";
  170. color: #FBF7DC;
  171. line-height: calc(47 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  172. writing-mode: vertical-lr;
  173. letter-spacing: 0.23em;
  174. }
  175. >.tabbar{
  176. position: absolute;
  177. display: flex;
  178. flex-direction: column;
  179. align-items: center;
  180. left: calc(373 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  181. top: calc(42 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  182. >span{
  183. width: calc(46 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  184. height: calc(168 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  185. writing-mode: vertical-lr;
  186. display: flex;
  187. justify-content: center;
  188. align-items: center;
  189. background: #AC997F;
  190. font-size: 19px;
  191. color: #FFF3C3;
  192. letter-spacing: 1px;
  193. font-family: "SourceHanSerifCN-SemiBold";
  194. box-shadow: 3px 4px 9px 0px rgba(0,0,0,0.25);
  195. cursor: pointer;
  196. }
  197. >span.active{
  198. color: #6A3906;
  199. background: linear-gradient(322deg, #C69D49 0%, #F8E6A9 68%);
  200. }
  201. >.splitter{
  202. position: absolute;
  203. left: 50%;
  204. top: 50%;
  205. transform: translate(-50%, -50%);
  206. width: calc(34 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  207. height: 1px;
  208. background-color: #FFF3C3;
  209. }
  210. }
  211. >.tab-content{
  212. position: absolute;
  213. left: calc(450 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  214. top: calc(42 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  215. width: calc(950 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  216. height: calc(750 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  217. display: flex;
  218. flex-direction: column;
  219. justify-content: flex-start;
  220. align-items: center;
  221. margin-top: 5%;
  222. >h3{
  223. width: calc(892 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  224. height: calc(64 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  225. display: flex;
  226. justify-content: center;
  227. align-items: center;
  228. background-image: url(@/assets/images/camera-content-1-1-2-tab-1-table-title.png);
  229. background-size: cover;
  230. background-repeat: no-repeat;
  231. background-position: center center;
  232. font-size: calc(28 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  233. font-family: "SourceHanSerifCN-SemiBold";
  234. color: #6A3906;
  235. line-height: calc(33 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  236. letter-spacing: calc(5 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  237. margin-bottom: calc(30 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  238. }
  239. }
  240. >.tab-1-content{
  241. >img {
  242. width: calc(809 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  243. }
  244. >p{
  245. width: calc(809 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  246. max-height: 80%;
  247. overflow: auto;
  248. font-size: calc(20 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  249. font-family: Source Han Sans SC, Source Han Sans SC;
  250. font-weight: 300;
  251. color: #000000;
  252. line-height: calc(30 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  253. // letter-spacing: calc(4 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  254. padding-right: 0.5em;
  255. }
  256. >div.table{
  257. position: absolute;
  258. left: 0;
  259. top: 0;
  260. width: 100%;
  261. height: 100%;
  262. display: flex;
  263. flex-direction: column;
  264. justify-content: center;
  265. align-items: center;
  266. >h3{
  267. width: calc(528 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  268. height: calc(64 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  269. display: flex;
  270. justify-content: center;
  271. align-items: center;
  272. background-image: url(@/assets/images/camera-content-1-1-2-tab-1-table-title.png);
  273. background-size: cover;
  274. background-repeat: no-repeat;
  275. background-position: center center;
  276. font-size: calc(28 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  277. font-family: Source Han Serif CN;
  278. font-weight: 600;
  279. color: #6A3906;
  280. line-height: calc(33 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  281. letter-spacing: calc(5 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  282. margin-bottom: calc(30 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  283. }
  284. >img.table-img{
  285. width: calc(931 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  286. height: calc(528 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  287. }
  288. }
  289. >button.change-page{
  290. position: absolute;
  291. width: calc(60 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  292. height: calc(60 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  293. right: calc(30 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  294. bottom: calc(50 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  295. background-size: cover;
  296. background-repeat: no-repeat;
  297. background-position: center center;
  298. }
  299. >button.next-page{
  300. background-image: url(@/assets/images/camera-content-1-1-2-tab-1-next-page.png);
  301. }
  302. >button.previous-page{
  303. background-image: url(@/assets/images/camera-content-1-1-2-tab-1-previous-page.png);
  304. }
  305. }
  306. >.tab-2-content{
  307. // padding-top: calc(50 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  308. // padding-bottom: calc(50 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  309. display: flex;
  310. flex-direction: column;
  311. justify-content: flex-start;
  312. align-items: center;
  313. >.content-box {
  314. width: 100%;
  315. display: flex;
  316. align-items: center;
  317. justify-content: center;
  318. >.left-list {
  319. width: calc(440 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  320. >.left-list-item{
  321. .item-title,
  322. .item-span{
  323. font-size: calc(20 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  324. font-family: "Source Han Sans SC light";
  325. line-height: 34px;
  326. }
  327. &:not(:last-child) {
  328. margin-bottom: 10px;
  329. }
  330. }
  331. >img {
  332. width: 50%;
  333. }
  334. }
  335. > .right-img{
  336. position: relative;
  337. height: calc(464 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  338. >img {
  339. height: 100%;
  340. }
  341. >.title{
  342. position: absolute;
  343. left: 50%;
  344. top: 100%;
  345. transform: translate(-50%, 100%);
  346. font-size: calc(20 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  347. font-family: "Source Han Sans SC light";
  348. }
  349. }
  350. }
  351. }
  352. }
  353. }
  354. </style>