useDevicePixelRatio
Reactively track window.devicePixelRatio
NOTE: there is no event listener for
window.devicePixelRatiochange. So this function usesTesting media queries programmatically (window.matchMedia)applying the same mechanism as described in this example.
Demo
Device Pixel Ratio:
pixelRatio: 1Zoom in and out (or move the window to a screen with a different scaling factor) to see the value changes
Usage
js
import { useDevicePixelRatio } from '@vueuse/core'
export default {
  setup() {
    const { pixelRatio } = useDevicePixelRatio()
    return { pixelRatio }
  },
}
import { useDevicePixelRatio } from '@vueuse/core'
export default {
  setup() {
    const { pixelRatio } = useDevicePixelRatio()
    return { pixelRatio }
  },
}
Component Usage
This function also provides a renderless component version via the
@vueuse/componentspackage. Learn more about the usage.
html
<UseDevicePixelRatio v-slot="{ pixelRatio }">
  Pixel Ratio: {{ pixelRatio }}
</UseDevicePixelRatio>
<UseDevicePixelRatio v-slot="{ pixelRatio }">
  Pixel Ratio: {{ pixelRatio }}
</UseDevicePixelRatio>
Type Declarations
typescript
/**
 * Reactively track `window.devicePixelRatio`.
 *
 * @see https://vueuse.org/useDevicePixelRatio
 * @param options
 */
export declare function useDevicePixelRatio({ window }?: ConfigurableWindow): {
  pixelRatio: Ref<number>
}
export declare type UseDevicePixelRatioReturn = ReturnType<
  typeof useDevicePixelRatio
>
/**
 * Reactively track `window.devicePixelRatio`.
 *
 * @see https://vueuse.org/useDevicePixelRatio
 * @param options
 */
export declare function useDevicePixelRatio({ window }?: ConfigurableWindow): {
  pixelRatio: Ref<number>
}
export declare type UseDevicePixelRatioReturn = ReturnType<
  typeof useDevicePixelRatio
>