移動端 精簡mui.css,實現mui的彈出層(不使用mui.js,只包含彈出層)

(移動端) 精簡mui.css,實現mui的彈出層(不使用mui.js,只包含彈出層)

一.效果圖

1.1 alert

在這裏插入圖片描述

1.2confirm

在這裏插入圖片描述

1.3 prompt

在這裏插入圖片描述

1.4 toast,tips,msg

在這裏插入圖片描述

二.使用

1.引用文件(依賴項:jquery)後面會提供精簡版的css和封裝的js文件

<style>
    /**
     重定義 按鈕顏色
     */
    .mui-popup-button {
        color: #9C27B0!important;
        background: rgba(255, 255, 255, .95)!important;
    }
</style>
<script src="js/jquery-1.10.1.min.js"></script>
<link rel="stylesheet" href="css/mer.css" />
<script type="text/javascript" src="js/mer.tool.js"></script>

2.使用

2.1 alert

alert("這是alert彈出提示層");

2.2 confirm

confirm("ccccc",function(){
	 //console.log("確定按鈕觸發事件");
 },function(){
 	 //console.log("確定按鈕觸發事件");
});

2.3 prompt

prompt("這是prompt輸入對話框",function(value){
	//console.log("確定按鈕觸發事件,並返回用戶輸入數據value",value);
},function(){
	//console.log("取消");
});

2.4 toast,tips,msg

toast("這是一個會消失的提示信息")
//或者
tips("這是一個會消失的提示信息")
//或者
msg("這是一個會消失的提示信息")
//達到的效果是相同的

三.附件

3.1mer.css

/*!
 * =====================================================
 * 出自:Mui v3.7.2 (http://dev.dcloud.net.cn/mui)
 * =====================================================
 *
 * =====================================================
 * 精簡:東明之羞 (https://blog.csdn.net/qq_28254093)
 * =====================================================
 */

.mui-popup-backdrop
{
    position: fixed;
    z-index: 998;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;

    -webkit-transition-duration: 400ms;
    transition-duration: 400ms;

    opacity: 0;
    background: rgba(0, 0, 0, .4);
}
.mui-popup-backdrop.mui-active
{
    opacity: 1;
}

.mui-popup
{
    position: fixed;
    z-index: 10000;
    top: 50%;
    left: 50%;

    display: none;
    overflow: hidden;

    width: 270px;

    -webkit-transition-property: -webkit-transform,opacity;
    transition-property:         transform,opacity;
    -webkit-transform: translate3d(-50%, -50%, 0) scale(1.185);
    transform: translate3d(-50%, -50%, 0) scale(1.185);
    text-align: center;

    opacity: 0;
    color: #000;
    border-radius: 13px;
}
.mui-popup.mui-popup-in
{
    display: block;

    -webkit-transition-duration: 400ms;
    transition-duration: 400ms;
    -webkit-transform: translate3d(-50%, -50%, 0) scale(1);
    transform: translate3d(-50%, -50%, 0) scale(1);

    opacity: 1;
}
.mui-popup.mui-popup-out
{
    -webkit-transition-duration: 400ms;
    transition-duration: 400ms;
    -webkit-transform: translate3d(-50%, -50%, 0) scale(1);
    transform: translate3d(-50%, -50%, 0) scale(1);

    opacity: 0;
}

.mui-popup-inner
{
    position: relative;

    padding: 15px;

    border-radius: 13px 13px 0 0;
    background: rgba(255, 255, 255, .95);
}
.mui-popup-inner:after
{
    position: absolute;
    z-index: 15;
    top: auto;
    right: auto;
    bottom: 0;
    left: 0;

    display: block;

    width: 100%;
    height: 1px;

    content: '';
    -webkit-transform: scaleY(.5);
    transform: scaleY(.5);
    -webkit-transform-origin: 50% 100%;
    transform-origin: 50% 100%;

    background-color: rgba(0, 0, 0, .2);
}

.mui-popup-title
{
    font-size: 18px;
    font-weight: 500;

    text-align: center;
}

