123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- <template>
- <div class="tag-layer" @click.stop>
- <div class="tag-header">
- <span> </span>
- <i @click.stop="close" class="iconfont close icon-close-middle"></i>
- </div>
- <div class="txtcon">
- <div class="txtbody" v-html="metadata.work.description"></div>
- </div>
- </div>
- </template>
- <script setup>
- import {
- reactive,
- defineEmits,
- onBeforeMount,
- onMounted,
- ref,
- watchEffect,
- computed,
- watch,
- nextTick,
- } from "vue";
- import { useStore } from "vuex";
- const store = useStore();
- const metadata = computed(() => store.getters["scene/metadata"]);
- const close = () => {
- store.commit("functions/setShowIntroduce", false);
- };
- </script>
- <style lang="scss" scoped>
- .tag-layer {
- width: 100vw;
- height: 100vh;
- z-index: 10000;
- top: 0;
- position: fixed;
- left: 0;
- background: rgba(27, 27, 28, 0.8);
- box-shadow: 0px 0px 10px 0px rgba(0, 0, 0, 0.3);
- backdrop-filter: blur(4px);
- .tag-header {
- display: flex;
- width: 100%;
- padding: 0 20px;
- justify-content: space-between;
- align-items: center;
- height: 50px;
- border-bottom: solid 1px rgba(255, 255, 255, 0.16);
- font-size: 18px;
- .close {
- color: rgba(255, 255, 255, 0.6);
- z-index: 999;
- }
- }
- .txtcon {
- display: flex;
- align-items: flex-start;
- justify-content: center;
- height: 100%;
- width: 100%;
- :deep(p) {
- line-height: 24px;
- }
- .txtbody {
- width: 100%;
- border-radius: 10px;
- font-size: 14px;
- color: #fff;
- padding: 20px;
- max-height: calc(100vh - 60px);
- overflow-y: auto;
- line-height: 24px;
- word-wrap: break-word;
- white-space: normal;
- }
- }
- }
- </style>
|