|
@@ -0,0 +1,100 @@
|
|
|
+<template>
|
|
|
+ <view class="weui-tabbar" :class="extClass">
|
|
|
+ <!-- 选中的时候往weui-tabbar__item加class:weui-bar__item_on -->
|
|
|
+ <view @click="tabChange(index)" v-for="(item, index) in list" :key="index" class="weui-tabbar__item" :class="{'weui-bar__item_on':index === current}">
|
|
|
+ <view style="position: relative;display:inline-block;"><image :src="current === index ? item.selectedIconPath : item.iconPath" class="weui-tabbar__icon"></image></view>
|
|
|
+ <view class="weui-tabbar__label">{{ item.text }}</view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+export default {
|
|
|
+ props: {
|
|
|
+ list: {
|
|
|
+ type: Array,
|
|
|
+ default: function() {
|
|
|
+ return []
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ extClass: '',
|
|
|
+ current: 1
|
|
|
+ };
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ tabChange(index) {
|
|
|
+ if (index === this.current) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ this.current = index;
|
|
|
+ this.$emit('tabChange',index)
|
|
|
+ }
|
|
|
+ }
|
|
|
+};
|
|
|
+</script>
|
|
|
+
|
|
|
+<style lang="scss" scoped >
|
|
|
+.weui-tabbar {
|
|
|
+ display: flex;
|
|
|
+ position: relative;
|
|
|
+ z-index: 500;
|
|
|
+ background-color: #ffffff;
|
|
|
+}
|
|
|
+.weui-tabbar:before {
|
|
|
+ content: ' ';
|
|
|
+ position: absolute;
|
|
|
+ left: 0;
|
|
|
+ top: 0;
|
|
|
+ right: 0;
|
|
|
+ height: 1px;
|
|
|
+ border-top: 1rpx solid rgba(0, 0, 0, 0.1);
|
|
|
+ color: rgba(0, 0, 0, 0.1);
|
|
|
+}
|
|
|
+.weui-tabbar__item {
|
|
|
+ display: block;
|
|
|
+ flex: 1;
|
|
|
+ padding: 8px 0 4px;
|
|
|
+ padding-bottom: calc(8px + constant(safe-area-inset-bottom));
|
|
|
+ padding-bottom: calc(8px + env(safe-area-inset-bottom));
|
|
|
+ font-size: 0;
|
|
|
+ color: rgba(0, 0, 0, 0.5);
|
|
|
+ text-align: center;
|
|
|
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
|
|
|
+}
|
|
|
+.weui-tabbar__item:first-child {
|
|
|
+ padding-left: constant(safe-area-inset-left);
|
|
|
+ padding-left: env(safe-area-inset-left);
|
|
|
+}
|
|
|
+.weui-tabbar__item:last-child {
|
|
|
+ padding-right: constant(safe-area-inset-right);
|
|
|
+ padding-right: env(safe-area-inset-right);
|
|
|
+}
|
|
|
+.weui-tabbar__item.weui-bar__item_on .weui-tabbar__icon,
|
|
|
+.weui-tabbar__item.weui-bar__item_on .weui-tabbar__icon > i,
|
|
|
+.weui-tabbar__item.weui-bar__item_on .weui-tabbar__label {
|
|
|
+ color: #26D18B;
|
|
|
+}
|
|
|
+.weui-tabbar__icon {
|
|
|
+ display: inline-block;
|
|
|
+ width: 28px;
|
|
|
+ height: 28px;
|
|
|
+ margin-bottom: 2px;
|
|
|
+}
|
|
|
+i.weui-tabbar__icon,
|
|
|
+.weui-tabbar__icon > i {
|
|
|
+ font-size: 24px;
|
|
|
+ color: rgba(0, 0, 0, 0.5);
|
|
|
+}
|
|
|
+.weui-tabbar__icon image {
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
+}
|
|
|
+.weui-tabbar__label {
|
|
|
+ color: #bfbfbf;
|
|
|
+ font-size: 10px;
|
|
|
+ line-height: 1.4;
|
|
|
+}
|
|
|
+</style>
|