You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
354 lines
6.1 KiB
354 lines
6.1 KiB
<template> |
|
<view class="tui-tag" :hover-class="hover ? 'tui-tag-opcity' : ''" :hover-stay-time="150" :class="[originLeft ? 'tui-origin-left' : '', originRight ? 'tui-origin-right' : '', getClassName(shape, plain), getTypeClass(type, plain)]" |
|
:style="{ transform: `scale(${scaleMultiple})`, padding: padding, margin: margin, fontSize: size, lineHeight: size }" |
|
@tap="handleClick"> |
|
<slot></slot> |
|
</view> |
|
</template> |
|
|
|
<script> |
|
export default { |
|
name: 'tuiTag', |
|
props: { |
|
type: { |
|
type: String, |
|
default: 'primary' |
|
}, |
|
//padding |
|
padding: { |
|
type: String, |
|
default: '16rpx 26rpx' |
|
}, |
|
margin: { |
|
type: String, |
|
default: '0' |
|
}, |
|
//文字大小 rpx |
|
size: { |
|
type: String, |
|
default: '28rpx' |
|
}, |
|
// circle, square,circleLeft,circleRight |
|
shape: { |
|
type: String, |
|
default: 'square' |
|
}, |
|
//是否空心 |
|
plain: { |
|
type: Boolean, |
|
default: false |
|
}, |
|
//点击效果 |
|
hover: { |
|
type: Boolean, |
|
default: false |
|
}, |
|
//缩放倍数 |
|
scaleMultiple: { |
|
type: Number, |
|
default: 1 |
|
}, |
|
originLeft: { |
|
type: Boolean, |
|
default: false |
|
}, |
|
originRight: { |
|
type: Boolean, |
|
default: false |
|
}, |
|
index: { |
|
type: Number, |
|
default: 0 |
|
} |
|
}, |
|
methods: { |
|
handleClick() { |
|
this.$emit('click', { |
|
index: this.index |
|
}); |
|
}, |
|
getTypeClass: function(type, plain) { |
|
return plain ? 'tui-' + type + '-outline' : 'tui-' + type; |
|
}, |
|
getClassName: function(shape, plain) { |
|
//circle, square,circleLeft,circleRight |
|
var className = plain ? 'tui-tag-outline ' : ''; |
|
if (shape != 'square') { |
|
if (shape == 'circle') { |
|
className = className + (plain ? 'tui-tag-outline-fillet' : 'tui-tag-fillet'); |
|
} else if (shape == 'circleLeft') { |
|
className = className + 'tui-tag-fillet-left'; |
|
} else if (shape == 'circleRight') { |
|
className = className + 'tui-tag-fillet-right'; |
|
} |
|
} |
|
return className; |
|
} |
|
} |
|
}; |
|
</script> |
|
|
|
<style scoped> |
|
/* color start*/ |
|
|
|
.tui-primary { |
|
background-color: #5677fc !important; |
|
color: #fff; |
|
} |
|
|
|
.tui-light-primary { |
|
background-color: #5c8dff !important; |
|
color: #fff; |
|
} |
|
|
|
.tui-dark-primary { |
|
background-color: #4a67d6 !important; |
|
color: #fff; |
|
} |
|
|
|
.tui-dLight-primary { |
|
background-color: #4e77d9 !important; |
|
color: #fff; |
|
} |
|
|
|
.tui-danger { |
|
background-color: #ed3f14 !important; |
|
color: #fff; |
|
} |
|
|
|
.tui-red { |
|
background-color: #ff201f !important; |
|
color: #fff; |
|
} |
|
|
|
.tui-warning { |
|
background-color: #ff7900 !important; |
|
color: #fff; |
|
} |
|
|
|
.tui-green { |
|
background-color: #19be6b !important; |
|
color: #fff; |
|
} |
|
|
|
.tui-high-green { |
|
background-color: #52dcae !important; |
|
color: #52dcae; |
|
} |
|
|
|
.tui-black { |
|
background-color: #000 !important; |
|
color: #fff; |
|
} |
|
|
|
.tui-white { |
|
background-color: #fff !important; |
|
color: #333 !important; |
|
} |
|
|
|
.tui-translucent { |
|
background-color: rgba(0, 0, 0, 0.7); |
|
} |
|
|
|
.tui-light-black { |
|
background-color: #333 !important; |
|
} |
|
|
|
.tui-gray { |
|
background-color: #ededed !important; |
|
} |
|
|
|
.tui-phcolor-gray { |
|
background-color: #ccc !important; |
|
} |
|
|
|
.tui-divider-gray { |
|
background-color: #eaeef1 !important; |
|
} |
|
|
|
.tui-btn-gray { |
|
background-color: #ededed !important; |
|
color: #999 !important; |
|
} |
|
|
|
.tui-hover-gray { |
|
background-color: #f7f7f9 !important; |
|
} |
|
|
|
.tui-bg-gray { |
|
background-color: #fafafa !important; |
|
} |
|
|
|
.tui-light-blue { |
|
background-color: #ecf6fd; |
|
color: #4dabeb !important; |
|
} |
|
|
|
.tui-light-brownish { |
|
background-color: #fcebef; |
|
color: #8a5966 !important; |
|
} |
|
|
|
.tui-light-orange { |
|
background-color: #fef5eb; |
|
color: #faa851 !important; |
|
} |
|
|
|
.tui-light-green { |
|
background-color: #e8f6e8; |
|
color: #44cf85 !important; |
|
} |
|
|
|
.tui-primary-outline::after { |
|
border: 1px solid #5677fc !important; |
|
} |
|
|
|
.tui-primary-outline { |
|
color: #5677fc !important; |
|
background-color: none; |
|
} |
|
|
|
.tui-danger-outline { |
|
color: #ed3f14 !important; |
|
background-color: none; |
|
} |
|
|
|
.tui-danger-outline::after { |
|
border: 1px solid #ed3f14 !important; |
|
} |
|
|
|
.tui-red-outline { |
|
color: #ff201f !important; |
|
background-color: none; |
|
} |
|
|
|
.tui-red-outline::after { |
|
border: 1px solid #ff201f !important; |
|
} |
|
|
|
.tui-warning-outline { |
|
color: #ff7900 !important; |
|
background-color: none; |
|
} |
|
|
|
.tui-warning-outline::after { |
|
border: 1px solid #ff7900 !important; |
|
} |
|
|
|
.tui-green-outline { |
|
color: #44cf85 !important; |
|
background-color: none; |
|
} |
|
|
|
.tui-green-outline::after { |
|
border: 1px solid #44cf85 !important; |
|
} |
|
|
|
.tui-high-green-outline { |
|
color: #52dcae !important; |
|
background-color: none; |
|
} |
|
|
|
.tui-high-green-outline::after { |
|
border: 1px solid #52dcae !important; |
|
} |
|
|
|
.tui-gray-outline { |
|
color: #999 !important; |
|
background-color: none; |
|
} |
|
|
|
.tui-gray-outline::after { |
|
border: 1px solid #ccc !important; |
|
} |
|
|
|
.tui-black-outline { |
|
color: #333 !important; |
|
background-color: none; |
|
} |
|
|
|
.tui-black-outline::after { |
|
border: 1px solid #333 !important; |
|
} |
|
|
|
.tui-white-outline { |
|
color: #fff !important; |
|
background-color: none; |
|
} |
|
|
|
.tui-white-outline::after { |
|
border: 1px solid #fff !important; |
|
} |
|
|
|
/* color end*/ |
|
|
|
/* tag start*/ |
|
|
|
.tui-tag { |
|
display: flex; |
|
align-items: center; |
|
justify-content: center; |
|
border-radius: 6rpx; |
|
flex-shrink: 0; |
|
} |
|
|
|
.tui-tag-outline { |
|
position: relative; |
|
background-color: none; |
|
color: #5677fc; |
|
} |
|
|
|
.tui-tag-outline::after { |
|
content: ' '; |
|
position: absolute; |
|
width: 200%; |
|
height: 200%; |
|
transform: scale(0.5) translateZ(0); |
|
transform-origin: 0 0; |
|
box-sizing: border-box; |
|
left: 0; |
|
top: 0; |
|
border-radius: 12rpx; |
|
} |
|
|
|
.tui-tag-fillet { |
|
border-radius: 50rpx; |
|
} |
|
|
|
.tui-white.tui-tag-fillet::after { |
|
border-radius: 80rpx; |
|
} |
|
|
|
.tui-tag-outline-fillet::after { |
|
border-radius: 80rpx; |
|
} |
|
|
|
.tui-tag-fillet-left { |
|
border-radius: 50rpx 0 0 50rpx; |
|
} |
|
|
|
.tui-tag-fillet-right { |
|
border-radius: 0 50rpx 50rpx 0; |
|
} |
|
|
|
.tui-tag-fillet-left.tui-tag-outline::after { |
|
border-radius: 100rpx 0 0 100rpx; |
|
} |
|
|
|
.tui-tag-fillet-right.tui-tag-outline::after { |
|
border-radius: 0 100rpx 100rpx 0; |
|
} |
|
|
|
/* tag end*/ |
|
.tui-origin-left { |
|
transform-origin: 0 center; |
|
} |
|
|
|
.tui-origin-right { |
|
transform-origin: 100% center; |
|
} |
|
|
|
.tui-tag-opcity { |
|
opacity: 0.5; |
|
} |
|
</style>
|
|
|