mui 顶部选项卡的两种切换方式

第一种main页面

<!DOCTYPE html>
<html>

    <head>
        <meta charset="utf-8">
        <title>Hello MUI</title>
        <meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1,user-scalable=no">
        <meta name="apple-mobile-web-app-capable" content="yes">
        <meta name="apple-mobile-web-app-status-bar-style" content="black">
        <link rel="stylesheet" href="css/mui.min.css">
    </head>

    <body>
        <div class="mui-content">
            <div id="slider" class="mui-slider mui-fullscreen">
                <div id="sliderSegmentedControl" class="mui-scroll-wrapper mui-slider-indicator mui-segmented-control mui-segmented-control-inverted">
                    <div class="mui-scroll">
                        <a class="mui-control-item mui-active" href="direction.html" data-wid="tab-top-subpage-1.html">
                            推荐
                        </a>
                        <a class="mui-control-item" href="day_rank.html" data-wid="tab-top-subpage-2.html">
                            热点
                        </a>
                    </div>
                </div>
            </div>
        </div>
        <script src="js/mui.min.js"></script>
        <script src="js/webviewGroup.js" type="text/javascript" charset="utf-8"></script>
        <script>
            mui.init();

            mui.plusReady(function() {
                var group = new webviewGroup("direction.html", {
                    items: [{
                        id: "direction.html",   //这是子页1的路径
                        url: "direction.html",
                        extras: {}
                    }, {
                        id: "day_rank.html",    //这是子页2的路径
                        url: "day_rank.html",
                        extras: {}
                    }],
                    onChange: function(obj) {
                        var c = document.querySelector(".mui-control-item.mui-active");
                        if(c) {
                            c.classList.remove("mui-active");
                        }
                        document.querySelector(".mui-scroll .mui-control-item:nth-child(" + (parseInt(obj.index) + 1) + ")").classList.add("mui-active");
                    }
                });
                mui(".mui-scroll").on("tap", ".mui-control-item", function(e) {
                    var wid = this.getAttribute("href");
                    group.switchTab(wid);
                });

            });
            mui.back = function() {
                var _self = plus.webview.currentWebview();
                _self.close("auto");
            }
        </script>
    </body>
</html>

index 页面

 <script src="js/mui.min.js"></script>
    <script type="text/javascript">
        mui.init({
            subpages:[{                //下边是初始化,然后这个页面显示我们将插入的页面
                url:"main.html",
                id:"main.html",
                styles:{
                    top:"50px",
                    bottom:"0px"
                }
            }]
        });

    </script>

下面是第二种方式 通过JS来实现页面内嵌( 缺陷, 每次点击都会更行)

main页面

<!doctype html>
<html lang="en" style='height:100%'>
<head>
    <meta charset="UTF-8" />
    <title>Document</title>
    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
    <link rel="stylesheet" type="text/css" href="css/mui.css"/>

</head>
<body>
<div class="mui-content">

        <div class="mui-segmented-control"style="width:90%;text-align: center;">
            <a class="mui-control-item mui-btn-warning mui-active mui-btn-outlined" href="day_rank.html">选项卡1</a>
            <a class="mui-control-item mui-btn-warning mui-btn-outlined" href="direction.html">选项卡2</a>
        </div>
        </div>

</div>

</body>
<script src="js/mui.js" type="text/javascript" charset="utf-8"></script>
    <script type="text/javascript">
    mui.init();
    //设置默认打开首页显示的子页序号;
    var Index=0;
    //把子页的路径写在数组里面
    var subpages = ['day_rank.html','direction.html'];

    //所有的plus-*方法写在mui.plusReady中或者后面。
    mui.plusReady(function() {
    //获取当前页面所属的Webview窗口对象
    var self = plus.webview.currentWebview();
    for (var i = 0; i < subpages.length; i++) {
    //创建webview子页
    var sub = plus.webview.create(
    subpages[i], //子页url
    subpages[i], //子页id
    {
    top: '500px',//设置距离顶部的距离
    bottom: '100px'//设置距离底部的距离
    }

    );
    //如不是我们设置的默认的子页则隐藏,否则添加到窗口中
    if (i != Index) {
    sub.hide();
    }
    //将webview对象填充到窗口
    self.append(sub);
    }
    });
    //当前激活选项
    var activeTab = subpages[Index],title=document.querySelector(".mui-title");
    //选项卡点击事件
    mui('.mui-segmented-control').on('tap', 'a', function(e) {
    //获取目标子页的id
    var targetTab = this.getAttribute('href');
    if (targetTab == activeTab) {
    return;
    }
    //更换标题
//  title.innerHTML = this.querySelector('.mui-tab-label').innerHTML;
    //显示目标选项卡

//获取当前窗口对象
       var self=plus.webview.currentWebview();
      //如果是第一个页面那么选择 第一个页面的样式 第一个页面底部有选项卡
      if(targetTab==subpages[0]){
          //主页面 index_style
      var sub=plus.webview.create('day_rank.html','day_rank.html',{top:'500px',bottom:'0px'});
      }else{
          //主页面 其余页面的样式 subpage_style
      var sub=plus.webview.create('direction.html','direction.html',{top:'500px'});
       }
      //把子页面添加到当前窗口对象里
       self.append(sub);
       //关闭当前窗口里面已经展示的页面
       plus.webview.hide(activeTab);
       //要打开的页面赋值给当前页面留着下次使用
       activeTab=targetTab;
    });

    document.getElementById('newslist').addEventListener("tap",function(){

        mui.openWindow('direction.html','direction.html',{
                    styles:{
                        top:'0px',
                        bottom:"50px"
                    },
                    })
        })

