Sometimes, we want to display different content for mobile browsers in Vue.js apps.
In this article, we’ll look at how to display different content for mobile browsers in Vue.js apps.
Display Different Content for Mobile Browsers in Vue.js Apps
We can display different content for mobile browsers in Vue.js apps by checking the user agent of the browser to determine whether the browser is a mobile browser and display the content accordingly.
For instance, we can write:
<template>
<div id="app">
<div v-if="!isMobile()">desktop</div>
<div v-else>mobile</div>
</div>
</template>
<script>
export default {
name: "App",
methods: {
isMobile() {
return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(
navigator.userAgent
);
},
},
};
</script>
We added the isMobile method which checks the navigator.userAgent string property to see if it has any of the keywords for mobile browsers.
Then in the template, we call the isMobile method in the v-if directive to see if the browser isn’t mobile.
If it isn’t, then we display ‘desktop’, otherwise, we display ‘mobile’ with the v-else directive.
Also, we can check the width of the screen and display content accordingly.
For example, we can write:
<template>
<div id="app">
<div v-if="!isMobile">desktop</div>
<div v-else>mobile</div>
</div>
</template>
<script>
export default {
name: "App",
data() {
return {
isMobile: true,
};
},
mounted() {
this.onResize();
window.addEventListener("resize", this.onResize, { passive: true });
},
methods: {
onResize() {
this.isMobile = window.innerWidth < 600;
},
},
beforeDestroy() {
if (typeof window !== "undefined") {
window.removeEventListener("resize", this.onResize, { passive: true });
}
},
};
</script>
We call addEventListener with 'resize' to listen to the resize event.
If it’s triggered, then we run the onResize method to set the isMobile reactive property according to the screen size.
If window.innerWidth is less than 600, then we set it to true .
Otherwise, we set it to false .
In the beforeDestroy hook, we call window.removeEventListener to remove the resize event listener.
Conclusion
We can display different content for mobile browsers in Vue.js apps by checking the user agent of the browser to determine whether the browser is a mobile browser and display the content accordingly.
Also, we can check the width of the screen and display content accordingly.