Files
shoot-miniprograms/src/components/AppBackground.vue
2025-09-25 10:16:23 +08:00

84 lines
1.5 KiB
Vue

<script setup>
import { ref, onMounted } from "vue";
const props = defineProps({
type: {
type: Number,
default: 0,
},
bgColor: {
type: String,
default: "#050b19",
},
});
const capsuleHeight = ref(0);
onMounted(() => {
const menuBtnInfo = uni.getMenuButtonBoundingClientRect();
capsuleHeight.value = menuBtnInfo.top + 50 - 9;
});
</script>
<template>
<view class="background" :style="{ backgroundColor: bgColor }">
<image
class="bg-image"
v-if="type === 0"
src="../static/app-bg.png"
mode="widthFix"
/>
<image
class="bg-image"
v-if="type === 1"
src="../static/app-bg2.png"
mode="widthFix"
/>
<image
class="bg-image"
v-if="type === 2"
src="../static/app-bg3.png"
:style="{ height: capsuleHeight + 'px' }"
/>
<image
class="bg-image"
v-if="type === 3"
src="../static/app-bg4.png"
mode="widthFix"
/>
<image
class="bg-image"
v-if="type === 4"
src="../static/app-bg5.png"
mode="widthFix"
/>
<view class="bg-overlay" v-if="type === 0"></view>
</view>
</template>
<style scoped>
.background {
position: fixed;
width: 100%;
height: 100%;
left: 0;
top: 0;
z-index: -1;
}
.bg-image {
width: 100%;
height: 100%;
}
.bg-overlay {
position: absolute;
width: 100%;
height: 100%;
left: 0;
top: 0;
background: linear-gradient(
to bottom,
rgba(26, 26, 26, 0.2),
rgba(0, 0, 0, 0.2)
);
}
</style>