split-pane.vue 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. <script setup lang="ts">
  2. import splitpane, { ContextProps } from "@/components/ReSplitPane";
  3. import { reactive } from "vue";
  4. defineOptions({
  5. name: "SplitPane"
  6. });
  7. const settingLR: ContextProps = reactive({
  8. minPercent: 20,
  9. defaultPercent: 40,
  10. split: "vertical"
  11. });
  12. const settingTB: ContextProps = reactive({
  13. minPercent: 20,
  14. defaultPercent: 40,
  15. split: "horizontal"
  16. });
  17. </script>
  18. <template>
  19. <el-card shadow="never">
  20. <template #header>
  21. <div class="card-header">
  22. <p class="font-medium">切割面板</p>
  23. <el-link
  24. class="mt-2"
  25. href="https://github.com/pure-admin/vue-pure-admin/blob/main/src/views/components/split-pane.vue"
  26. target="_blank"
  27. >
  28. 代码位置 src/views/components/split-pane.vue
  29. </el-link>
  30. </div>
  31. </template>
  32. <div class="split-pane">
  33. <splitpane :splitSet="settingLR">
  34. <!-- #paneL 表示指定该组件为左侧面板 -->
  35. <template #paneL>
  36. <!-- 自定义左侧面板的内容 -->
  37. <el-scrollbar>
  38. <div class="dv-a">A</div>
  39. </el-scrollbar>
  40. </template>
  41. <!-- #paneR 表示指定该组件为右侧面板 -->
  42. <template #paneR>
  43. <!-- 再次将右侧面板进行拆分 -->
  44. <splitpane :splitSet="settingTB">
  45. <template #paneL>
  46. <el-scrollbar><div class="dv-b">B</div></el-scrollbar>
  47. </template>
  48. <template #paneR>
  49. <el-scrollbar>
  50. <div class="dv-c">C</div>
  51. </el-scrollbar>
  52. </template>
  53. </splitpane>
  54. </template>
  55. </splitpane>
  56. </div>
  57. </el-card>
  58. </template>
  59. <style lang="scss" scoped>
  60. .split-pane {
  61. width: 100%;
  62. height: calc(100vh - 300px);
  63. font-size: 50px;
  64. text-align: center;
  65. border: 1px solid #e5e6eb;
  66. .dv-a {
  67. padding-top: 30vh;
  68. color: rgba($color: dodgerblue, $alpha: 80%);
  69. }
  70. .dv-b {
  71. padding-top: 10vh;
  72. color: rgba($color: #000, $alpha: 80%);
  73. }
  74. .dv-c {
  75. padding-top: 18vh;
  76. color: rgba($color: #ce272d, $alpha: 80%);
  77. }
  78. }
  79. </style>