H5 判断横竖屏

6 篇文章 0 订阅

Ctrl C 、 Ctrl V => OK

我这边是直接在App.vue文件中做的。

        <!-- 选择禁止横屏或竖屏显示-->
        <div id="orientLayer" class="mod-orient-layer" v-if="!data.portrait">
            <div class="mod-orient-layer__content">
                <i class="icon mod-orient-layer__icon-orient" />
                <div class="mod-orient-layer__desc">
                    为了更好的体验,请使用竖屏浏览
                </div>
            </div>
        </div>
<script lang="ts">
import {
    computed,
    onMounted,
    reactive,
    ref,
    watch,
    onBeforeUnmount,
} from "vue";

export default {
    name: "APP",
    setup() {
        const data = reactive({
            portrait: false,
        });
        const methods = {
            renderResize: () => {
                // 判断横竖屏
                let width = document.documentElement.clientWidth;
                let height = document.documentElement.clientHeight;
                // alert(width+"宽高"+height)
                if (width > height) {
                    console.warn("横屏");
                    data.portrait = false;
                } else {
                    console.warn("竖屏");
                    data.portrait = true;
                }
                // 做页面适配
                // 注意:renderResize方法执行时虚拟dom尚未渲染挂载,如果要操作vue实例,最好在this.$nextTick()里进行。
            },
        };
        onMounted(async () => {
            addEventListener("resize", methods.renderResize, false);
        });
        onBeforeUnmount(() => {
            removeEventListener("resize", methods.renderResize, false);
        });
        return {
            data,
            ...methods,
        };
    },
};
</script>
/*横竖屏代码*/
@-webkit-keyframes rotation {
    10% {
        transform: rotate(90deg);
        -webkit-transform: rotate(90deg);
    }
    50%,
    60% {
        transform: rotate(0deg);
        -webkit-transform: rotate(0deg);
    }
    90% {
        transform: rotate(90deg);
        -webkit-transform: rotate(90deg);
    }
    100% {
        transform: rotate(90deg);
        -webkit-transform: rotate(90deg);
    }
}

@keyframes rotation {
    10% {
        transform: rotate(90deg);
        -webkit-transform: rotate(90deg);
    }
    50%,
    60% {
        transform: rotate(0deg);
        -webkit-transform: rotate(0deg);
    }
    90% {
        transform: rotate(90deg);
        -webkit-transform: rotate(90deg);
    }
    100% {
        transform: rotate(90deg);
        -webkit-transform: rotate(90deg);
    }
}

#orientLayer {
    display: none;
}

@media screen and (min-aspect-ratio: 13/9) {
    #orientLayer {
        display: block;
    }

    body {
        width: 100%;
        height: 100%;
    }
}

.mod-orient-layer {
    display: none;
    position: fixed;
    height: 100%;
    width: 100%;
    left: 0;
    top: 0;
    right: 0;
    bottom: 0;
    background: #000;
    z-index: 9997;
}

.mod-orient-layer__content {
    position: absolute;
    width: 100%;
    top: 45%;
    margin-top: -75px;
    text-align: center;
}

.mod-orient-layer__icon-orient {
    background-image: url("~@/h5/assets/portrait.png");
    display: inline-block;
    width: 70px;
    height: 112px;
    transform: rotate(90deg);
    -webkit-transform: rotate(90deg);
    -webkit-animation: rotation infinite 1.5s ease-in-out;
    animation: rotation infinite 1.5s ease-in-out;
    -webkit-background-size: 70px;
    background-size: 70px;
}

.mod-orient-layer__desc {
    margin-top: 20px;
    font-size: 15px;
    color: #fff;
}

效果在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值