useSizeAdapt.js 958 B

123456789101112131415161718192021222324252627282930
  1. // 用法:
  2. // width: calc(950 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
  3. import { onBeforeUnmount, ref } from 'vue'
  4. export default function useSizeAdapt(windowWidthWhenDesign = 375, windowHeightWhenDesign = 724) {
  5. const windowSizeInCssForRef = ref('')
  6. const windowSizeWhenDesignForRef = ref('')
  7. function compute() {
  8. if (window.innerWidth / window.innerHeight > windowWidthWhenDesign / windowHeightWhenDesign) {
  9. windowSizeWhenDesignForRef.value = windowHeightWhenDesign
  10. windowSizeInCssForRef.value = window.innerHeight + 'px'
  11. } else {
  12. windowSizeWhenDesignForRef.value = windowWidthWhenDesign
  13. windowSizeInCssForRef.value = '100vw'
  14. }
  15. }
  16. compute()
  17. window.addEventListener('resize', compute)
  18. onBeforeUnmount(() => {
  19. window.removeEventListener('resize', compute)
  20. })
  21. return {
  22. windowSizeInCssForRef,
  23. windowSizeWhenDesignForRef,
  24. }
  25. }