123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294 |
- $(function () {
- var router = new Router({
- container: '#container',
- enterTimeout: 250,
- leaveTimeout: 250
- });
- // grid
- var home = {
- url: '/',
- className: 'home',
- render: function () {
- return $('#tpl_home').html();
- }
- };
- // button
- var button = {
- url: '/button',
- className: 'button',
- render: function () {
- return $('#tpl_button').html();
- }
- };
- // cell
- var cell = {
- url: '/cell',
- className: 'cell',
- render: function () {
- return $('#tpl_cell').html();
- },
- bind: function (){
- $('.container').on('click', '#showTooltips', function (){
- $('.js_tooltips').show();
- setTimeout(function (){
- $('.js_tooltips').hide();
- }, 3000);
- });
- }
- };
- // toast
- var toast = {
- url: '/toast',
- className: 'toast',
- render: function () {
- return $('#tpl_toast').html();
- },
- bind: function () {
- $('#container').on('click', '#showToast', function () {
- $('#toast').show();
- setTimeout(function () {
- $('#toast').hide();
- }, 2000);
- }).on('click', '#showLoadingToast', function () {
- $('#loadingToast').show();
- setTimeout(function () {
- $('#loadingToast').hide();
- }, 2000);
- });
- }
- };
- // dialog
- var dialog = {
- url: '/dialog',
- className: 'dialog',
- render: function () {
- return $('#tpl_dialog').html();
- },
- bind: function () {
- $('#container').on('click', '#showDialog1', function () {
- $('#dialog1').show().on('click', '.weui_btn_dialog', function () {
- $('#dialog1').off('click').hide();
- });
- }).on('click', '#showDialog2', function () {
- $('#dialog2').show().on('click', '.weui_btn_dialog', function () {
- $('#dialog2').off('click').hide();
- });
- });
- }
- };
- // progress
- var progress = {
- url: '/progress',
- className: 'progress',
- render: function () {
- return $('#tpl_progress').html();
- },
- bind: function () {
- $('#container').on('click', '#btnStartProgress', function () {
- if ($(this).hasClass('weui_btn_disabled')) {
- return;
- }
- $(this).addClass('weui_btn_disabled');
- var progress = 0;
- var $progress = $('.js_progress');
- function next() {
- $progress.css({width: progress + '%'});
- progress = ++progress % 100;
- setTimeout(next, 30);
- }
- next();
- });
- }
- };
- // msg
- var msg = {
- url: '/msg',
- className: 'msg',
- render: function () {
- return $('#tpl_msg').html();
- }
- };
- // article
- var article = {
- url: '/article',
- className: 'article',
- render: function () {
- return $('#tpl_article').html();
- }
- };
- // actionsheet
- var actionsheet = {
- url: '/actionsheet',
- className: 'actionsheet',
- render: function () {
- return $('#tpl_actionsheet').html();
- },
- bind: function () {
- $('#container').on('click', '#showActionSheet', function () {
- var mask = $('#mask');
- var weuiActionsheet = $('#weui_actionsheet');
- weuiActionsheet.addClass('weui_actionsheet_toggle');
- mask.show()
- .focus()//加focus是为了触发一次页面的重排(reflow or layout thrashing),使mask的transition动画得以正常触发
- .addClass('weui_fade_toggle').one('click', function () {
- hideActionSheet(weuiActionsheet, mask);
- });
- $('#actionsheet_cancel').one('click', function () {
- hideActionSheet(weuiActionsheet, mask);
- });
- mask.unbind('transitionend').unbind('webkitTransitionEnd');
- function hideActionSheet(weuiActionsheet, mask) {
- weuiActionsheet.removeClass('weui_actionsheet_toggle');
- mask.removeClass('weui_fade_toggle');
- mask.on('transitionend', function () {
- mask.hide();
- }).on('webkitTransitionEnd', function () {
- mask.hide();
- })
- }
- });
- }
- };
- // icons
- var icons = {
- url: '/icons',
- className: 'icons',
- render: function () {
- return $('#tpl_icons').html();
- }
- };
- // panel
- var panel = {
- url: '/panel',
- className: 'panel',
- render: function () {
- return $('#tpl_panel').html();
- }
- };
- // tab
- var tab = {
- url: '/tab',
- className: 'tab',
- render: function () {
- return $('#tpl_tab').html();
- }
- };
- // navbar
- var navbar = {
- url: '/navbar',
- className: 'navbar',
- render: function () {
- return $('#tpl_navbar').html();
- },
- bind: function () {
- $('#container').on('click', '.weui_navbar_item', function () {
- $(this).addClass('weui_bar_item_on').siblings('.weui_bar_item_on').removeClass('weui_bar_item_on');
- });
- }
- };
- // tabbar
- var tabbar = {
- url: '/tabbar',
- className: 'tabbar',
- render: function () {
- return $('#tpl_tabbar').html();
- },
- bind: function () {
- $('#container').on('click', '.weui_tabbar_item', function () {
- $(this).addClass('weui_bar_item_on').siblings('.weui_bar_item_on').removeClass('weui_bar_item_on');
- });
- }
- };
- // searchbar
- var searchbar = {
- url: '/searchbar',
- className: 'searchbar',
- render: function () {
- return $('#tpl_searchbar').html();
- },
- bind: function () {
- $('#container').on('focus', '#search_input', function () {
- var $weuiSearchBar = $('#search_bar');
- $weuiSearchBar.addClass('weui_search_focusing');
- }).on('blur', '#search_input', function () {
- var $weuiSearchBar = $('#search_bar');
- $weuiSearchBar.removeClass('weui_search_focusing');
- if ($(this).val()) {
- $('#search_text').hide();
- } else {
- $('#search_text').show();
- }
- }).on('input', '#search_input', function () {
- var $searchShow = $("#search_show");
- if ($(this).val()) {
- $searchShow.show();
- } else {
- $searchShow.hide();
- }
- }).on('touchend', '#search_cancel', function () {
- $("#search_show").hide();
- $('#search_input').val('');
- }).on('touchend', '#search_clear', function () {
- $("#search_show").hide();
- $('#search_input').val('');
- });
- }
- };
- router.push(home)
- .push(button)
- .push(cell)
- .push(toast)
- .push(dialog)
- .push(progress)
- .push(msg)
- .push(article)
- .push(actionsheet)
- .push(icons)
- .push(panel)
- .push(tab)
- .push(navbar)
- .push(tabbar)
- .push(searchbar)
- .setDefault('/')
- .init();
- // .container 设置了 overflow 属性, 导致 Android 手机下输入框获取焦点时, 输入法挡住输入框的 bug
- // 相关 issue: https://github.com/weui/weui/issues/15
- // 解决方法:
- // 0. .container 去掉 overflow 属性, 但此 demo 下会引发别的问题
- // 1. 参考 http://stackoverflow.com/questions/23757345/android-does-not-correctly-scroll-on-input-focus-if-not-body-element
- // Android 手机下, input 或 textarea 元素聚焦时, 主动滚一把
- if (/Android/gi.test(navigator.userAgent)) {
- window.addEventListener('resize', function () {
- if (document.activeElement.tagName == 'INPUT' || document.activeElement.tagName == 'TEXTAREA') {
- window.setTimeout(function () {
- document.activeElement.scrollIntoViewIfNeeded();
- }, 0);
- }
- })
- }
- });
|