实现底部选项卡切换


帮助

http://ask.dcloud.net.cn/article/650

HTML

<!doctype html>
<html>

    <head>
        <meta charset="UTF-8" />
        <title></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="assets/global/css/mui.min.css" />
        <link rel="stylesheet" type="text/css" href="assets/global/css/iconfont.css" />
    </head>

    <body>
        <header class="mui-bar mui-bar-nav">
            <h1 class="mui-title">我的头条</h1>
        </header>

        <div class="mui-content">

        </div>

        <nav class="mui-bar mui-bar-tab">
            <a class="mui-tab-item mui-active" href="news.html">
                <span class="mui-icon iconfont icon-home_light"></span>
                <span class="mui-tab-label">资讯</span>
            </a>
            <a class="mui-tab-item" href="video.html">
                <span class="mui-icon iconfont icon-video_light"></span>
                <span class="mui-tab-label">视频</span>
            </a>
            <a class="mui-tab-item">
                <span class="mui-icon iconfont icon-search_light"></span>
                <span class="mui-tab-label">发现</span>
            </a>
            <a class="mui-tab-item">
                <span class="mui-icon iconfont icon-my_light"></span>
                <span class="mui-tab-label">我的</span>
            </a>
        </nav>

        <script src="assets/global/js/mui.min.js" type="text/javascript" charset="utf-8"></script>
        <script src="assets/apps/js/main.js" type="text/javascript" charset="utf-8"></script>
    </body>

</html>

JS

var Main = function() {

    // 设置默认打开首页显示的子页序号;
    var index = 0;

    // 把子页的路径写在数组里面
    var subpages = ['news.html', 'video.html'];

    /**
     * 初始化首页
     */
    var handlerInitMain = function() {
        mui.init();
        mui.plusReady(function() {
            handlerInitWebview();
            handlerBindChangeTabEvent();
        });
    }

    /**
     * 初始化 Webview
     */
    var handlerInitWebview = 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: '45px', //设置距离顶部的距离
                    bottom: '51px' //设置距离底部的距离
                }
            );

            // 如不是我们设置的默认的子页则隐藏,否则添加到窗口中
            if(i != index) {
                sub.hide();
            }

            // 将 webview 对象填充到窗口
            self.append(sub);
        }
    }

    /**
     * 切换选项卡事件
     */
    var handlerBindChangeTabEvent = function() {
        // 当前激活选项
        var activeTab = subpages[index],
            title = document.querySelector(".mui-title");
        // 选项卡点击事件
        mui('.mui-bar-tab').on('tap', 'a', function(e) {
            // 获取目标子页的id
            var targetTab = this.getAttribute('href');
            if(targetTab == activeTab) {
                return;
            }
            // 更换标题
            title.innerHTML = this.querySelector('.mui-tab-label').innerHTML;
            // 显示目标选项卡
            plus.webview.show(targetTab, "fade-in", 300);
            // 隐藏当前选项卡
            plus.webview.hide(activeTab);
            // 更改当前活跃的选项卡
            activeTab = targetTab;
        });
    }

    return {
        initMain: function() {
            handlerInitMain();
        }
    }
}();

Main.initMain();

results matching ""

    No results matching ""