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.
355 lines
6.1 KiB
355 lines
6.1 KiB
4 years ago
|
<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>
|