left-pano.vue 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. <template>
  2. <div id="left-pano">
  3. <span
  4. class="ctrl-pano-c fun-ctrl strengthen-right strengthen-top strengthen-bottom"
  5. v-if="custom.viewMode !== 'full' && custom.showLeftCtrlPano"
  6. @click="custom.showLeftPano = !custom.showLeftPano"
  7. :class="{ active: custom.showLeftPano }"
  8. >
  9. <ui-icon type="extend" class="icon"></ui-icon>
  10. </span>
  11. <div class="left-pano strengthen">
  12. <slot></slot>
  13. </div>
  14. </div>
  15. </template>
  16. <script lang="ts" setup>
  17. import { custom } from "@/env";
  18. </script>
  19. <style lang="scss" scoped>
  20. .left-pano {
  21. position: absolute;
  22. width: var(--left-pano-width);
  23. background: rgba(27, 27, 28, 0.8);
  24. top: calc(var(--editor-head-height) + var(--header-top));
  25. left: var(--left-pano-left);
  26. bottom: var(--editor-menu-bottom);
  27. z-index: 100;
  28. backdrop-filter: blur(4px);
  29. overflow-y: auto;
  30. transition: all 0.3s ease;
  31. }
  32. .ctrl-pano-c {
  33. position: absolute;
  34. left: calc(var(--left-pano-left) + var(--left-pano-width));
  35. width: 20px;
  36. height: 80px;
  37. background: rgba(26, 26, 26, 0.8);
  38. border-radius: 0 6px 6px 0;
  39. top: 50%;
  40. transform: translateY(-50%);
  41. z-index: 1000;
  42. display: flex;
  43. align-items: center;
  44. justify-content: center;
  45. color: rgba(255, 255, 255, 0.6);
  46. font-size: 14px;
  47. cursor: pointer;
  48. transition: inset 0.3s ease, color 0.3s ease;
  49. &:hover {
  50. color: rgba(255, 255, 255, 1);
  51. }
  52. &:active {
  53. color: var(--colors-primary-base);
  54. }
  55. .icon {
  56. display: inline-block;
  57. transition: transform 0.3s ease;
  58. transform: rotate(0);
  59. }
  60. &.active {
  61. .icon {
  62. transform: rotate(180deg);
  63. }
  64. }
  65. }
  66. </style>