start-menu-button.vue 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. <script setup lang="ts">
  2. import { onMounted, ref } from 'vue'
  3. const menuBtnClientRect = ref<UniNamespace.GetMenuButtonBoundingClientRectRes>({
  4. width: 0,
  5. height: 0,
  6. top: 0,
  7. right: 0,
  8. bottom: 0,
  9. left: 0,
  10. })
  11. const startMenuBtnStyle = ref({
  12. width: '0px',
  13. height: '0px',
  14. marginLeft: '0px',
  15. })
  16. // 获取小程序胶囊距离
  17. onMounted(async () => {
  18. const { windowHeight, windowWidth } = await uni.getSystemInfo()
  19. // console.log(windowHeight, windowWidth)
  20. // #ifdef MP-WEIXIN
  21. menuBtnClientRect.value = await uni.getMenuButtonBoundingClientRect()
  22. // console.log(menuBtnClientRect.value)
  23. startMenuBtnStyle.value = {
  24. width: menuBtnClientRect.value.width + 'px',
  25. height: menuBtnClientRect.value.height + 'px',
  26. marginLeft: `${windowWidth - menuBtnClientRect.value.right}px`,
  27. }
  28. // console.log(startMenuBtnStyle.value)
  29. // #endif
  30. })
  31. </script>
  32. <template>
  33. <div>
  34. <div :style="{ height: menuBtnClientRect.top + 'px' }"></div>
  35. <div class="bg-red rounded-full flex items-center px-3 box-border" :style="startMenuBtnStyle">
  36. 扫一扫
  37. </div>
  38. </div>
  39. </template>