.mui-popup-title + .mui-popup-text
{
    font-family: inherit;
    font-size: 14px;

    margin: 5px 0 0;
}

.mui-popup-buttons
{
    position: relative;

    display: -webkit-box;
    display: -webkit-flex;
    display:         flex;

    height: 44px;

    -webkit-box-pack: center;
    -webkit-justify-content: center;
    justify-content: center;
}

.mui-popup-button
{
    font-size: 17px;
    line-height: 44px;

    position: relative;

    display: block;
    overflow: hidden;

    box-sizing: border-box;
    width: 100%;
    height: 44px;
    padding: 0 5px;

    cursor: pointer;
    text-align: center;
    white-space: nowrap;
    text-overflow: ellipsis;

    color: #007aff;
    background: rgba(255, 255, 255, .95);

    -webkit-box-flex: 1;
}
.mui-popup-button:after
{
    position: absolute;
    z-index: 15;
    top: 0;
    right: 0;
    bottom: auto;
    left: auto;

    display: block;

    width: 1px;
    height: 100%;

    content: '';
    -webkit-transform: scaleX(.5);
    transform: scaleX(.5);
    -webkit-transform-origin: 100% 50%;
    transform-origin: 100% 50%;

    background-color: rgba(0, 0, 0, .2);
}
.mui-popup-button:first-child
{
    border-radius: 0 0 0 13px;
}
.mui-popup-button:first-child:last-child
{
    border-radius: 0 0 13px 13px;
}
.mui-popup-button:last-child
{
    border-radius: 0 0 13px 0;
}
.mui-popup-button:last-child:after
{
    display: none;
}
.mui-popup-button.mui-popup-button-bold
{
    font-weight: 600;
}

.mui-popup-input input
{
    font-size: 14px;

    width: 100%;
    height: 26px;
    margin: 15px 0 0;
    padding: 0 5px;

    border: 1px solid rgba(0, 0, 0, .3);
    border-radius: 0;
    background: #fff;
}

.mui-plus.mui-android .mui-popup-backdrop
{
    -webkit-transition-duration: 1ms;
    transition-duration: 1ms;
}

.mui-plus.mui-android .mui-popup
{
    -webkit-transition-duration: 1ms;
    transition-duration: 1ms;
    -webkit-transform: translate3d(-50%, -50%, 0) scale(1);
    transform: translate3d(-50%, -50%, 0) scale(1);
}

/* === Progress Bar === */
.mui-progressbar
{
    position: relative;

    display: block;
    overflow: hidden;

    width: 100%;
    height: 2px;

    -webkit-transform-origin: center top;
    transform-origin: center top;
    vertical-align: middle;

    border-radius: 2px;
    background: #b6b6b6;

    -webkit-transform-style: preserve-3d;
    transform-style: preserve-3d;
}
.mui-progressbar span
{
    position: absolute;
    top: 0;
    left: 0;

    width: 100%;
    height: 100%;

    -webkit-transition: 150ms;
    transition: 150ms;
    -webkit-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);

    background: #007aff;
}
.mui-progressbar.mui-progressbar-infinite:before
{
    position: absolute;
    top: 0;
    left: 0;

    width: 100%;
    height: 100%;

    content: '';
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
    -webkit-transform-origin: left center;
    transform-origin: left center;
    -webkit-animation: mui-progressbar-infinite 1s linear infinite;
    animation: mui-progressbar-infinite 1s linear infinite;

    background: #007aff;
}

body > .mui-progressbar
{
    position: absolute;
    z-index: 10000;
    top: 44px;
    left: 0;

    border-radius: 0;
}

.mui-progressbar-in
{
    -webkit-animation: mui-progressbar-in 300ms forwards;
    animation: mui-progressbar-in 300ms forwards;
}

.mui-progressbar-out
{
    -webkit-animation: mui-progressbar-out 300ms forwards;
    animation: mui-progressbar-out 300ms forwards;
}


.mui-toast-container
{
    line-height: 17px;

    position: fixed;
    z-index: 9999;
    bottom: 50px;
    left: 50%;

    -webkit-transition: opacity .3s;
    transition: opacity .3s;
    -webkit-transform: translate(-50%, 0);
    transform: translate(-50%, 0);

    opacity: 0;
}
.mui-toast-container.mui-active
{
    opacity: .9;
}

.mui-toast-message
{
    font-size: 14px;

    padding: 10px 25px;

    text-align: center;

    color: #fff;
    border-radius: 6px;
    /*background-color: #323232;*/
    background-color: #323232;
}

3.2 mer.js

/**
 * 使用mui樣式,實現移動端常用的彈出層
 * 依賴項:jquery 
 */


var m = {}

m.template={
    "alert":'<div mui-id="@id@" class="mui-popup mui-popup-in" style="display: block;"><div class="mui-popup-inner"><div class="mui-popup-title">@title@</div><div class="mui-popup-text">@msg@</div></div><div class="mui-popup-buttons"><span class="mui-popup-button mui-popup-button-bold">@btn@</span></div></div><div  mui-id="@id@" class="mui-popup-backdrop mui-active" style="display: block;"></div>',
    "confirm":'<div mui-id="@id@" class="mui-popup mui-popup-in" style="display: block;"><div class="mui-popup-inner"><div class="mui-popup-title">@title@</div><div class="mui-popup-text">@msg@</div></div><div class="mui-popup-buttons"><span class="mui-popup-button">@btn0@</span><span class="mui-popup-button mui-popup-button-bold">@btn1@</span></div></div><div mui-id="@id@"  class="mui-popup-backdrop mui-active" style="display: block;"></div>',
    "prompt":'<div mui-id="@id@" class="mui-popup mui-popup-in" style="display: block;"><div class="mui-popup-inner"><div class="mui-popup-title">@title@</div><div class="mui-popup-text">@msg@</div><div class="mui-popup-input"><input type="text" autofocus="" placeholder=""></div></div><div class="mui-popup-buttons"><span class="mui-popup-button">@btn0@</span><span class="mui-popup-button mui-popup-button-bold">@btn1@</span></div></div><div mui-id="@id@" class="mui-popup-backdrop mui-active" style="display: block;"></div>',
    "toast":'<div mui-id="@id@"  class="mui-toast-container mui-active"><div class="mui-toast-message">@msg@</div></div>',
}
m.btn={
    btn:"確定",
    btn0:"取消",
    btn1:"確定"
}
m.title="提示";
m.time=2000;

/**
 * 產生隨機唯一編號
 * @param {number?} len 默認爲36位 返回長度
 * @param {number?} binary 默認爲16進制 表示產生的進制包含字符
 * @return 默認返回36位隨機字符
 */
m.UUID=function (len,binary ){
    len=!len?36:len;
    binary=!binary?16:binary;
    return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
        var r = Math.random() * binary | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
        return v.toString(binary);
    }).substring(0,len)
}

/**
 * @description 確定信息 ,只用一個確定按鈕
 * @method alert
 * @for m
 * @param {string} msg 要顯示的信息
 * @param {number?} icon 顯示的類型 0-6   0:感嘆號   1:對號 2:×號 3:問號 4:鎖子 5:生氣  6:笑臉
 */
m.alert = function (msg,title, okFn) {
    if(!title){
        title=m.title;
    }
    var id=m.UUID();
    $("body").append(m.template.alert.replace(/@title@|@msg@|@btn@|@id@/g,function(e){
        return e=="@title@"?title:e=="@msg@"?msg:e=="@id@"?id:m.btn.btn;
    })).addClass("mui-ios").addClass("mui-ios-11").addClass("mui-ios-11-0");
    $("body").find(".mui-popup-button").on("click",function(){
          $('[mui-id="'+id+'"]').remove();
    });
}


/**
 * @description 提示信息
 * @method msg
 * @for m
 * @param {string} msg 要顯示的信息
 * @param {number?} time 顯示時間 毫秒    支持 整數值  默認 2000
 */
m.msg = function (msg, time) {
    var id=m.UUID();
    if(!time){
        time=m.time;
    }
    $("body").append(m.template.toast.replace(/@msg@|@id@/g,function(e){
        return e=="@msg@"?msg:e=="@id@"?id:msg;
    })).addClass("mui-ios").addClass("mui-ios-11").addClass("mui-ios-11-0");
    var index=setTimeout(function(){
        clearInterval(index);
        $('[mui-id="'+id+'"]').fadeOut(700);
        var index2=setTimeout(function(){
            clearInterval(index2);
            $('[mui-id="'+id+'"]').remove();
        },750);
    },parseInt(time))
}

/**
 * @description 詢問框
 * @method confirm
 * @for m
 * @param {string} msg :要詢問的信息
 * @param {function} okFn :當用戶選擇確定時的回調方法;當回調函數返回值爲 false 時阻止關閉 (默認關閉)
 * @param {function?} cancelFn :當用戶選擇取消時的回調方法;當回調函數返回值爲 false 時阻止關閉 (默認關閉)
 */
m.confirm = function (msg, okFn, cancelFn) {
    var id=m.UUID();
    $("body").append(m.template.confirm.replace(/@title@|@msg@|@btn0@|@btn1@|@id@/g,function(e){
        return e=="@title@"?m.title:e=="@msg@"?msg:e=="@btn0@"?m.btn.btn0:e=="@btn1@"?m.btn.btn1:e=="@id@"?id:m.btn.btn;
    })).addClass("mui-ios").addClass("mui-ios-11").addClass("mui-ios-11-0");
    $("body").find(".mui-popup-button.mui-popup-button-bold").on("click",function(){

        $('[mui-id="'+id+'"]').remove();
        if(typeof okFn=="function"){
            okFn();
        }
    });
    $("body").find(".mui-popup-button:not('.mui-popup-button-bold')").on("click",function(){

        $('[mui-id="'+id+'"]').remove();
        if(typeof cancelFn=="function"){
            cancelFn();
        }
    });
}


/**
 * @description 輸入對話框
 * @method open
 * @for lay
 * @param {string} msg :要彈出的url地址 如:http://www.baidu.com
 * @param {string[] ?} size [width,height]:彈出層的大小;不傳參數時,默認爲[可見區域-200,可見區域-100]
 * @param {string ?} title :彈出窗體的標題
 * @param {function} okFn :當用戶選擇確定時的回調方法;當回調函數返回值爲 false 時阻止關閉 (默認關閉)
 * @param {function?} cancelFn :當用戶選擇取消時的回調方法;當回調函數返回值爲 false 時阻止關閉 (默認關閉)
 */
m.prompt = function (msg,title, okFn, cancelFn) {
    if(typeof title=="function"){
        cancelFn=okFn;
        okFn=title;
        title=m.title;
    }

    var id=m.UUID();
    $("body").append(m.template.prompt.replace(/@title@|@msg@|@btn0@|@btn1@|@id@/g,function(e){
        return e=="@title@"?title:e=="@msg@"?msg:e=="@btn0@"?m.btn.btn0:e=="@btn1@"?m.btn.btn1:e=="@id@"?id:m.btn.btn;
    })).addClass("mui-ios").addClass("mui-ios-11").addClass("mui-ios-11-0");
    $("body").find(".mui-popup-button.mui-popup-button-bold").on("click",function(){
        if(typeof okFn=="function"){
            okFn($('[mui-id="'+id+'"]').find("input[type='text']").val());
        }
        $('[mui-id="'+id+'"]').remove();

    });
    $("body").find(".mui-popup-button:not('.mui-popup-button-bold')").on("click",function(){

        $('[mui-id="'+id+'"]').remove();
        if(typeof cancelFn=="function"){
            cancelFn();
        }
    });
}

//覆蓋瀏覽器默認彈出層方法
window.alert =alert  =   m.alert;
window.confirm =confirm  =  m.confirm;
window.prompt =prompt = m.prompt;

window.msg =msg= m.msg;
window.tips =tips  = m.msg;
window.toast =toast =m.msg;

有興趣的夥伴可以使用、再次進行修改,祝大家步步高昇,財源滾滾來。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章