h5 判断手机是否横屏竖屏显示,以及旋转屏幕后重新绘制页面

最近最的一个移动网页端h5项目需求如下:当进入某个指定页面时,如果手机当时是竖屏,则提示横屏显示;在这个页面时,若横屏显示转成竖屏显示时候,提示横屏显示,横屏显示时候是正常显示,无提示;大概的效果如下图所示:

竖屏显示.png
componentDidMount() {
        // 在进入页面时,并且dom节点渲染后,调用该方法
        this.renderResize();
        
        setTimeout(() => this.setState({
            height: (this.state.height - 38 - 50) + "px",
        }), 0);
    }

    renderResize = () => {
        var width = document.documentElement.clientWidth;
        var height =  document.documentElement.clientHeight;

        // 通过判断屏幕的宽高比来判断是横屏害死竖屏,若是竖屏则提示
        if( width > height ){
            //横竖屏切换是整个屏幕的宽高会变化,如果给了一个特定区域比如有滚动条的列表设置了高度,那么在横竖屏切换时需要重新计算高度给该列表赋值,以免横竖屏切换时页面显示会出问题
            this.setState({
                height: (height - 38 - 50) + "px",
            })
        } else{
            Toast.info("建议横屏显示,马上设置", 3);
            this.setState({
                height: (height - 66 - 50) + "px",
            })

        }

    }

    componentWillMount(){
        // 需要在横竖屏切换时给出提示,所以添加了监听事件,一开始我是监听了
         orientationchange事件,但是有时会失效,判断失误,所以就监听了resize事件
        window.addEventListener("resize", this.renderResize, false);
    }


    componentWillUnmount = () => {
        //因为其他页面不需要做横竖屏的提示,所以在离开这个页面时移除这个监听时间
        window.removeEventListener("resize", this.renderResize, false);
    }

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,559评论 25 708
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,257评论 4 61
  • 文/新太史令 提到汉高祖刘邦,我们立即会闪现几个关键词:刘三、好酒色、胆子大、土鳖、狐朋狗友多……。近乎都是草根的...
    新太史令阅读 461评论 3 3
  • [20170826]-蓝天 晨读感悟 大家有没有吃零食的习惯呢?有没有平时不想吃饭只想吃零食来解决每天的吃...
    xz蓝天阅读 277评论 0 1
  • 睡不着,身边有个谜一样的人,男人!我渴望他从背后抱着我入睡,可是他已深睡!想想我们相识的这段时间,青春,初恋,浮现...
    温温温温阅读 448评论 0 0