| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 | <template>  <Transition class="module-right">    <div v-if="visible" class="module-content">      <div v-if="title" class="module-content__title__expand">        <span class="action-btn close-btn" @click="closeModel"></span>        <span @click="clickHandler">{{ title }}</span>      </div>      <div class="module-slot">        <slot></slot>      </div>    </div>  </Transition></template><script lang="ts" setup>  defineProps<{ title: string; visible: boolean }>();  const emit = defineEmits(['close', 'click']);  function closeModel() {    emit('close');  }  function clickHandler() {    emit('click');  }</script><style lang="less" scoped>  .module-right {    --bg-height: 33px;    color: #fff;    box-sizing: border-box;    position: absolute;    .module-content {      width: 100%;      height: 100%;    }    .module-content__title__expand {      width: 100%;      height: var(--bg-height);      line-height: var(--bg-height);      background: url('@/assets/images/home-container/configurable/model_right_title_bg_expand.png') no-repeat;      background-size: 100% 100%;      position: relative;      text-align: left;      padding: 0 0 0 10%;    }    .module-content__title {      width: 50%;      height: var(--bg-height);      line-height: var(--bg-height);      background: url('@/assets/images/home-container/configurable/model_right_title_bg.png') no-repeat;      background-size: 100% 100%;      position: relative;      text-align: left;      margin-left: 50%;      padding: 0 0 0 10%;    }    // 固定在父容器右上角的按钮图标    .action-btn {      width: 18px;      height: 18px;      background: url('@/assets/images/home-container/configurable/expand.svg') no-repeat center;      position: absolute;      left: 0;      top: 0;      cursor: pointer;    }    .show-btn {      transform: rotate(-90deg);    }    .module-slot {      height: calc(100% - 33px);      width: 100%;      background-color: #259ccf22;    }  }  // Transition动画相关  .v-enter-active,  .v-leave-active {    transition: all 0.3s ease;  }  .v-enter-from,  .v-leave-to {    // opacity: 1;    transform: translateX(100%);    // transform: scaleY(0);    // transform-origin: center top;  }</style>
 |