wclssdn
wclssdn
  • 发布:2016-05-02 20:25
  • 更新:2021-03-12 23:57
  • 阅读:23471

一个底部选项卡的实现(webview模式)

分类:MUI

直接上代码吧。
自行修改正确的资源文件路径(此例子直接放在默认目录下,同级目录放tab-*.html)

<!--  main.html 入口文件 -->  
<!DOCTYPE html>  
<html>  

    <head>  
        <meta charset="utf-8">  
        <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />  
        <title>选项卡演示</title>  
        <link href="css/mui.min.css" rel="stylesheet" />  
        <style>  
        </style>  
    </head>  

    <body>  
        <div class="mui-content">  
            <nav id="bar" class="mui-bar mui-bar-tab">  
                <a class="mui-tab-item mui-active" href="tab-main.html" data-id="main">  
                    <span class="mui-icon mui-icon-home"></span>  
                    <span class="mui-tab-label">首页</span>  
                </a>  
                <a class="mui-tab-item" href="tab-message.html" data-id="message">  
                    <span class="mui-icon mui-icon-email"></span>  
                    <span class="mui-tab-label">消息</span>  
                </a>  
                <a class="mui-tab-item" href="tab-contact.html" data-id="contact">  
                    <span class="mui-icon mui-icon-contact"></span>  
                    <span class="mui-tab-label">通讯录</span>  
                </a>  
                <a class="mui-tab-item" href="tab-setting.html" data-id="setting">  
                    <span class="mui-icon mui-icon-gear"></span>  
                    <span class="mui-tab-label">设置</span>  
                </a>  
            </nav>  
        </div>  
        <script src="js/mui.min.js"></script>  
        <script>  
            mui.init();  
            mui.plusReady(function() {  
                var self = plus.webview.currentWebview();  
                var current = '';  
                var styles = {  
                    top: '0',  
                    bottom: '51px'  
                };  
                var tabsConfig = {  
                    main: {  
                        url: 'tab-main.html',  
                        styles: styles,  
                        default: true  
                    },  
                    message: {  
                        url: 'tab-message.html',  
                        styles: styles  
                    },  
                    contact: {  
                        url: 'tab-contact.html',  
                        styles: styles  
                    },  
                    setting: {  
                        url: 'tab-setting.html',  
                        styles: styles  
                    }  
                };  
                var tabs = {};  
                for (id in tabsConfig) {  
                    tabs[id] = plus.webview.create(tabsConfig[id].url, id, tabsConfig[id].styles);  
                    if (tabsConfig[id]['default']) {  
                        self.append(tabs[id]);  
                        current = id;  
                    }  
                }  
                mui('#bar').on('tap', 'a', function(e) {  
                    if (current == this.dataset.id) {  
                        mui.fire(tabs[current], 'scroll2top');  
                        return;  
                    }  
                    tabs[this.dataset.id].show();  
                    tabs[current].hide();  
                    current = this.dataset.id;  
                });  
            });  
        </script>  
    </body>  
</html>
<!-- tab-*.html 举例-->  
<!DOCTYPE html>  
<html>  
<head>  
    <meta charset="UTF-8">  
    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />  
    <title>此处就是显示的标题</title>  
    <script src="js/mui.min.js"></script>  
    <link href="css/mui.min.css" rel="stylesheet"/>  
    <script type="text/javascript" charset="UTF-8">  
        mui.init();  
    </script>  
</head>  
<body>  
    <div class="mui-content">  
        <p>示例页面,此页面内容正常写,标题就是标签页的标题。</p>  
    </div>  
</body>  
</html>

更新:上传了一个完整的例子~ 懒人最爱~

8 关注 分享
2***@qq.com Virgil_bn Hyden 启程588 9***@qq.com 1***@qq.com xpanda 2***@qq.com

要回复文章请先登录注册

若末lan

若末lan

回复 wclssdn :
哦哦~
2016-08-01 09:50
wclssdn

wclssdn (作者)

回复 若末lan :
如果页面没有可返回历史,也就是此页面不是从其他页面跳转过来的,切换不算 的情况下,返回就会导致页面直接白了。。。 具体什么原因我也没细研究~ 有空你可以研究一下~~
我的解决方案就是,重写mui.back方法。如:mui.plusReady(function() { mui.back = function() {}}
2016-07-30 21:46
wclssdn

wclssdn (作者)

回复 若末lan :
可以参考我给出的这个例子~ 是用的两个webview实现的~ 如果是一个html,可能写起来会比较费劲。
2016-07-30 21:43
若末lan

若末lan

亲,刚刚试了一下,为什么不能返回,对手机自带的返回,直接把子页面返回没了,我又在init里加mui,back()还报错了,为什么呀,能解答一下吗
2016-07-28 11:19
若末lan

若末lan

像这种tab,是要直接写在一个HTML里好,还是subpage好呢
2016-07-28 10:39
jingxin

jingxin

谢谢,明白了
2016-07-19 17:10
wclssdn

wclssdn (作者)

回复 学习了 :
已上传~
2016-07-19 13:13
wclssdn

wclssdn (作者)

回复 jingxin :
this.dataset是标签的data-*的获取方法。例如<a data-id="test"> 那么这个a标签的dataset就是一个对象{id:"test"}
2016-07-19 12:52
jingxin

jingxin

请问例子中 this.dataset 是什么?是不是缺少代码?
2016-07-19 12:42
学习了

学习了

我也试了没用,求dome。
2016-07-10 11:06