I'm using vue.js 2.6.10 and element-ui 2.15.1. I have the following element-ui component:
<el-tooltip content="Top center" placement="top">
<span>Dark</span>
</el-tooltip>
And as default I'm getting a tooltip with black background.
From the documentation I see there is the effect
attribute with the accepted values of dark
/light
.
I wonder if there is a way to change the background color of el-tooltip?
Edit:
Tried:
<el-tooltip content="Top center" placement="top" effect="light" class="custom-tooltip">
<span>Dark</span>
</el-tooltip>
<style scoped>
.custom-tooltip {
background-color: #ffcc00;
color: #000;
}
</style>
And got:
Also Tried (following the example):
<el-tooltip content="Top center" placement="top" effect="light" effect="customized">
<span>Dark</span>
</el-tooltip>
<style>
.el-popper.is-customized {
/* Set padding to ensure the height is 32px */
padding: 6px 12px;
background: linear-gradient(90deg, rgb(159, 229, 151), rgb(204, 229, 129));
}
.el-popper.is-customized .el-popper__arrow::before {
background: linear-gradient(45deg, #b2e68d, #bce689);
right: 0;
}
</style>
And got:
Custom styling can always be achieved with CSS as long as you know the right elements to select. I created a codepen with Vue 2 and Element UI v2 and inspected the DOM to determine exactly what CSS needs to be applied. Here is what I came up with:
<el-tooltip content="Top center" placement="top" effect="customized">
<el-button>Custom Tooltip</el-button>
</el-tooltip>
/* tooltip body */
.el-tooltip__popper.is-customized {
background: #50C878;
}
/* tooltip arrow body */
.el-tooltip__popper.is-customized .popper__arrow {
border-top-color: #50C878;
}
/* tooltip arrow border */
.el-tooltip__popper.is-customized .popper__arrow::after {
border-top-color: #50C878;
}
The code above will only work with tooltips with placement="top"
. For other placements you need to change border-{placement}-color
to match. For example:
placement="bottom"
requires changing border-bottom-color
placement="left"
requires changing border-left-color
If you need to customize multiple different positioned tooltips, you will want to give each a unique effect
name, which changes the CSS selector for .el-tooltip__popper.is-{effectName}
, so then the CSS won't clash.