- 97
- 0
初学vue,想要在检测到旋转屏幕后显示遮罩层。
现在我的想法是在mounted时期添加监听屏幕旋转事件,如果检测到了,则修改data中的值isShowCover来改变v-show中的真假值,来达到显示隐藏遮罩层的目的。
但是mounted时期好像取不到data中的值。我是用alert来判断取不取的到值的.
this.isShowCover 是undefined
this.showCover() alert都不提示了。
this.$options.methods.showCover() alert也不提示了。
所以想问的是想要监听到旋转屏幕事件,这个事件应该加在哪里?检测到旋转屏幕事件后,怎么才能把isShowCover的值改变来显示隐藏遮罩层?data中的值大概是什么时候可以取到并且修改?
提前感谢下回答的大佬。
下面附主要代码。
<template>
<div v-show="isShowCover" style = "position:fixed;background:transparent;background:rgba(0,0,0,0.5);margin:auto;top:0;bottom:0;left:0;right:0">
<img src="../../pic/rotatePic.png" style="width:200px;height:200px;margin:auto;top:0;bottom:0;left:0;right:0">
</div>
</template>
<script>
export default {
data: () => ({
isShowCover: false
}),
mounted() {
window.addEventListener(
"onorientationchange" in window ? "orientationchange" : "resize",
function() {
if (window.orientation === 90 || window.orientation === -90) {
//想把下面的alert换成能够控制v-show的代码
alert(
this.$options.methods.showCover() +
"横屏可能导致页面异常,建议竖屏操作!"
);
//alert("123");仅alert纯文本可以正常运行
}
//window.location.reload();
},
false
);
},
methods:{
showCover() {
return "123";
},
}
</script> - 共 0 条
- 全部回答
-
换我堕落ミ 普通会员 1楼
在Vue.js中,我们可以使用
@media媒体查询来检测屏幕的旋转,以及屏幕是否横竖屏。以下是一个简单的例子,展示了如何在移动设备上检测旋转和横竖屏:- 首先,我们需要在你的项目中引入
vue和vue-style-loader,并创建一个名为App.vue的文件:
```html
Rotating Screen
Left to right rotation mode
Portrait Screen
Up to down rotation mode
```
-
在
App.vue文件中,我们定义了一个isMobile数据属性来表示屏幕是否是移动设备,以及isPortrait和isOrientation变量来分别存储屏幕的旋转模式和横竖屏状态。我们还定义了rotateScreen、rotateScreenToTop、rotateScreenToBottom、rotateScreenToLeft和rotateScreenToRight方法来分别执行不同的旋转和缩放操作。 -
在
methods部分,我们定义了isPortrait和isOrientation方法来获取屏幕的旋转模式和横竖屏状态。然后,我们根据屏幕的旋转模式和横竖屏状态来调用相应的旋转操作方法。 -
在
rotateScreen方法中,我们首先检查屏幕是否是移动设备,然后根据屏幕的旋转模式('portrait'或'landscape')调用相应的旋转操作方法。例如,如果是横屏,我们调用rotateScreenToTop或rotateScreenToBottom方法来将屏幕旋转到顶部或底部;如果是竖屏,我们调用rotateScreenToLeft或rotateScreenToRight方法来将屏幕旋转到左或右。 -
在
rotateScreenToTop和rotateScreenToBottom方法中,我们分别调用transform: translateY(-50%)和transform: translateY(50%)来将屏幕垂直或水平居中,并将transform: rotate(90deg)来旋转屏幕。 -
在
rotateScreenToLeft和rotateScreenToRight方法中,我们分别调用transform: translateX(-50%)和transform: translateX(50%)来将屏幕水平或垂直居中,并将transform: rotate(90deg)来旋转屏幕。 -
最后,我们通过
this.$router.push({ path: 'rotate-screen' })或this.$router.push({ path: 'rotate-screen-to-top' })或this.$router.push({ path: 'rotate-screen-to-bottom' })或this.$router.push({ path: 'rotate-screen-to-left' })或this.$router.push({ path: 'rotate-screen-to-right' })来将页面跳转到相应旋转或缩放操作的方法页面。
注意,这只是一个基础的示例,实际的屏幕旋转和缩放操作可能需要更复杂的逻辑,例如检测屏幕尺寸、旋转角度、手势识别等。此外,
@media媒体查询只能应用于移动设备,如果你需要在桌面或桌面浏览器中检测屏幕旋转和缩放,可能需要使用screen-dimensions或screen-resolution等属性,或者使用更复杂的CSS选择器来检测屏幕的属性。 - 首先,我们需要在你的项目中引入
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
