zoukankan      html  css  js  c++  java
  • MUI——页面的创建、显示、关闭

    一、打开子页面

    mui.init({
        subpages:[{
          url:your-subpage-url,//子页面HTML地址,支持本地地址和网络地址
          id:your-subpage-id,//子页面标志
          styles:{
            top:subpage-top-position,//子页面顶部位置
            bottom:subpage-bottom-position,//子页面底部位置
            subpage-width,//子页面宽度,默认为100%
            height:subpage-height,//子页面高度,默认为100%
            ......
          },
          extras:{}//额外扩展参数
        }]
      });

      子页面相当于在html中使用iframe,所有的浏览器都支持,不依赖h5+api,但是没办法控制创建时隐藏页面,而且显示动画效果只能是"fade-in";

      另外,如果子页面已经显示,但是被其它子页面遮盖时,再次显示时,不会有动画效果,解决办法是,先隐藏,然后再显示。

    二、打开新页面(非子页面)

    mui.openWindow({
        url:new-page-url,
        id:new-page-id,
        styles:{
          top:newpage-top-position,//新页面顶部位置
          bottom:newage-bottom-position,//新页面底部位置
          newpage-width,//新页面宽度,默认为100%
          height:newpage-height,//新页面高度,默认为100%
          ......
        },
        extras:{
          .....//自定义扩展参数,可以用来处理页面间传值
        },
        createNew:false,//是否重复创建同样id的webview,默认为false:不重复创建,直接显示
        show:{
          autoShow:true,//页面loaded事件发生后自动显示,默认为true
          aniShow:animationType,//页面显示动画,默认为”slide-in-right“;
          duration:animationTime//页面动画持续时间,Android平台默认100毫秒,iOS平台默认200毫秒;
        },
        waiting:{
          autoShow:true,//自动显示等待框,默认为true
          title:'正在加载...',//等待对话框上显示的提示内容
          options:{
            waiting-dialog-widht,//等待框背景区域宽度,默认根据内容自动计算合适宽度
            height:waiting-dialog-height,//等待框背景区域高度,默认根据内容自动计算合适高度
            ......
          }
        }
    })

    mui框架在打开新页面时等待框的处理逻辑为:

      显示等待框-->创建目标页面webview-->目标页面loaded事件发生-->关闭等待框;

    因此,只有当新页面为新创建页面(webview)时,会显示等待框,否则若为预加载好的页面,则直接显示目标页面,不会显示等待框。

    三、预加载页面

    方式1:

    mui.init({
      preloadPages:[
        {
          url:prelaod-page-url,
          id:preload-page-id,
          styles:{},//窗口参数
          extras:{},//自定义扩展参数
          subpages:[{},{}]//预加载页面的子页面
        }
      ],
      preloadLimit:5//预加载窗口数量限制(一旦超出,先进先出)默认不限制
    });

      可预加载多个页面,但不会返回预加载每个页面的引用,若要获得对应webview引用,还需要通过plus.webview.getWebviewById方式获得;另外,因为mui.init是异步执行,执行完mui.init方法后立即获得对应webview引用,可能会失败。

    方式2:

    var page = mui.preload({
        url:new-page-url,
        id:new-page-id,//默认使用当前页面的url作为id
        styles:{},//窗口参数
        extras:{}//自定义扩展参数
    });

      可立即返回对应webview的引用,但一次仅能预加载一个页面;若需加载多个webview,则需多次调用。

    最后显示页面:

    方式1:plus.webview.show("xx");
    方式2:mui.openWindow({id: "xxx"});

      使用预加载,在需要显示时立即进行显示,可以节省新页面的创建时间。这两种预加载的方式都依赖h5+api,直接打开浏览器看不到效果,必须在模拟器或真机上调试。 

    四、使用div的方式模拟页面

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
            
            <link rel="stylesheet" href="../css/mui.min.css">
            <script src="../js/mui.min.js "></script>
            <script src="../js/mui.view.js "></script>
            
            <style>
                .mui-views,
                .mui-view,
                .mui-pages,
                .mui-page,
                .mui-page-content {
                    position: absolute;
                    left: 0;
                    right: 0;
                    top: 0;
                    bottom: 0;
                    width: 100%;
                    height: 100%;
                }
                
                /* 所有页面默认隐藏 */
                .mui-page {
                    display: none;
                }
                
                /* 标题栏高46px,所以主页面顶部向下偏移46px */
                .mui-pages {
                    top: 46px;
                    height: auto;
                }
                
                /* 只显示主页面 */
                .mui-pages .mui-page {
                    display: block;
                }
                
                /* 页面切换动画(显示和隐藏时都需要) */
                .mui-transitioning {
                    -webkit-transition: -webkit-transform 200ms linear;
                    transition: transform 200ms linear;
                }
                .mui-page-left {
                    -webkit-transform: translate3d(0, 0, 0);
                    transform: translate3d(0, 0, 0);
                }
            </style>
            
        </head>
        <body>
            
            <!--页面主结构开始-->
            <div id="app" class="mui-views">
                <div class="mui-view">
                    <div class="mui-navbar">
                    </div>
                    <div class="mui-pages">
                    </div>
                </div>
            </div>
            
            <!--默认显示的主页面-->
            <div id="main_page" class="mui-page">
                <!--页面标题栏-->
                <div class="mui-navbar-inner mui-bar mui-bar-nav">
                    <button type="button" class="mui-action-back mui-btn  mui-btn-link mui-btn-nav mui-pull-left">
                        <span class="mui-icon mui-icon-left-nav"></span>
                    </button>
                    <h1 class="mui-center mui-title">主页面</h1>
                </div>
                <!--页面主内容区-->
                <div class="mui-page-content">
                    <div class="mui-scroll-wrapper">
                        <div class="mui-scroll">
                            <ul class="mui-table-view mui-table-view-chevron">
                                <li class="mui-table-view-cell">
                                    <a href="#page1" class="mui-navigate-right">打开页面1</a>
                                </li>
                                <li class="mui-table-view-cell">
                                    <a href="#page2" class="mui-navigate-right">打开页面2</a>
                                </li>
                                <li class="mui-table-view-cell">
                                    <a href="#page3" class="mui-navigate-right">打开页面3</a>
                                </li>
                            </ul>
                            <ul class="mui-table-view">
                                <li class="mui-table-view-cell" style="text-align: center;">
                                    <a id='exit'>退出</a>
                                </li>
                            </ul>
                        </div>
                    </div>
                </div>
            </div>
            
            <!--页面1-->
            <div id="page1" class="mui-page">
                <!--页面标题栏-->
                <div class="mui-navbar-inner mui-bar mui-bar-nav">
                    <button type="button" class="mui-action-back mui-btn  mui-btn-link mui-btn-nav mui-pull-left">
                        <span class="mui-icon mui-icon-left-nav"></span>
                    </button>
                    <h1 class="mui-center mui-title">页面1</h1>
                </div>
                <!--页面主内容区-->
                <div class="mui-page-content">
                    <div class="mui-scroll-wrapper">
                        <div class="mui-scroll">
                            <ul class="mui-table-view mui-table-view-chevron">
                                <li class="mui-table-view-cell">
                                    <a class="mui-navigate-right">按钮1</a>
                                </li>
                                <li class="mui-table-view-cell">
                                    <a class="mui-navigate-right">按钮2</a>
                                </li>
                                <li class="mui-table-view-cell">
                                    <a class="mui-navigate-right">按钮3</a>
                                </li>
                            </ul>
                        </div>
                    </div>
                </div>
            </div>
            <!--页面2-->
            <div id="page2" class="mui-page">
                <!--页面标题栏-->
                <div class="mui-navbar-inner mui-bar mui-bar-nav">
                    <button type="button" class="mui-action-back mui-btn  mui-btn-link mui-btn-nav mui-pull-left">
                        <span class="mui-icon mui-icon-left-nav"></span>
                    </button>
                    <h1 class="mui-center mui-title">页面2</h1>
                </div>
                <!--页面主内容区-->
                <div class="mui-page-content">
                    <div class="mui-scroll-wrapper">
                        <div class="mui-scroll">
                            <ul class="mui-table-view mui-table-view-chevron">
                                <li class="mui-table-view-cell">
                                    <a class="mui-navigate-right">按钮1</a>
                                </li>
                                <li class="mui-table-view-cell">
                                    <a class="mui-navigate-right">按钮2</a>
                                </li>
                                <li class="mui-table-view-cell">
                                    <a class="mui-navigate-right">按钮3</a>
                                </li>
                            </ul>
                        </div>
                    </div>
                </div>
            </div>
            <!--页面3-->
            <div id="page3" class="mui-page">
                <!--页面标题栏-->
                <div class="mui-navbar-inner mui-bar mui-bar-nav">
                    <button type="button" class="mui-action-back mui-btn  mui-btn-link mui-btn-nav mui-pull-left">
                        <span class="mui-icon mui-icon-left-nav"></span>
                    </button>
                    <h1 class="mui-center mui-title">页面3</h1>
                </div>
                <!--页面主内容区-->
                <div class="mui-page-content">
                    <div class="mui-scroll-wrapper">
                        <div class="mui-scroll">
                            <ul class="mui-table-view mui-table-view-chevron">
                                <li class="mui-table-view-cell">
                                    <a class="mui-navigate-right">按钮1</a>
                                </li>
                                <li class="mui-table-view-cell">
                                    <a class="mui-navigate-right">按钮2</a>
                                </li>
                                <li class="mui-table-view-cell">
                                    <a class="mui-navigate-right">按钮3</a>
                                </li>
                            </ul>
                        </div>
                    </div>
                </div>
            </div>
            
            <script>
                mui.init();
                 //初始化单页view
                var viewApi = mui('#app').view({
                    defaultPage: '#main_page'
                });
                
                var oldBack = mui.back;
                mui.back = function() {
                    if (viewApi.canBack()) { //如果view可以后退,则执行view的后退
                        viewApi.back();
                    } else { //执行webview后退
                        oldBack();
                    }
                };
            </script>
        </body>
    </html>
    View Code

      注意这里面的css样式必须要写,否则切换页面会不正常。

    五、关闭页面

    mui框架将窗口关闭功能封装在mui.back方法中,具体执行逻辑是:

      1)若当前webview为预加载页面,则hide当前webview;

      2)否则,close当前webview;

    如果我们使用div模拟页面,需要自己响应back方法,处理div显示隐藏:

    var viewApi = mui('#app').view({
        defaultPage: '#main_page'
    });
    
    var oldBack = mui.back;
    mui.back = function() {
        if (viewApi.canBack()) { //如果view可以后退,则执行view的后退
            viewApi.back();
        } else { //执行webview后退
            oldBack();
        }
    };
  • 相关阅读:
    [微信篇]ESP8266-NonOS学习笔记(十一)之微信小程序控制LED灯 Part 1
    [外设篇]ESP8266-SDK教程(十)之DHT11、OLED1306
    [基础篇]ESP32-RTOS-SDK教程(一)之Windows环境搭建
    [网络篇]ESP8266-SDK教程(九)之物联网标配MQTT实际测试
    [网络篇]ESP8266-SDK教程(八)之物联网标配MQTT服务端软件
    [网络篇]ESP8266-SDK教程(七)之物联网标配MQTT初相识
    [网络篇]ESP8266-SDK教程(六)之网页配置Wi-Fi名称和密码
    [网络篇]ESP8266-SDK教程(五)之SmartConfig、Airkiss等多种配网方式
    [基础篇]ESP8266-SDK教程(四)之GPIO操作(按键、LED、中断、定时器)
    [网络篇]ESP8266-SDK教程(三)之TCP通信Server<->Client
  • 原文地址:https://www.cnblogs.com/dongc/p/6050668.html
Copyright © 2011-2022 走看看