index.less 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  1. @import '../../style/themes/index';
  2. @import '../../style/mixins/index';
  3. @tooltip-prefix-cls: ~'@{ant-prefix}-tooltip';
  4. @tooltip-arrow-shadow-width: 3px;
  5. @tooltip-arrow-rotate-width: sqrt(@tooltip-arrow-width * @tooltip-arrow-width * 2) +
  6. @tooltip-arrow-shadow-width * 2;
  7. @tooltip-arrow-offset-vertical: 5px; // 8 - 3px
  8. @tooltip-arrow-offset-horizontal: 13px; // 16 - 3px
  9. // Base class
  10. .@{tooltip-prefix-cls} {
  11. .reset-component();
  12. position: absolute;
  13. z-index: @zindex-tooltip;
  14. display: block;
  15. width: max-content;
  16. width: intrinsic;
  17. max-width: @tooltip-max-width;
  18. visibility: visible;
  19. &-content {
  20. position: relative;
  21. }
  22. &-hidden {
  23. display: none;
  24. }
  25. &-placement-top,
  26. &-placement-topLeft,
  27. &-placement-topRight {
  28. padding-bottom: @tooltip-distance;
  29. }
  30. &-placement-right,
  31. &-placement-rightTop,
  32. &-placement-rightBottom {
  33. padding-left: @tooltip-distance;
  34. }
  35. &-placement-bottom,
  36. &-placement-bottomLeft,
  37. &-placement-bottomRight {
  38. padding-top: @tooltip-distance;
  39. }
  40. &-placement-left,
  41. &-placement-leftTop,
  42. &-placement-leftBottom {
  43. padding-right: @tooltip-distance;
  44. }
  45. // Wrapper for the tooltip content
  46. &-inner {
  47. min-width: 30px;
  48. min-height: 32px;
  49. padding: 6px 8px;
  50. color: @tooltip-color;
  51. text-align: left;
  52. text-decoration: none;
  53. word-wrap: break-word;
  54. background-color: @tooltip-bg;
  55. border-radius: @border-radius-base;
  56. box-shadow: @box-shadow-base;
  57. }
  58. // Arrows
  59. &-arrow {
  60. position: absolute;
  61. z-index: 2;
  62. display: block;
  63. width: @tooltip-arrow-rotate-width;
  64. height: @tooltip-arrow-rotate-width;
  65. overflow: hidden;
  66. background: transparent;
  67. pointer-events: none;
  68. &-content {
  69. // Use linear gradient to mix box shadow of tooltip inner
  70. --antd-arrow-background-color: linear-gradient(
  71. to right bottom,
  72. fadeout(@tooltip-bg, 10%),
  73. @tooltip-bg
  74. );
  75. position: absolute;
  76. top: 0;
  77. right: 0;
  78. bottom: 0;
  79. left: 0;
  80. display: block;
  81. width: @tooltip-arrow-width;
  82. height: @tooltip-arrow-width;
  83. margin: auto;
  84. content: '';
  85. pointer-events: auto;
  86. .roundedArrow(@tooltip-arrow-width, 5px);
  87. }
  88. }
  89. &-placement-top &-arrow,
  90. &-placement-topLeft &-arrow,
  91. &-placement-topRight &-arrow {
  92. bottom: 0;
  93. transform: translateY(100%);
  94. &-content {
  95. box-shadow: @tooltip-arrow-shadow-width @tooltip-arrow-shadow-width 7px fade(@black, 7%);
  96. transform: translateY((-@tooltip-arrow-rotate-width / 2)) rotate(45deg);
  97. }
  98. }
  99. &-placement-top &-arrow {
  100. left: 50%;
  101. transform: translateY(100%) translateX(-50%);
  102. }
  103. &-placement-topLeft &-arrow {
  104. left: @tooltip-arrow-offset-horizontal;
  105. }
  106. &-placement-topRight &-arrow {
  107. right: @tooltip-arrow-offset-horizontal;
  108. }
  109. &-placement-right &-arrow,
  110. &-placement-rightTop &-arrow,
  111. &-placement-rightBottom &-arrow {
  112. left: 0;
  113. transform: translateX(-100%);
  114. &-content {
  115. box-shadow: -@tooltip-arrow-shadow-width @tooltip-arrow-shadow-width 7px fade(@black, 7%);
  116. transform: translateX((@tooltip-arrow-rotate-width / 2)) rotate(135deg);
  117. }
  118. }
  119. &-placement-right &-arrow {
  120. top: 50%;
  121. transform: translateX(-100%) translateY(-50%);
  122. }
  123. &-placement-rightTop &-arrow {
  124. top: @tooltip-arrow-offset-vertical;
  125. }
  126. &-placement-rightBottom &-arrow {
  127. bottom: @tooltip-arrow-offset-vertical;
  128. }
  129. &-placement-left &-arrow,
  130. &-placement-leftTop &-arrow,
  131. &-placement-leftBottom &-arrow {
  132. right: 0;
  133. transform: translateX(100%);
  134. &-content {
  135. box-shadow: @tooltip-arrow-shadow-width -@tooltip-arrow-shadow-width 7px fade(@black, 7%);
  136. transform: translateX((-@tooltip-arrow-rotate-width / 2)) rotate(315deg);
  137. }
  138. }
  139. &-placement-left &-arrow {
  140. top: 50%;
  141. transform: translateX(100%) translateY(-50%);
  142. }
  143. &-placement-leftTop &-arrow {
  144. top: @tooltip-arrow-offset-vertical;
  145. }
  146. &-placement-leftBottom &-arrow {
  147. bottom: @tooltip-arrow-offset-vertical;
  148. }
  149. &-placement-bottom &-arrow,
  150. &-placement-bottomLeft &-arrow,
  151. &-placement-bottomRight &-arrow {
  152. top: 0;
  153. transform: translateY(-100%);
  154. &-content {
  155. box-shadow: -@tooltip-arrow-shadow-width -@tooltip-arrow-shadow-width 7px fade(@black, 7%);
  156. transform: translateY((@tooltip-arrow-rotate-width / 2)) rotate(225deg);
  157. }
  158. }
  159. &-placement-bottom &-arrow {
  160. left: 50%;
  161. transform: translateY(-100%) translateX(-50%);
  162. }
  163. &-placement-bottomLeft &-arrow {
  164. left: @tooltip-arrow-offset-horizontal;
  165. }
  166. &-placement-bottomRight &-arrow {
  167. right: @tooltip-arrow-offset-horizontal;
  168. }
  169. }
  170. .generator-tooltip-preset-color(@i: length(@preset-colors)) when (@i > 0) {
  171. .generator-tooltip-preset-color(@i - 1);
  172. @color: extract(@preset-colors, @i);
  173. @lightColor: '@{color}-6';
  174. .@{tooltip-prefix-cls}-@{color} {
  175. .@{tooltip-prefix-cls}-inner {
  176. background-color: @@lightColor;
  177. }
  178. .@{tooltip-prefix-cls}-arrow {
  179. &-content::before {
  180. background: @@lightColor;
  181. }
  182. }
  183. }
  184. }
  185. .generator-tooltip-preset-color();
  186. @import './rtl';