| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- import { ref, nextTick, computed } from 'vue'
- import { onReady } from "@dcloudio/uni-app"
- import { query, systemInfo } from "@/utils"
- function useListHeight() {
- const navbarNodeInfo = ref(null)
- const footerHeightInfo = ref({
- height: 0,
- keyboardHeight: 0,
- bottomSafeDistance: 0
- })
- const sysInfo = ref(systemInfo())
- // 计算列表高度
- const listHeight = computed(() => {
- const { windowHeight } = sysInfo.value
- const navbarHeight = navbarNodeInfo.value ? navbarNodeInfo.value.height : 0
- let footerHeight = 0
- if (footerHeightInfo.value) {
- const { height = 0, keyboardHeight = 0, bottomSafeDistance = 0 } = footerHeightInfo.value
- footerHeight = height + keyboardHeight
- const isIOS = uni.getSystemInfoSync().platform === 'ios';
- if (isIOS) {
- footerHeight += bottomSafeDistance;
- }
- }
- return windowHeight - navbarHeight - footerHeight
- })
- onReady(() => {
- nextTick(() => {
- query(".user-chat__navbar")
- .then(result => {
- navbarNodeInfo.value = result
- })
- })
- })
- return {
- navbarNodeInfo,
- footerHeightInfo,
- sysInfo,
- listHeight
- }
- }
- export default useListHeight
|