Files
arcx-app/src/components/Tabbar.vue
T
2026-08-07 09:36:05 +08:00

71 lines
1.6 KiB
Vue

<script setup>
import { ref, computed } from "vue";
const props = defineProps({
selected: {
type: Number,
default: 0,
},
onClick: {
type: Function,
default: (index) => {},
},
});
const isIOS = computed(() => {
const systemInfo = uni.getDeviceInfo();
return systemInfo.osName === "ios";
});
</script>
<template>
<view class="tabbar" :style="{ paddingBottom: isIOS ? '30rpx' : '0rpx' }">
<view @click="onClick(0)">
<image
:src="`/static/tab-score${selected === 0 ? '-s' : ''}.png`"
mode="widthFix"
/>
<text :style="{ color: selected === 0 ? '#333' : '#999999' }">Score</text>
</view>
<view @click="onClick(1)">
<image
:src="`/static/tab-history${selected === 1 ? '-s' : ''}.png`"
mode="widthFix"
/>
<text :style="{ color: selected === 1 ? '#333' : '#999999' }"
>History</text
>
</view>
<view @click="onClick(2)">
<image
:src="`/static/tab-user${selected === 2 ? '-s' : ''}.png`"
mode="widthFix"
/>
<text :style="{ color: selected === 2 ? '#333' : '#999999' }"
>Profile</text
>
</view>
</view>
</template>
<style scoped>
.tabbar {
background: #fff;
display: flex;
align-items: center;
justify-content: space-around;
width: 100vw;
height: 100rpx;
}
.tabbar > view {
margin-top: 20rpx;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
font-size: 20rpx;
}
.tabbar > view > image {
width: 56rpx;
height: 56rpx;
margin-bottom: 5rpx;
}
</style>