Skip to content

Commit af9371f

Browse files
committed
style: tooltip
1 parent 5c136e0 commit af9371f

File tree

2 files changed

+36
-18
lines changed

2 files changed

+36
-18
lines changed

components/tooltip/Tooltip.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -188,11 +188,11 @@ export default defineComponent({
188188
const onPopupAlign = (domNode: HTMLElement, align: any) => {
189189
const placements = tooltipPlacements.value;
190190
// 当前返回的位置
191-
const placement = Object.keys(placements).filter(
191+
const placement = Object.keys(placements).find(
192192
key =>
193193
placements[key].points[0] === align.points[0] &&
194194
placements[key].points[1] === align.points[1],
195-
)[0];
195+
);
196196
if (!placement) {
197197
return;
198198
}
@@ -242,7 +242,7 @@ export default defineComponent({
242242
let arrowContentStyle: CSSProperties;
243243
if (color && !PresetColorRegex.test(color)) {
244244
formattedOverlayInnerStyle = { backgroundColor: color };
245-
arrowContentStyle = { backgroundColor: color };
245+
arrowContentStyle = { '--antd-arrow-background-color': color };
246246
}
247247

248248
const vcTooltipProps = {

components/tooltip/style/index.less

Lines changed: 33 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,14 @@
1919
z-index: @zindex-tooltip;
2020
display: block;
2121
width: max-content;
22+
width: intrinsic;
2223
max-width: @tooltip-max-width;
2324
visibility: visible;
2425

26+
&-content {
27+
position: relative;
28+
}
29+
2530
&-hidden {
2631
display: none;
2732
}
@@ -60,13 +65,14 @@
6065
text-decoration: none;
6166
word-wrap: break-word;
6267
background-color: @tooltip-bg;
63-
border-radius: @border-radius-base;
68+
border-radius: @tooltip-border-radius;
6469
box-shadow: @box-shadow-base;
6570
}
6671

6772
// Arrows
6873
&-arrow {
6974
position: absolute;
75+
z-index: 2;
7076
display: block;
7177
width: @tooltip-arrow-rotate-width;
7278
height: @tooltip-arrow-rotate-width;
@@ -75,6 +81,13 @@
7581
pointer-events: none;
7682

7783
&-content {
84+
// Use linear gradient to mix box shadow of tooltip inner
85+
--antd-arrow-background-color: linear-gradient(
86+
to right bottom,
87+
fadeout(@tooltip-bg, 10%),
88+
@tooltip-bg
89+
);
90+
7891
position: absolute;
7992
top: 0;
8093
right: 0;
@@ -84,16 +97,18 @@
8497
width: @tooltip-arrow-width;
8598
height: @tooltip-arrow-width;
8699
margin: auto;
87-
background-color: @tooltip-bg;
100+
background-color: transparent;
88101
content: '';
89102
pointer-events: auto;
103+
.roundedArrow(@tooltip-arrow-width, 5px);
90104
}
91105
}
92106

93107
&-placement-top &-arrow,
94108
&-placement-topLeft &-arrow,
95109
&-placement-topRight &-arrow {
96-
bottom: @tooltip-distance - @tooltip-arrow-rotate-width;
110+
bottom: 0;
111+
transform: translateY(100%);
97112

98113
&-content {
99114
box-shadow: @tooltip-arrow-shadow-width @tooltip-arrow-shadow-width 7px fade(@black, 7%);
@@ -103,7 +118,7 @@
103118

104119
&-placement-top &-arrow {
105120
left: 50%;
106-
transform: translateX(-50%);
121+
transform: translateY(100%) translateX(-50%);
107122
}
108123

109124
&-placement-topLeft &-arrow {
@@ -117,17 +132,18 @@
117132
&-placement-right &-arrow,
118133
&-placement-rightTop &-arrow,
119134
&-placement-rightBottom &-arrow {
120-
left: @tooltip-distance - @tooltip-arrow-rotate-width;
135+
left: 0;
136+
transform: translateX(-100%);
121137

122138
&-content {
123139
box-shadow: -@tooltip-arrow-shadow-width @tooltip-arrow-shadow-width 7px fade(@black, 7%);
124-
transform: translateX((@tooltip-arrow-rotate-width / 2)) rotate(45deg);
140+
transform: translateX((@tooltip-arrow-rotate-width / 2)) rotate(135deg);
125141
}
126142
}
127143

128144
&-placement-right &-arrow {
129145
top: 50%;
130-
transform: translateY(-50%);
146+
transform: translateX(-100%) translateY(-50%);
131147
}
132148

133149
&-placement-rightTop &-arrow {
@@ -141,17 +157,18 @@
141157
&-placement-left &-arrow,
142158
&-placement-leftTop &-arrow,
143159
&-placement-leftBottom &-arrow {
144-
right: @tooltip-distance - @tooltip-arrow-rotate-width;
160+
right: 0;
161+
transform: translateX(100%);
145162

146163
&-content {
147164
box-shadow: @tooltip-arrow-shadow-width -@tooltip-arrow-shadow-width 7px fade(@black, 7%);
148-
transform: translateX((-@tooltip-arrow-rotate-width / 2)) rotate(45deg);
165+
transform: translateX((-@tooltip-arrow-rotate-width / 2)) rotate(315deg);
149166
}
150167
}
151168

152169
&-placement-left &-arrow {
153170
top: 50%;
154-
transform: translateY(-50%);
171+
transform: translateX(100%) translateY(-50%);
155172
}
156173

157174
&-placement-leftTop &-arrow {
@@ -165,17 +182,18 @@
165182
&-placement-bottom &-arrow,
166183
&-placement-bottomLeft &-arrow,
167184
&-placement-bottomRight &-arrow {
168-
top: @tooltip-distance - @tooltip-arrow-rotate-width;
185+
top: 0;
186+
transform: translateY(-100%);
169187

170188
&-content {
171189
box-shadow: -@tooltip-arrow-shadow-width -@tooltip-arrow-shadow-width 7px fade(@black, 7%);
172-
transform: translateY((@tooltip-arrow-rotate-width / 2)) rotate(45deg);
190+
transform: translateY((@tooltip-arrow-rotate-width / 2)) rotate(225deg);
173191
}
174192
}
175193

176194
&-placement-bottom &-arrow {
177195
left: 50%;
178-
transform: translateX(-50%);
196+
transform: translateY(-100%) translateX(-50%);
179197
}
180198

181199
&-placement-bottomLeft &-arrow {
@@ -196,8 +214,8 @@
196214
background-color: @@lightColor;
197215
}
198216
.@{tooltip-prefix-cls}-arrow {
199-
&-content {
200-
background-color: @@lightColor;
217+
&-content::before {
218+
background: @@lightColor;
201219
}
202220
}
203221
}

0 commit comments

Comments
 (0)