侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130555 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

jquery 实现 actionSheet

2024-05-09 星期四 / 0 评论 / 0 点赞 / 5 阅读 / 10777 字

项目中觉得需要一个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

广告 广告

评论区