110 lines
2.0 KiB
Vue
110 lines
2.0 KiB
Vue
|
<template>
|
|||
|
<view class="uni-tooltip">
|
|||
|
<slot></slot>
|
|||
|
<view v-if="content || $slots.content" class="uni-tooltip-popup" :style="initPlacement">
|
|||
|
<slot name="content">
|
|||
|
{{content}}
|
|||
|
</slot>
|
|||
|
</view>
|
|||
|
|
|||
|
</view>
|
|||
|
</template>
|
|||
|
|
|||
|
|
|||
|
<script>
|
|||
|
/**
|
|||
|
* Tooltip 提示文字
|
|||
|
* @description 常用于展示鼠标 hover 时的提示信息。
|
|||
|
* @tutorial https://uniapp.dcloud.io/component/uniui/uni-tooltip
|
|||
|
* @property {String} content 弹出层显示的内容
|
|||
|
* @property {String} placement出现位置, 目前支持:left right top bottom
|
|||
|
*/
|
|||
|
export default {
|
|||
|
name: "uni-tooltip",
|
|||
|
data() {
|
|||
|
return {
|
|||
|
|
|||
|
};
|
|||
|
},
|
|||
|
methods: {},
|
|||
|
computed: {
|
|||
|
initPlacement() {
|
|||
|
let style = {};
|
|||
|
switch (this.placement) {
|
|||
|
case 'left':
|
|||
|
style = {
|
|||
|
top: '50%',
|
|||
|
transform: 'translateY(-50%)',
|
|||
|
right: '100%',
|
|||
|
"margin-right": '10rpx',
|
|||
|
}
|
|||
|
break;
|
|||
|
case 'right':
|
|||
|
style = {
|
|||
|
top: '50%',
|
|||
|
transform: 'translateY(-50%)',
|
|||
|
left: '100%',
|
|||
|
"margin-left": '10rpx',
|
|||
|
}
|
|||
|
break;
|
|||
|
case 'top':
|
|||
|
style = {
|
|||
|
bottom: '100%',
|
|||
|
transform: 'translateX(-50%)',
|
|||
|
left: '50%',
|
|||
|
"margin-bottom": '10rpx',
|
|||
|
}
|
|||
|
break;
|
|||
|
case 'bottom':
|
|||
|
style = {
|
|||
|
top: '100%',
|
|||
|
transform: 'translateX(-50%)',
|
|||
|
left: '50%',
|
|||
|
"margin-top": '10rpx',
|
|||
|
}
|
|||
|
break;
|
|||
|
}
|
|||
|
return Object.entries(style).map(([key, value]) => `${key}: ${value}`).join('; ');
|
|||
|
}
|
|||
|
},
|
|||
|
props: {
|
|||
|
content: {
|
|||
|
type: String,
|
|||
|
default: ''
|
|||
|
},
|
|||
|
|
|||
|
placement: {
|
|||
|
type: String,
|
|||
|
default: 'bottom'
|
|||
|
},
|
|||
|
}
|
|||
|
}
|
|||
|
</script>
|
|||
|
|
|||
|
<style>
|
|||
|
.uni-tooltip {
|
|||
|
position: relative;
|
|||
|
cursor: pointer;
|
|||
|
display: inline-block;
|
|||
|
}
|
|||
|
|
|||
|
.uni-tooltip-popup {
|
|||
|
z-index: 1;
|
|||
|
display: none;
|
|||
|
position: absolute;
|
|||
|
background-color: #333;
|
|||
|
border-radius: 8px;
|
|||
|
color: #fff;
|
|||
|
font-size: 12px;
|
|||
|
text-align: left;
|
|||
|
line-height: 16px;
|
|||
|
padding: 12px;
|
|||
|
overflow: auto;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
.uni-tooltip:hover .uni-tooltip-popup {
|
|||
|
display: block;
|
|||
|
}
|
|||
|
</style>
|