项目中觉得需要一个actionsheet,大多是都是集成在ui框架中,但是在做的项目用不到全部的框架,所以从jquery-weui上单独剥离出actionsheet。效果如下: $.a
项目中觉得需要一个actionsheet,大多是都是集成在ui框架中,但是在做的项目用不到全部的框架,所以从jquery-weui上单独剥离出actionsheet。效果如下:
$.actions({ actions: [ { text: "收藏", onClick: function () { ....//具体实现 } }, { text: "删除", style: 'color:red', onClick: function () { ....//具体实现 } } ] });
涉及到的css(actionsheet.css):
.weui_mask { background: rgba(0, 0, 0, 0.6);}.weui_mask,.weui_mask_transition,.weui_mask_transparent { position: fixed; z-index: 1; width: 100%; height: 100%; top: 0; left: 0;}.weui_mask_transition { display: none; background: transparent; -webkit-transition: background .3s; transition: background 0.3s;}.weui_mask.weui_mask_visible { opacity: 1; visibility: visible;}.weui_actionsheet { position: fixed; left: 0; bottom: 0; -webkit-transform: translateY(100%); transform: translateY(100%); -webkit-backface-visibility: hidden; backface-visibility: hidden; z-index: 2; width: 100%; background-color: #efeff4; -webkit-transition: -webkit-transform 0.3s; transition: -webkit-transform 0.3s; transition: transform .3s; transition: transform 0.3s, -webkit-transform 0.3s;}.weui_actionsheet_menu { background-color: #ffffff;}.weui_actionsheet_action { margin-top: 6px; background-color: #ffffff;}.weui_actionsheet_cell { position: relative; padding: 10px 0; text-align: center; font-size: 18px;}.weui_actionsheet_cell:before { content: " "; position: absolute; left: 0; top: 0; width: 100%; height: 1px; border-top: 1px solid #d9d9d9; color: #d9d9d9; -webkit-transform-origin: 0 0; transform-origin: 0 0; -webkit-transform: scaleY(0.5); transform: scaleY(0.5);}.weui_actionsheet_cell:active { background-color: #ececec;}.weui_actionsheet_cell:first-child:before { display: none;}.weui_actionsheet_toggle { -webkit-transform: translate(0); transform: translate(0);}.weui_actionsheet { z-index: 100;}.weui_actionsheet .color-primary { color: #04BE02;}.weui_actionsheet .color-danger { color: #f6383a;}.weui_actionsheet .color-warning { color: #f60;}.weui_actionsheet .color-success { color: #4cd964;}.weui_actionsheet .bg-primary,.weui_actionsheet .bg-success,.weui_actionsheet .bg-danger,.weui_actionsheet .bg-warning { color: white;}.weui_actionsheet .bg-primary { background-color: #04BE02;}.weui_actionsheet .bg-danger { background-color: #f6383a;}.weui_actionsheet .bg-warning { background-color: #f60;}.weui_actionsheet .bg-success { background-color: #4cd964;}.weui_mask { opacity: 0; -webkit-transition-duration: .3s; transition-duration: .3s; visibility: hidden;}.weui_mask.weui_mask_visible { opacity: 1; visibility: visible;}
为了手机上能访问流畅将js做了一些修改,点击事件用了tap。涉及到的js(actionsheet.js) :
(function ($) { "use strict"; $.fn.transitionEnd = function (callback) { var events = ['webkitTransitionEnd', 'transitionend', 'oTransitionEnd', 'MSTransitionEnd', 'msTransitionEnd'], i, dom = this; function fireCallBack(e) { /*jshint validthis:true */ if (e.target !== this) return; callback.call(this, e); for (i = 0; i < events.length; i++) { dom.off(events[i], fireCallBack); } } if (callback) { for (i = 0; i < events.length; i++) { dom.on(events[i], fireCallBack); } } return this; }; $.support = (function () { var support = { touch: !!(('ontouchstart' in window) || window.DocumentTouch && document instanceof window.DocumentTouch) }; return support; })(); $.touchEvents = { start: $.support.touch ? 'touchstart' : 'mousedown', move: $.support.touch ? 'touchmove' : 'mousemove', end: $.support.touch ? 'touchend' : 'mouseup' }; $.getTouchPosition = function (e) { e = e.originalEvent || e; //jquery wrap the originevent if (e.type === 'touchstart' || e.type === 'touchmove' || e.type === 'touchend') { return { x: e.targetTouches[0].pageX, y: e.targetTouches[0].pageY }; } else { return { x: e.pageX, y: e.pageY }; } }; $.fn.scrollHeight = function () { return this[0].scrollHeight; }; $.fn.transform = function (transform) { for (var i = 0; i < this.length; i++) { var elStyle = this[i].style; elStyle.webkitTransform = elStyle.MsTransform = elStyle.msTransform = elStyle.MozTransform = elStyle.OTransform = elStyle.transform = transform; } return this; }; $.fn.transition = function (duration) { if (typeof duration !== 'string') { duration = duration + 'ms'; } for (var i = 0; i < this.length; i++) { var elStyle = this[i].style; elStyle.webkitTransitionDuration = elStyle.MsTransitionDuration = elStyle.msTransitionDuration = elStyle.MozTransitionDuration = elStyle.OTransitionDuration = elStyle.transitionDuration = duration; } return this; }; $.getTranslate = function (el, axis) { var matrix, curTransform, curStyle, transformMatrix; // automatic axis detection if (typeof axis === 'undefined') { axis = 'x'; } curStyle = window.getComputedStyle(el, null); if (window.WebKitCSSMatrix) { // Some old versions of Webkit choke when 'none' is passed; pass // empty string instead in this case transformMatrix = new WebKitCSSMatrix(curStyle.webkitTransform === 'none' ? '' : curStyle.webkitTransform); } else { transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); matrix = transformMatrix.toString().split(','); } if (axis === 'x') { //Latest Chrome and webkits Fix if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; //Crazy IE10 Matrix else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); //Normal Browsers else curTransform = parseFloat(matrix[4]); } if (axis === 'y') { //Latest Chrome and webkits Fix if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; //Crazy IE10 Matrix else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); //Normal Browsers else curTransform = parseFloat(matrix[5]); } return curTransform || 0; }; $.requestAnimationFrame = function (callback) { if (window.requestAnimationFrame) return window.requestAnimationFrame(callback); else if (window.webkitRequestAnimationFrame) return window.webkitRequestAnimationFrame(callback); else if (window.mozRequestAnimationFrame) return window.mozRequestAnimationFrame(callback); else { return window.setTimeout(callback, 1000 / 60); } }; $.cancelAnimationFrame = function (id) { if (window.cancelAnimationFrame) return window.cancelAnimationFrame(id); else if (window.webkitCancelAnimationFrame) return window.webkitCancelAnimationFrame(id); else if (window.mozCancelAnimationFrame) return window.mozCancelAnimationFrame(id); else { return window.clearTimeout(id); } }; $.fn.join = function (arg) { return this.toArray().join(arg); }})($);+function ($) { "use strict"; var defaults; var show = function (params) { var mask = $("<div class='weui_mask weui_actions_mask'></div>").appendTo(document.body); var actions = params.actions || []; var actionsHtml = actions.map(function (d, i) { return '<div class="weui_actionsheet_cell ' + (d.className || "") + '" style="' + (d.style || "") + '" >' + d.text + '</div>'; }).join(""); var tpl = '<div class="weui_actionsheet " id="weui_actionsheet">' + '<div class="weui_actionsheet_menu">' + actionsHtml + '</div>' + '<div class="weui_actionsheet_action">' + '<div class="weui_actionsheet_cell weui_actionsheet_cancel">取消</div>' + '</div>' + '</div>'; var dialog = $(tpl).appendTo(document.body); dialog.find(".weui_actionsheet_menu .weui_actionsheet_cell, .weui_actionsheet_action .weui_actionsheet_cell").each(function (i, e) { $(e).click(function () { $.closeActions(); params.onClose && params.onClose(); if (actions[i] && actions[i].onClick) { actions[i].onClick(); } }) }); mask.show(); dialog.show(); mask.addClass("weui_mask_visible"); dialog.addClass("weui_actionsheet_toggle"); }; var hide = function () { $(".weui_mask").removeClass("weui_mask_visible").transitionEnd(function () { $(this).remove(); }); $(".weui_actionsheet").removeClass("weui_actionsheet_toggle").transitionEnd(function () { $(this).remove(); }); } $.actions = function (params) { params = $.extend({}, defaults, params); show(params); } $.closeActions = function () { hide(); } $(document).on("click", ".weui_actions_mask", function () { $.closeActions(); }); var defaults = $.actions.prototype.defaults = { onClose: undefined }}($);
更多内容请移步: http://lihongxun945.github.io/jquery-weui/components