</script>
</html>

原文地址:https://www.cnblogs.com/lijieshi/p/12045171.html

时间: 2024-10-28 23:36:57

mui 顶部选项卡的两种切换方式的相关文章

自制Javascript分页插件,支持AJAX加载和URL带参跳转两种初始化方式,可用于同一页面的多个分页和不同页面的调用

闲话部分 最近闲着实在无聊,就做了点小东西练练手,由于原来一直在用AspNetPager进行分页,而且也进行了深度的定制与原有系统整合的也不错,不过毕竟是用别人的,想着看自己能试着做出来不能,后台的分页插件已经有比较成熟的了,那就自己试着写一个前台分页吧. 话不多说,先上效果图: 优点与缺点 来说说优缺点吧,首先AspNetPager是后台分页控件,所以在向客户端回传HTML文档之前生成HTML阶段 就会把分页代码生成完毕,然后回传,而JS是前端代码,就是HTML文档在服务器组织完毕往客户端传送

Android中Fragment与Activity之间的交互(两种实现方式)

(未给Fragment的布局设置BackGound) 之前关于Android中Fragment的概念以及创建方式,我专门写了一篇博文<Android中Fragment的两种创建方式>,就如何创建Fragment混合布局做了详细的分析,今天就来详细说道说道Fragment与宿主Activity之间是如何实现数据交互的. 我们可以这样理解,宿主Activity中的Fragment之间要实现信息交互,就必须通过宿主Activity,Fragment之间是不可能直接实现信息交互的. Fragment与

Linux 下wdcp支持两种安装方式

wdcp支持两种安装方式1 源码编译 此安装比较麻烦和耗时,一般是20分钟至一个小时不等,具体视机器配置情况而定2 RPM包安装 简单快速,下载快的话,几分钟就可以完成源码安装(ssh登录服务器,执行如下操作即可,需root用户身份安装)wget http://dl.wdlinux.cn:5180/lanmp_laster.tar.gztar zxvf lanmp_laster.tar.gzsh install.sh4个可选安装1,2,3 是安装独立的环境,不可自由切换nginx,apache,

Windows校验文件哈希hash的两种常用方式

大家经常都到哪儿去下载软件和应用程序呢?有没想过下载回来的软件.应用程序或资源是否安全呢?在 Windows 10 和 Office 2016 发布当初,很多没权限的朋友都使用第三方网站去下载安装映像.而大家如何保证自己下载回来的映像或软件就是官方版本,而没有被别人篡改过呢? 很多朋友会想到将下载回来的资源校验 MD5 或 SHA1 与官方版哈希值进行对比,如果无误则表示未被篡改.大家平常在 Windows 中都使用何种工具算校验值呢?本文向大家推荐 Windows 校验文件哈希的两种常用方式.

关于loadrunner的两种录制方式

最近在看loadrunner ,众所周知,loadrunnner有两种录制方式,每种录制方式又包含两种具体的模式,现在来分析一下这几种,以及具体的区别 loadrunner默认使用:HTML-based script这种模式进行录制(mode=html),这中模式下又包含两种具体的方式: 1.A script describing user actions(e.g. web_link,web_submit_form): {基于解释用户行为的脚本,后面提示使用类似web_link.web_subm

java的两种同步方式, Synchronized与ReentrantLock的区别

java在编写多线程程序时,为了保证线程安全,需要对数据同步,经常用到两种同步方式就是Synchronized和重入锁ReentrantLock. 相似点: 这两种同步方式有很多相似之处,它们都是加锁方式同步,而且都是阻塞式的同步,也就是说当如果一个线程获得了对象锁,进入了同步块,其他访问该同步块的线程都必须阻塞在同步块外面等待,而进行线程阻塞和唤醒的代价是比较高的(操作系统需要在用户态与内核态之间来回切换,代价很高,不过可以通过对锁优化进行改善). 区别: 这两种方式最大区别就是对于Synch

题目24-多线程两种实现方式

1.多线程两种实现方式 (1)继承Thread 定义类继承Thread 重写run方法 把新线程要做的事写在run方法中 创建线程对象 开启新线程, 内部会自动执行run方法(2)实现Runnable 定义类实现Runnable接口 实现run方法 把新线程要做的事写在run方法中 创建自定义的Runnable的子类对象 创建Thread对象, 传入Runnable 调用start()开启新线程, 内部会自动调用Runnable的run()方法 2.多线程的安全问题及解决方案 问题:当多线程并发

Android Service的两种启动方式

参考链接 1. 概念 开始,先稍稍讲一点android中Service的概念和用途吧~ Service分为本地服务(LocalService)和远程服务(RemoteService): 1.本地服务依附在主进程上而不是独立的进程,这样在一定程度上节约了资源,另外Local服务因为是在同一进程因此不需要IPC, 也不需要AIDL.相应bindService会方便很多.主进程被Kill后,服务便会终止. 2.远程服务为独立的进程,对应进程名格式为所在包名加上你指定的android:process字符

探究Redis两种持久化方式下的数据恢复

对长期奋战在一线的后端开发人员来说,都知道redis有两种持久化方式RDB和AOF,虽说大家都知道这两种方式大概运作方式,但想必有实操了解得不会太多. 这里是自己实操两种持久化方式的一点点记录. 先看以下摘录自redis官网原文解释(当然原文是English,这里用google翻译过了.) Redis持久性 Redis提供了不同的持久性选项范围: RDB持久性按指定的时间间隔执行数据集的时间点快照. AOF持久性会记录服务器接收的每个写入操作,这些操作将在服务器启动时再次播放,以重建原始数据集.