97 lines
1.9 KiB
Vue
97 lines
1.9 KiB
Vue
|
<template>
|
||
|
<div class="md-tip" :class="wrapperCls">
|
||
|
<template>{{content}}</template>
|
||
|
<md-icon name="cross" size="md" @click.native="$_onClose" />
|
||
|
</div>
|
||
|
</template>
|
||
|
|
||
|
<script>
import Icon from '../icon'
|
||
|
|
||
|
export default {
|
||
|
name: 'md-tip-content',
|
||
|
components: {
|
||
|
[Icon.name]: Icon,
|
||
|
},
|
||
|
|
||
|
props: {
|
||
|
placement: {
|
||
|
type: String,
|
||
|
},
|
||
|
content: {
|
||
|
type: String,
|
||
|
},
|
||
|
},
|
||
|
|
||
|
computed: {
|
||
|
wrapperCls() {
|
||
|
const cls = {}
|
||
|
|
||
|
if (['left', 'bottom', 'right'].indexOf(this.placement) !== -1) {
|
||
|
cls[`is-${this.placement}`] = true
|
||
|
}
|
||
|
|
||
|
return cls
|
||
|
},
|
||
|
},
|
||
|
|
||
|
methods: {
|
||
|
$_onClose() {
|
||
|
this.$emit('close')
|
||
|
},
|
||
|
},
|
||
|
}
|
||
|
</script>
|
||
|
|
||
|
|
||
|
<style lang="stylus">
|
||
|
.md-tip
|
||
|
display inline-block
|
||
|
max-width 400px
|
||
|
color tip-color
|
||
|
font-size tip-font-size
|
||
|
padding 20px 50px 20px 30px
|
||
|
border-radius 4px
|
||
|
background-color tip-fill
|
||
|
z-index tip-zindex
|
||
|
&::after
|
||
|
content ''
|
||
|
position absolute
|
||
|
bottom -10px
|
||
|
left 50%
|
||
|
margin-left -11px
|
||
|
width 0
|
||
|
height 0
|
||
|
border-style solid
|
||
|
border-width 10px 11px 0 11px
|
||
|
border-color tip-fill transparent transparent transparent
|
||
|
&.is-bottom::after
|
||
|
bottom auto
|
||
|
top -10px
|
||
|
border-width 0 11px 10px 11px
|
||
|
border-color transparent transparent tip-fill transparent
|
||
|
&.is-left::after
|
||
|
bottom auto
|
||
|
right -10px
|
||
|
left auto
|
||
|
top 50%
|
||
|
margin-left 0
|
||
|
margin-top -11px
|
||
|
border-width 11px 0 11px 10px
|
||
|
border-color transparent transparent transparent tip-fill
|
||
|
&.is-right::after
|
||
|
bottom auto
|
||
|
left -10px
|
||
|
right auto
|
||
|
top 50%
|
||
|
margin-left 0
|
||
|
margin-top -11px
|
||
|
border-width 11px 10px 11px 0
|
||
|
border-color transparent tip-fill transparent transparent
|
||
|
svg
|
||
|
position absolute
|
||
|
right 16px
|
||
|
top 20px
|
||
|
width 16px
|
||
|
height 16px
|
||
|
</style>
|