kimi
2021-02-18 749a5510a9f014446a3cd6ba57b3cb0cc8148dc1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
<!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">
        <style>
            html,
            body {
                background-color: #efeff4;
            }
            p {
                text-indent: 22px;
            }
            span.mui-icon {
                font-size: 14px;
                color: #007aff;
                margin-left: -15px;
                padding-right: 10px;
            }
            .mui-off-canvas-left {
                color: #fff;
            }
            .title {
                margin: 35px 15px 10px;
            }
            .title+.content {
                margin: 10px 15px 35px;
                color: #bbb;
                text-indent: 1em;
                font-size: 14px;
                line-height: 24px;
            }
            input {
                color: #000;
            }
        </style>
    </head>
 
    <body>
        <div id="offCanvasWrapper" class="mui-off-canvas-wrap mui-draggable">
            <!--侧滑菜单部分-->
            <aside id="offCanvasSide" class="mui-off-canvas-left">
                <div id="offCanvasSideScroll" class="mui-scroll-wrapper">
                    <div class="mui-scroll">
                        <div class="title">侧滑导航</div>
                        <div class="content">
                            这是可拖动式侧滑菜单示例,你可以在这里放置任何内容;关闭侧滑菜单有多种方式: 1.在手机屏幕任意位置向左拖动(drag);2.点击本侧滑菜单页之外的任意位置; 3.点击如下红色按钮
                            <span class="android-only">;4.Android手机按back键;5.Android手机按menu键
                            </span>。
                            <p style="margin: 10px 15px;">
                                <button id="offCanvasHide" type="button" class="mui-btn mui-btn-danger mui-btn-block" style="padding: 5px 20px;">关闭侧滑菜单</button>
                            </p>
 
                        </div>
                        <div class="title" style="margin-bottom: 25px;">侧滑列表示例</div>
                        <ul class="mui-table-view mui-table-view-chevron mui-table-view-inverted">
                            <li class="mui-table-view-cell">
                                <a class="mui-navigate-right">
                                    Item 1
                                </a>
                            </li>
                            <li class="mui-table-view-cell">
                                <a class="mui-navigate-right">
                                    Item 2
                                </a>
                            </li>
                            <li class="mui-table-view-cell">
                                <a class="mui-navigate-right">
                                    Item 3
                                </a>
                            </li>
                            <li class="mui-table-view-cell">
                                <a class="mui-navigate-right">
                                    Item 4
                                </a>
                            </li>
                            <li class="mui-table-view-cell">
                                <a class="mui-navigate-right">
                                    Item 5
                                </a>
                            </li>
                            <li class="mui-table-view-cell">
                                <a class="mui-navigate-right">
                                    Item 6
                                </a>
                            </li>
                        </ul>
                    </div>
                </div>
            </aside>
            <!--主界面部分-->
            <div class="mui-inner-wrap">
                <header class="mui-bar mui-bar-nav">
                    <a href="#offCanvasSide" class="mui-icon mui-action-menu mui-icon-bars mui-pull-left"></a>
                    <a class="mui-action-back mui-btn mui-btn-link mui-pull-right">关闭</a>
                    <h1 class="mui-title">div模式右滑菜单</h1>
                </header>
                <div id="offCanvasContentScroll" class="mui-content mui-scroll-wrapper">
                    <div class="mui-scroll">
                        <div class="mui-content-padded">
                            <p>这是可拖动式右滑导航示例,主页面和菜单在一个HTML文件中, 优点是支持拖动手势(跟手),缺点是不支持菜单内容在多页面的复用; 当前页面为主界面,你可以在主界面放置任何内容; 打开侧滑菜单有多种方式: 1、在当前页面向右拖动; 2、点击页面左上角的
                                <span class="mui-icon mui-icon-bars"></span> 图标; 3、通过JS API触发(例如点击如下蓝色按钮体验);
                                <span class="android-only">4、Android手机按menu键;</span>
                            </p>
                            <p style="padding: 5px 20px;margin-bottom: 5px;">
                                <button id="offCanvasShow" type="button" class="mui-btn mui-btn-primary mui-btn-block" style="padding: 10px;">
                                    显示侧滑菜单
                                </button>
                            </p>
                            <p>侧滑菜单的移动动画,支持多种效果,切换如下选项体验不同动画效果:</p>
 
                        </div>
 
                        <form class="mui-input-group" style="margin-bottom: 15px;">
                            <div class="mui-input-row mui-radio">
                                <label>主界面移动、菜单不动</label>
                                <input name="style" type="radio" checked="" value="main-move">
                            </div>
                            <div class="mui-input-row mui-radio">
                                <label>主界面不动、菜单移动</label>
                                <input name="style" type="radio" value="menu-move">
                            </div>
                            <div class="mui-input-row mui-radio mui-hidden" id="move-togger">
                                <label>整体移动</label>
                                <input name="style" type="radio" value="all-move">
                            </div>
                            <div class="mui-input-row mui-radio">
                                <label>缩放式侧滑(类手机QQ)</label>
                                <input name="style" type="radio" value="main-move-scalable">
                            </div>
                        </form>
 
                    </div>
                </div>
                <!-- off-canvas backdrop -->
                <div class="mui-off-canvas-backdrop"></div>
            </div>
        </div>
        <script src="../js/mui.min.js"></script>
        <script>
            mui.init();
             //侧滑容器父节点
            var offCanvasWrapper = mui('#offCanvasWrapper');
             //主界面容器
            var offCanvasInner = offCanvasWrapper[0].querySelector('.mui-inner-wrap');
             //菜单容器
            var offCanvasSide = document.getElementById("offCanvasSide");
            if (!mui.os.android) {
                document.getElementById("move-togger").classList.remove('mui-hidden');
                var spans = document.querySelectorAll('.android-only');
                for (var i = 0, len = spans.length; i < len; i++) {
                    spans[i].style.display = "none";
                }
            }
             //移动效果是否为整体移动
            var moveTogether = false;
             //侧滑容器的class列表,增加.mui-slide-in即可实现菜单移动、主界面不动的效果;
            var classList = offCanvasWrapper[0].classList;
             //变换侧滑动画移动效果;
            mui('.mui-input-group').on('change', 'input', function() {
                if (this.checked) {
                    offCanvasSide.classList.remove('mui-transitioning');
                    offCanvasSide.setAttribute('style', '');
                    classList.remove('mui-slide-in');
                    classList.remove('mui-scalable');
                    switch (this.value) {
                        case 'main-move':
                            if (moveTogether) {
                                //仅主内容滑动时,侧滑菜单在off-canvas-wrap内,和主界面并列
                                offCanvasWrapper[0].insertBefore(offCanvasSide, offCanvasWrapper[0].firstElementChild);
                            }
                            break;
                        case 'main-move-scalable':
                            if (moveTogether) {
                                //仅主内容滑动时,侧滑菜单在off-canvas-wrap内,和主界面并列
                                offCanvasWrapper[0].insertBefore(offCanvasSide, offCanvasWrapper[0].firstElementChild);
                            }
                            classList.add('mui-scalable');
                            break;
                        case 'menu-move':
                            classList.add('mui-slide-in');
                            break;
                        case 'all-move':
                            moveTogether = true;
                            //整体滑动时,侧滑菜单在inner-wrap内
                            offCanvasInner.insertBefore(offCanvasSide, offCanvasInner.firstElementChild);
                            break;
                    }
                    offCanvasWrapper.offCanvas().refresh();
                }
            });
             //主界面‘显示侧滑菜单’按钮的点击事件
            document.getElementById('offCanvasShow').addEventListener('tap', function() {
                offCanvasWrapper.offCanvas('show');
            });
             //菜单界面,‘关闭侧滑菜单’按钮的点击事件
            document.getElementById('offCanvasHide').addEventListener('tap', function() {
                offCanvasWrapper.offCanvas('close');
            });
             //主界面和侧滑菜单界面均支持区域滚动;
            mui('#offCanvasSideScroll').scroll();
            mui('#offCanvasContentScroll').scroll();
             //实现ios平台原生侧滑关闭页面;
            if (mui.os.plus && mui.os.ios) {
                mui.plusReady(function() { //5+ iOS暂时无法屏蔽popGesture时传递touch事件,故该demo直接屏蔽popGesture功能
                    plus.webview.currentWebview().setStyle({
                        'popGesture': 'none'
                    });
                });
            }
        </script>
    </body>
 
</html>