一個簡單的彈出框組件


個人寫這個彈出框的原因就一個,就是能給我帶來可復用,追求新,要簡單,可擴展。要達到炫酷有點難度,分析后還是決定以功能為主,因為是用jq和animation實現的彈出框組件,所以看起來難度不大,簡稱co-dialog。

演示效果DEMO

靈感來源,因為工作中用到dialog,發現UI設計的彈出框的風格一直在變化,於是每次都要重新寫一個彈出框,無意中增加了無用的工作量,所以果斷就封裝成一個彈出框組件,目前的錐形僅支持PC,然后又加入了CSS3動畫效果,如果要引入動畫效果就需要高版本的Browser才能使用,期望你能一起加入參與改進!+1

目前支持一個CSS3動畫組件的功能,當然在co-dialog也能調用動畫方法coani,調用方式和.use()或.app()方法一樣,加入動畫.coani()方法,具體動畫api參考co-ani文檔。
這個彈出框使用起來很簡單,只要實例一次對象,就可以調用api。

var codialog = new codialog();

現在我們可以使用對象(codialog),調用一個方法(app),只需要傳入一個節點(.class)或(#id)名,類型為字符串格式。

codialog.app('.open-success')

之后我們繼續接下來的方法(use)調用,使用彈出框的方法傳入一個對象,對象的格式是keysandvalue形式,功能主要圍繞彈出框的基礎布局設置以及布局屬性和樣式、數據的填充、公用方法的事件處理。基礎布局的設置有哪些屬性?(邊距的默認值之后改過)

// 彈出框
codialog.use({
    ... configure options
})
// 如何顯示彈出框
codialog.app('div.selector').show() 
or 
codialog.show('div.selector')

// 使用動畫的方式也很簡單
codialog.coani('.selector').bounch().stop();
codialog.coani.render();

如下:

dialogWidth
彈出框的整體寬度

default:558
options:integer

dialogHeight
彈出框的整體高度

default:300
options:integer

headerMargin
標題的外邊距設置

default:10||{horizontal:0,vertical:0}||{horizontal:'10px10px',vertical:'10px10px'}
options:integer||{horizontal:integer,vertical:integer}||{horizontal:string,vertical:string}

bodyMargin
容器的內容外邊距(其實內部封裝的時候設置為內邊距)

default:10||{horizontal:0,vertical:0}||{horizontal:'10px10px',vertical:'10px10px'}
options:integer||{horizontal:integer,vertical:integer}||{horizontal:string,vertical:string}

footerMargin
底部的內容外邊距(同上)

default:10||{horizontal:0,vertical:0}||{horizontal:'10px10px',vertical:'10px10px'}
options:integer||{horizontal:integer,vertical:integer}||{horizontal:string,vertical:string}

以上都是在methods方法之前調用的屬性,也就是說給彈出框設置的這些屬性都會直接被使用,如果你發現還有更好的方案,可以去git上直接討論,如果提的建議nice那么必會采納。我更佳喜歡人性化,自由開放的發言。

下面是數據的填充:
title
標題的內容填充

default:''
options:string

message
容器的內容填充

default:''
options:string

footerText
底部內容的填充(可以和按鈕共存)

default:['',...]
options:array([string,string])

以上都是填充彈出框的自定義內容,其中底部的文本填充需要注意,這個(footerText)的值是寫在數組里面的一組字符串。我們甚至還可以在methos方法里面使用this操作內容填充。

methods:function(nodes){
this.title='協議已開通';
this.message='<ahref>趕快充值吧!</a>';
}

接下來,我們還需要在methods公用方法之前處理一些api的調用,比如onHeaderBefore、onBodyBefore、onFooterBefore的函數方法的執行,在這里我們可以做哪些操作?我們僅僅在此設置布局的樣式,為啥要在這里,因為這里設置的方法能實現自適應的布局居中的功能。

下面是布局居中、屬性和樣式的方法:

onHeaderBefore
設置頭部的節點元素的attribute和style

default:callback
options:function

onBodyBefore
設置容器的節點元素的attribute和style

default:callback
options:function

onFooterBefore
設置底部的節點元素的attribute和style

default:callback
options:function

接下來的是公用的方法事件處理,幫助我們實現更加人性化的操作,避免我們的業務需求,減少考慮的事件處理,比如關閉的事件(isClose),還有多級的按鈕的作用(footerButtonCount)。

footerButtonCount
底部按鈕的個數(如果設置0,就會remove移除按鈕塊,最多有2個按鈕)

default:1
options:integer(0/1/2)

isClose
關閉的按鈕事件,默認位true,點擊右側關閉按鈕就會隱藏彈出框,反之同理。

default:true
options:boolean(true/false)

如果你看了之后,還有其他更好的想法,請直接砸過來。
以上就是這個彈出框插件(co-dialog)的所有功能,看效果和code直接進(co-dialog)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM