tree.scss 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. // 树的线样式
  2. .tree-line {
  3. :deep(.el-tree-node) {
  4. position: relative;
  5. padding-left: 12px; // 缩进量
  6. }
  7. :deep(.el-tree-node__children) {
  8. padding-left: 12px; // 缩进量
  9. }
  10. // 竖线
  11. :deep(.el-tree-node::before) {
  12. content:"";
  13. height: 100%;
  14. width: 1px;
  15. position: absolute;
  16. left: 1px;
  17. top: 0;
  18. border-width: 1px;
  19. border-left: 2px dashed var(--el-color-primary);
  20. }
  21. // 当前层最后⼀个节点的竖线⾼度固定
  22. :deep(.el-tree-node:last-child::before) {
  23. height: 15px; // 可以⾃⼰调节到合适数值
  24. }
  25. // 横线
  26. :deep(.el-tree-node::after) {
  27. content:"";
  28. width: 16px;
  29. height: 20px;
  30. position: absolute;
  31. left: 2px;
  32. top: 12px;
  33. border-width: 1px;
  34. border-top: 2px dashed var(--el-color-primary);
  35. }
  36. // 去掉最顶层的虚线,放最下⾯样式才不会被上⾯的覆盖了
  37. & > :deep(.el-tree-node::after) {
  38. border-top: none !important;
  39. border-top: 0 !important;
  40. }
  41. & > :deep(.el-tree-node::before) {
  42. border-left: none;
  43. }
  44. // 展开关闭的icon
  45. :deep(.el-tree-node__expand-icon) {
  46. font-size: 16px;
  47. &.is-leaf {
  48. color: transparent;
  49. font-size: 0px;
  50. }
  51. }
  52. :deep(.el-tree__empty-block) {
  53. min-width: 300px;
  54. }
  55. }
  56. .tree-line1 {
  57. :deep(.el-tree-node) {
  58. position: relative;
  59. padding-left: 12px; // 缩进量
  60. width: 100%;
  61. }
  62. :deep(.el-tree-node__children) {
  63. padding-left: 12px; // 缩进量
  64. }
  65. // 竖线
  66. :deep(.el-tree-node::before) {
  67. content:"";
  68. height: 100%;
  69. width: 1px;
  70. position: absolute;
  71. left: 1px;
  72. top: 0px;
  73. border-width: 1px;
  74. border-left: 2px dashed var(--el-color-primary);
  75. }
  76. // 当前层最后⼀个节点的竖线⾼度固定
  77. :deep(.el-tree-node:last-child::before){
  78. height: 15px; // 可以⾃⼰调节到合适数值
  79. }
  80. // 横线
  81. :deep(.el-tree-node::after) {
  82. content:"";
  83. width: 16px;
  84. height: 20px;
  85. position: absolute;
  86. left: 2px;
  87. top: 12px;
  88. border-width: 1px;
  89. border-top: 2px dashed var(--el-color-primary);
  90. }
  91. // 去掉最顶层的虚线,放最下⾯样式才不会被上⾯的覆盖了
  92. & > :deep(.el-tree-node::after) {
  93. border-top: none !important;
  94. border-top: 0 !important;
  95. }
  96. & > :deep(.el-tree-node::before) {
  97. border-left: none;
  98. }
  99. // 展开关闭的icon
  100. :deep(.el-tree-node__expand-icon) {
  101. font-size: 16px;
  102. &.is-leaf {
  103. color: transparent;
  104. font-size: 0;
  105. }
  106. }
  107. :deep(.el-tree__empty-block) {
  108. min-width: 300px;
  109. }
  110. }
  111. //虚拟树
  112. .hc-tree-node-v2.tree-line1 {
  113. :deep(.el-virtual-scrollbar) {
  114. right: -12px !important;
  115. }
  116. :deep(.el-tree-node) {
  117. padding-left: 0;
  118. }
  119. :deep(.el-tree-node:first-child::before) {
  120. border-left: none;
  121. }
  122. :deep(.el-tree-node:first-child::after) {
  123. border-top: none !important;
  124. border-top: 0 !important;
  125. }
  126. // 竖线
  127. :deep(.el-tree-node::before) {
  128. left: 12px;
  129. }
  130. // 横线
  131. :deep(.el-tree-node::after) {
  132. left: 14px;
  133. }
  134. :deep([class*='line-i-']) {
  135. position: relative;
  136. //竖线
  137. &::before {
  138. content:"";
  139. height: 26px;
  140. width: 1px;
  141. position: absolute;
  142. left: 12px;
  143. top: 0;
  144. border-width: 1px;
  145. border-left: 2px dashed var(--el-color-primary);
  146. }
  147. //横线
  148. &::after {
  149. content:"";
  150. width: 16px;
  151. height: 20px;
  152. position: absolute;
  153. left: 14px;
  154. top: 12px;
  155. border-width: 1px;
  156. border-top: 2px dashed var(--el-color-primary);
  157. }
  158. }
  159. //自动生成子级线条
  160. @for $i from 1 through 20 {
  161. //竖线
  162. :deep(.line-i-#{$i}::before) {
  163. left: #{(($i + 1) * 24) - 11}px;
  164. }
  165. //横线
  166. :deep(.line-i-#{$i}::after) {
  167. left: #{(($i + 1) * 24) - 9}px;
  168. }
  169. //消除非主要线条
  170. @if $i >= 3 {
  171. :deep(.el-tree-node[level="#{$i}"]) {
  172. &::after {
  173. display: none;
  174. }
  175. @if $i >= 4 {
  176. @for $x from 1 through ($i - 3) {
  177. .line-i-#{$x}::after {
  178. display: none;
  179. }
  180. }
  181. }
  182. }
  183. }
  184. }
  185. }