Files
Smart-Farm/uniapp/uni-app/components/fixed.vue
2025-12-22 17:13:05 +08:00

80 lines
1.2 KiB
Vue

<template>
<view>
<view class="ui-fixed" :class="{'fixed-top':position=='top','fixed-bottom':position=='bottom'}"
:style="{zIndex:zIndex}">
<slot></slot>
</view>
<view :style="{height:height+'px'}"></view>
</view>
</template>
<script>
export default {
name: 'fixed',
props: {
position: {
type: [String],
default () {
return 'top'
}
},
zIndex: {
type: Number,
default () {
return 999
}
},
refresh: {
type: Boolean,
default () {
return false
}
}
},
data() {
return {
height: uni.getSystemInfoSync().windowWidth * 100 / 750
}
},
mounted() {
this.setHeight();
},
onReady() {
this.setHeight();
},
watch: {
refresh(val) {
console.log(val, "=======val")
if (val) return
this.setHeight()
},
},
methods: {
setHeight() {
var _this = this;
var query = uni.createSelectorQuery().in(this);
query.select('.ui-fixed').boundingClientRect(function(res) {
_this.height = res.height;
}).exec();
}
},
}
</script>
<style>
.ui-fixed {
position: fixed;
left: 0;
width: 100%;
}
.fixed-top {
top: 0;
}
.fixed-bottom {
bottom: 0;
}
</style>