layer--->web彈層組件
代碼:
1 layer.alert('見到你真的很高興', {icon: 6});
這是一個最簡單的彈出層,可根據icon配置左邊的圖標
通常情況下,除了彈窗之外我們一般都會有對按鈕做回調處理的一些操作
如圖:
1 layer.alert('墨綠風格,點擊確認看深藍', { 2 skin: 'layui-layer-molv' //樣式類名 自定義樣式 3 ,closeBtn: 1 // 是否顯示關閉按鈕 4 ,anim: 1 //動畫類型 5 ,btn: ['重要','奇葩'] //按鈕 6 ,icon: 6 // icon 7 ,yes:function(){ 8 layer.msg('按鈕1') 9 } 10 ,btn2:function(){ 11 layer.msg('按鈕2') 12 }}); 13
code:
1 layer.msg('大部分參數都是可以公用的<br>合理搭配,展示不一樣的風格', { 2 time: 2000, //2s后自動關閉 3 btn: ['明白了', '知道了', '哦'] 4 });
回調的例子:
code:
1 layer.msg('也可以這樣', { 2 btn: ['明白了', '知道了'] 3 ,yes: function(index, layero){ 4 layer.msg("按鈕1回調,參數是:"+index) 5 } 6 ,btn2: function(index, layero){ 7 //按鈕【按鈕二】的回調 8 layer.msg("按鈕2回調,參數是:"+index) 9 return false //開啟該代碼可禁止點擊該按鈕關閉 10 } 11 });
open方式
code
1 layer.open({ 2 type: 1 3 ,title: "open方式彈出層" //不顯示標題欄 title : false/標題 4 ,closeBtn: true 5 ,area: '300px;' 6 ,shade: 0.8 7 ,id: 'LAY_layuipro' //設定一個id,防止重復彈出 8 ,resize: false 9 ,btn: ['火速圍觀', '殘忍拒絕'] 10 ,btnAlign: 'c' 11 ,moveType: 1 //拖拽模式,0或者1 12 ,content: '<div style="padding: 50px; line-height: 22px; color: #fff; font-weight: 300;">內容<br>內容</div>' 13 ,success: function(layero){ 14 var btn = layero.find('.layui-layer-btn'); 15 btn.find('.layui-layer-btn0').attr({ 16 href: 'http://www.layui.com/' 17 ,target: '_blank' 18 }); 19 } 20 });
layer.msg
語法:layer.msg(content[, options][, end])
提示框
layer.msg( '這里是msg內容'); layer.msg( '這里是msg內容',{icon:1}); layer.msg( '關閉后想做些什么', function(){ //do something }); layer.msg( '同上', { icon: 1, time: 2000 //2秒關閉(如果不配置,默認是3秒) }, function(){ //do something });
layer.alert
語法:layer.alert(content[, options][, yes])
普通信息框
//eg1 layer.alert( '只想簡單的提示'); //eg2 layer.alert( '加了個圖標', {icon: 1}); //這時如果你也還想執行yes回調,可以放在第三個參數中。 //eg3 layer.alert( '有了回調', function(index){ //do something layer.close(index); });
layer.confirm
語法:layer.confirm(content[, options], yes[, cancel])
詢問框
//eg1 layer.confirm( 'is not?', {icon: 3, title:'提示'}, function(index){ //do something layer.close(index); }); //eg2 layer.confirm( 'is not?', function(index){ //do something layer.close(index); });
layer.propmt
語法:layer.prompt([options,] yes)
輸入層/詢問層
//prompt層新定制的成員如下 { formType: 1, //輸入框類型,支持0(文本)默認1(密碼)2(多行文本) value: '', //初始時的值,默認空字符 maxlength: 140, //可輸入文本的最大長度,默認500 } //例子1 layer.prompt( function(value, index, elem){ alert(value); //得到value layer.close(index); }); //例子2 layer.prompt({ formType: 2, value: '初始值', title: '這里是title' }, function(value, index, elem){ alert(value); //得到value layer.close(index); });
layer.open
語法:layer.open(options)
原始核心方法
基本上是露臉率最高的方法,不管是使用哪種方式創建層,都是走layer.open(),創建任何類型的彈層都會返回一個當前層索引,上述的options即是基礎參數,另外,該文檔統一采用options作為基礎參數的標識
//example1: var index = layer.open({ content: 'test' }); //拿到的index是一個重要的憑據,它是諸如layer.close(index)等方法的必傳參數。 //example2 layer.open({ type: 1 //Layer提供了5種層類型。可傳入的值有:0(信息框,默認)1(頁面層)2(iframe層)3(加載層)4(tips層) , title: 'title here' , area: ['390px', '330px'] , shade: 0.4 , content: $("#test") //支持獲取DOM元素 , btn: ['yes', 'close'] //按鈕 , scrollbar: false //屏蔽瀏覽器滾動條 , yes: function(index){ //layer.msg('yes'); layer.close(index); showToast(); } , btn2: function(){ //layer.alert('aaa',{title:'msg title'}); layer.msg( 'bbb'); //layer.closeAll(); } });
layer.load
語法:layer.load(icon, options)
加載層
icon支持傳入0-2,如果是0,無需傳。另外特別注意一點:load默認是不會自動關閉的,因為你一般會在ajax回調體中關閉它。
//eg1 var index = layer.load(); //eg2 var index = layer.load(1); //換了種風格 //eg3 var index = layer.load(2, {time: 10*1000}); //又換了種風格,並且設定最長等待10秒 //關閉 layer.close( index);
layer.tab
語法:layer.tab(options)
tab層
layer .tab({ area: [ '600px', '300px'], tab: [{ title: 'TAB1', content: '內容1' }, { title: 'TAB2', content: '內容2' }, { title: 'TAB3', content: '內容3' }] });
type-基本層類型
-
類型:Number,默認:0
layer提供了5種層類型。可傳入的值有:0(信息框,默認)1(頁面層)2(iframe層)3(加載層)4(tips層)。 此為重要參數,不同類型層的總開關,若為type:0則不需要配置,其它類型層在調用時必須設置type。若你采用layer.open({type: 1})方式調用,則type為必填項(信息框除外,信息框默認)
-
title-標題
-
類型:String/Array/Boolean,默認:'信息'
title支持三種類型的值,若你傳入的是普通的字符串,如title :'我是標題',那么只會改變標題文本;若你還需要自定義標題區域樣式,那么你還可以title: ['文本', 'font-size:18px;'],數組第二項可以寫任意css樣式;如果你不想顯示標題欄,你可以title: false
-
content-內容
-
類型:String/DOM/Array,默認:''
content可傳入的值是靈活多變的,不僅可以傳入普通的html內容,還可以指定DOM,更可以隨着type的不同而不同。譬如:
codelayui.code
- /!*
- 如果是頁面層
- */
- layer.open({
- type: 1,
- content: '傳入任意的文本或html' //這里content是一個普通的String
- });
- layer.open({
- type: 1,
- content: $('#id') //這里content是一個DOM,注意:最好該元素要存放在body最外層,否則可能被其它的相對元素所影響
- });
- //Ajax獲取
- $.post('url', {}, function(str){
- layer.open({
- type: 1,
- content: str //注意,如果str是object,那么需要字符拼接。
- });
- });
- /!*
- 如果是iframe層
- */
- layer.open({
- type: 2,
- content: 'http://sentsin.com' //這里content是一個URL,如果你不想讓iframe出現滾動條,你還可以content: ['http://sentsin.com', 'no']
- });
- /!*
- 如果是用layer.open執行tips層
- */
- layer.open({
- type: 4,
- content: ['內容', '#id'] //數組第二項即吸附元素選擇器或者DOM
- });
skin-樣式類名 -
類型:String,默認:''
skin不僅允許你傳入layer內置的樣式class名,還可以傳入您自定義的class名。這是一個很好的切入點,意味着你可以借助skin輕松完成不同的風格定制。目前layer內置的skin有:layui-layer-lanlayui-layer-molv,未來我們還會選擇性地內置更多,但更推薦您自己來定義。以下是一個自定義風格的簡單例子
codelayui.code
- //單個使用
- layer.open({
- skin: 'demo-class'
- });
- //全局使用。即所有彈出層都默認采用,但是單個配置skin的優先級更高
- layer.config({
- skin: 'demo-class'
- })
- //CSS
- body .demo-class .layui-layer-title{background:#c00; color:#fff; border: none;}
- body .demo-class .layui-layer-btn{border-top:1px solid #E9E7E7}
- body .demo-class .layui-layer-btn a{background:#333;}
- body .demo-class .layui-layer-btn .layui-layer-btn1{background:#999;}
- …
- 加上body是為了保證優先級。你可以借助Chrome調試工具,定義更多樣式控制層更多的區域。
你也可以去查看layer皮膚制作說明
-
area-寬高
-
類型:String/Array,默認:'auto',area值分別為:[寬度, 高度](iframe層不能設置auto), 對於寬度,並不推薦您設置auto。
在默認狀態下,layer是寬高都自適應的,但當你只想定義寬度時,你可以area: '500px',高度仍然是自適應的。當你寬高都要定義時,你可以area: ['500px', '300px']
offset-坐標 -
類型:String/Array,默認:垂直水平居中, [縱坐標, 橫坐標],默認為垂直水平居中
offset默認情況下不用設置。但如果你不想垂直水平居中,你還可以進行以下賦值:
值 備注 offset: '100px' 只定義top坐標,水平保持居中 offset: ['100px', '50px'] 同時定義top、left坐標 offset: 't' 快捷設置頂部坐標 offset: 'r' 快捷設置右邊緣坐標 offset: 'b' 快捷設置底部坐標 offset: 'l' 快捷設置左邊緣坐標 offset: 'lt' 快捷設置左上角 offset: 'lb' 快捷設置左下角 offset: 'rt' 快捷設置右上角 offset: 'rb' 快捷設置右下角 iocn-圖標。信息框和加載層的私有參數 -
類型:Number,默認:-1(信息框)/0(加載層)
信息框默認不顯示圖標。當你想顯示圖標時,默認皮膚可以傳入0-6。如果是加載層,可以傳入0-2。如:
codelayui.code
- //eg1
- layer.alert('酷斃了', {icon: 1});
- //eg2
- layer.msg('不開心。。', {icon: 5});
- //eg3
- layer.load(1); //風格1的加載
btn-按鈕 -
類型:String/Array,默認:'確認'
信息框模式時,btn默認是一個確認按鈕,其它層類型則默認不顯示,加載層和tips層則無效。當您只想自定義一個按鈕時,你可以btn: '我知道了',當你要定義兩個按鈕時,你可以btn: ['yes', 'no']。當然,你也可以定義更多按鈕,比如:btn: ['按鈕1', '按鈕2', '按鈕3', …],按鈕1的回調是yes,而從按鈕2開始,則回調為btn2: function(){},以此類推。如:
codelayui.code
- //eg1
- layer.confirm('納尼?', {
- btn: ['按鈕一', '按鈕二', '按鈕三'] //可以無限個按鈕
- ,btn3: function(index, layero){
- //按鈕【按鈕三】的回調
- }
- }, function(index, layero){
- //按鈕【按鈕一】的回調
- }, function(index){
- //按鈕【按鈕二】的回調
- });
- //eg2
- layer.open({
- content: 'test'
- ,btn: ['按鈕一', '按鈕二', '按鈕三']
- ,yes: function(index, layero){
- //按鈕【按鈕一】的回調
- }
- ,btn2: function(index, layero){
- //按鈕【按鈕二】的回調
- //return false 開啟該代碼可禁止點擊該按鈕關閉
- }
- ,btn3: function(index, layero){
- //按鈕【按鈕三】的回調
- //return false 開啟該代碼可禁止點擊該按鈕關閉
- }
- ,cancel: function(){
- //右上角關閉回調
- //return false 開啟該代碼可禁止點擊該按鈕關閉
- }
- });
btnAlign-按鈕排列 -
類型:String,默認:r
你可以快捷定義按鈕的排列位置,btnAlign的默認值為r,即右對齊。該參數可支持的賦值如下:
值 備注 btnAlign: 'l' 按鈕左對齊 btnAlign: 'c' 按鈕居中對齊 btnAlign: 'r' 按鈕右對齊。默認值,不用設置 closeBtn - 關閉按鈕 -
類型:String/Boolean,默認:1
layer提供了兩種風格的關閉按鈕,可通過配置1和2來展示,如果不顯示,則closeBtn: 0
shade- 控制遮罩 -
類型:String/Array/Boolean,默認:0.3
即彈層外區域。默認是0.3透明度的黑色背景('#000')。如果你想定義別的顏色,可以shade: [0.8, '#393D49'];如果你不想顯示遮罩,可以shade: 0
shadeClose- 是否點擊遮罩關閉 -
類型:Boolean,默認:false
如果你的shade是存在的,那么你可以設定shadeClose來控制點擊彈層外區域關閉。點擊彈框以外區域,彈框會自動消失。
time- 自動關閉所需毫秒 -
類型:Number,默認:0
默認不會自動關閉。當你想自動關閉時,可以time: 5000,即代表5秒后自動關閉,注意單位是毫秒(1秒=1000毫秒)
-
id - 用於控制彈層唯一標識
-
類型:String,默認:空字符
設置該值后,不管是什么類型的層,都只允許同時彈出一個。一般用於頁面層和iframe層模式
anim - 彈出動畫 -
類型:Number,默認:0
我們的出場動畫全部采用CSS3。這意味着除了ie6-9,其它所有瀏覽器都是支持的。目前anim可支持的動畫類型有0-6 如果不想顯示動畫,設置 anim: -1 即可。另外需要注意的是,3.0之前的版本用的是 shift 參數
值 備注 anim: 0 平滑放大。默認 anim: 1 從上掉落 anim: 2 從最底部往上滑入 anim: 3 從左滑入 anim: 4 從左翻滾 anim: 5 漸顯 anim: 6 抖動 isOutAnim- 關閉動畫 (layer 3.0.3新增) -
類型:Boolean,默認:true
默認情況下,關閉層時會有一個過度動畫。如果你不想開啟,設置 isOutAnim: false 即可
maxmin - 最大最小化。 -
類型:Boolean,默認:false
該參數值對type:1和type:2有效。默認不顯示最大小化按鈕。需要顯示配置maxmin: true即可
fixed - 固定 -
類型:Boolean,默認:true
即鼠標滾動時,層是否固定在可視區域。如果不想,設置fixed: false即可
resize- 是否允許拉伸 -
類型:Boolean,默認:true
默認情況下,你可以在彈層右下角拖動來拉伸尺寸。如果對指定的彈層屏蔽該功能,設置 false即可。該參數對loading、tips層無效
resizing- 監聽窗口拉伸動作 -
類型:Function,默認:null
當你拖拽彈層右下角對窗體進行尺寸調整時,如果你設定了該回調,則會執行。回調返回一個參數:當前層的DOM對象
codelayui.code
- resizing: function(layero){
- console.log(layero);
- }
scrollbar- 是否允許瀏覽器出現滾動條 -
類型:Boolean,默認:true
默認允許瀏覽器滾動,如果設定scrollbar: false,則屏蔽
maxWidth- 最大寬度 -
類型:Number,默認:360
請注意:只有當area: 'auto'時,maxWidth的設定才有效。
maxHeight- 最大高度 -
類型:Number,默認:無
請注意:只有當高度自適應時,maxHeight的設定才有效。
zlndex- 層疊順序 -
類型:,默認:19891014(賢心生日 0.0)
一般用於解決和其它組件的層疊沖突。
move- 觸發拖動的元素 -
類型:String/DOM/Boolean,默認:'.layui-layer-title'
默認是觸發標題區域拖拽。如果你想單獨定義,指向元素的選擇器或者DOM即可。如move: '.mine-move'。你還配置設定move: false來禁止拖拽
moveOut- 是否允許拖拽到窗口外 -
類型:Boolean,默認:false
默認只能在窗口內拖拽,如果你想讓拖到窗外,那么設定moveOut: true即可
moveEnd- 拖動完畢后的回調方法 -
類型:Function,默認:null
默認不會觸發moveEnd,如果你需要,設定moveEnd: function(layero){}即可。其中layero為當前層的DOM對象
tips- tips方向和顏色 -
類型:Number/Array,默認:2
tips層的私有參數。支持上右下左四個方向,通過1-4進行方向設定。如tips: 3則表示在元素的下面出現。有時你還可能會定義一些顏色,可以設定tips: [1, '#c00']
tipsMore- 是否允許多個tips -
類型:Boolean,默認:false
允許多個意味着不會銷毀之前的tips層。通過tipsMore: true開啟
success- 層彈出后的成功回調方法 -
類型:Function,默認:null
當你需要在層創建完畢時即執行一些語句,可以通過該回調。success會攜帶兩個參數,分別是當前層DOM當前層索引。如:
codelayui.code
- layer.open({
- content: '測試回調',
- success: function(layero, index){
- console.log(layero, index);
- }
- });
yes- 確定按鈕回調方法 -
類型:Function,默認:null
該回調攜帶兩個參數,分別為當前層索引、當前層DOM對象。如:
codelayui.code
- layer.open({
- content: '測試回調',
- yes: function(index, layero){
- //do something
- layer.close(index); //如果設定了yes回調,需進行手工關閉
- }
- });
cancel- 右上角關閉按鈕觸發的回調 -
類型:Function,默認:null
該回調攜帶兩個參數,分別為:當前層索引參數(index)、當前層的DOM對象(layero),默認會自動觸發關閉。如果不想關閉,return false即可,如;
codelayui.code
- cancel: function(index, layero){
- if(confirm('確定要關閉么')){ //只有當點擊confirm框的確定時,該層才會關閉
- layer.close(index)
- }
- return false;
- }
end- 層銷毀后觸發的回調 -
類型:Function,默認:null
無論是確認還是取消,只要層被銷毀了,end都會執行,不攜帶任何參數。
full/min/restore-分別代表最大化、最小化、還原 后觸發的回調 -
類型:Function,默認:null
攜帶一個參數,即當前層DOM
這是一個可以重要也可以不重要的方法,重要的是,它的權利真的很大,尤其是在模塊化加載layer時,你會發現你必須要用到它。它不僅可以配置一些諸如路徑、加載的模塊,甚至還可以決定整個彈層的默認參數。而說它不重要,是因為多數情況下,你會發現,你似乎不是那么十分需要它。但你真的需要認識一下這位伙計。
如果您是采用seajs或者requirejs加載layer,你需要執行該方法來完成初始化的配置。比如:
codelayui.code
- layer.config({
- path: '/res/layer/' //layer.js所在的目錄,可以是絕對目錄,也可以是相對目錄
- });
- //這樣的話,layer就會去加載一些它所需要的配件,比如css等。
- //當然,你即便不用seajs或者requirejs,也可以通過上述方式設定路徑
如果你是采用<script src="?a.js&layer.js">這種合並的方式引入layer,那么您需要在script標簽上加一個自定義屬性merge="true"。如:
codelayui.code
- <script src="?a.js&layer.js" merge="true">
- 這樣的話,layer就不會去自動去獲取路徑,但你需要通過以下方式來完成初始化的配置
- layer.config({
- path: '/res/layer/' //layer.js所在的目錄,可以是絕對目錄,也可以是相對目錄
- });
注意:如果采用 layui 加載 layer,無需設置 path。所以前置工作都是自動完成。
但layer.config的作用遠不止上述這樣。它還可以配置層默認的基礎參數,如:
codelayui.code
- layer.config({
- anim: 1, //默認動畫風格
- skin: 'layui-layer-molv' //默認皮膚
- …
- });
- //除此之外,extend還允許你加載拓展的css皮膚,如:
- layer.config({
- //如果是獨立版的layer,則將myskin存放在./skin目錄下
- //如果是layui中使用layer,則將myskin存放在./css/modules/layer目錄下
- extend: 'myskin/style.css'
- });
- //具體的皮膚定制,可以參見:skin參數說明
由於我們的layer內置了輕量級加載器,所以你根本不需要單獨引入css等文件。但是加載總是需要過程的。當你在頁面一打開就要執行彈層時,你最好是將彈層放入ready方法中,如:
codelayui.code
- //頁面一打開就執行彈層
- layer.ready(function(){
- layer.msg('很高興一開場就見到你');
- });
我是華麗的醬油:介紹完上面兩位引導者,接下來我們真正的主角閃亮登場了。此處應有掌聲 ^,^
基本上是露臉率最高的方法,不管是使用哪種方式創建層,都是走layer.open(),創建任何類型的彈層都會返回一個當前層索引,上述的options即是基礎參數,另外,該文檔統一采用options作為基礎參數的標識例子:
codelayui.code
- var index = layer.open({
- content: 'test'
- });
- //拿到的index是一個重要的憑據,它是諸如layer.close(index)等方法的必傳參數。
噢,請等等,上面這位主角的介紹篇幅怎么看怎么都覺得跟它的地位不符,作者在文檔中只給了它如此可憐的一塊地??這是因為,它真的已經大眾得不能再大眾了,你真正需要了解的,是它的內部器官,即上面一大篇幅介紹的各種基礎參數。 ←_←
它的彈出似乎顯得有些高調,一般用於對用戶造成比較強烈的關注,類似系統alert,但卻比alert更靈便。它的參數是自動向左補齊的。通過第二個參數,可以設定各種你所需要的基礎參數,但如果你不需要的話,直接寫回調即可。如
codelayui.code
- //eg1
- layer.alert('只想簡單的提示');
- //eg2
- layer.alert('加了個圖標', {icon: 1}); //這時如果你也還想執行yes回調,可以放在第三個參數中。
- //eg3
- layer.alert('有了回調', function(index){
- //do something
- layer.close(index);
- });
類似系統confirm,但卻遠勝confirm,另外它不是和系統的confirm一樣阻塞你需要把交互的語句放在回調體中。同樣的,它的參數也是自動補齊的。
codelayui.code
- //eg1
- layer.confirm('is not?', {icon: 3, title:'提示'}, function(index){
- //do something
- layer.close(index);
- });
- //eg2
- layer.confirm('is not?', function(index){
- //do something
- layer.close(index);
- });
我們在源碼中用了相對較大的篇幅來定制了這個msg,目的是想將其打造成露臉率最高的提示框。而事實上我的確也在大量地使用它。因為它簡單,而且足夠得自覺,它不僅占據很少的面積,而且默認還會3秒后自動消失所有這一切都決定了我對msg的愛。因此我賦予了它許多可能在外形方面,它堅持簡陋的變化,在作用方面,它堅持零用戶操作。而且它的參數也是自動補齊的。
codelayui.code
- //eg1
- layer.msg('只想弱弱提示');
- //eg2
- layer.msg('有表情地提示', {icon: 6});
- //eg3
- layer.msg('關閉后想做些什么', function(){
- //do something
- });
- //eg
- layer.msg('同上', {
- icon: 1,
- time: 2000 //2秒關閉(如果不配置,默認是3秒)
- }, function(){
- //do something
- });
type:3的深度定制。load並不需要你傳太多的參數,但如果你不喜歡默認的加載風格,你還有選擇空間。icon支持傳入0-2如果是0,無需傳。另外特別注意一點:load默認是不會自動關閉的,因為你一般會在ajax回調體中關閉它。
codelayui.code
- //eg1
- var index = layer.load();
- //eg2
- var index = layer.load(1); //換了種風格
- //eg3
- var index = layer.load(2, {time: 10*1000}); //又換了種風格,並且設定最長等待10秒
- //關閉
- layer.close(index);
type:4的深度定制。也是我本人比較喜歡的一個層類型,因為它擁有和msg一樣的低調和自覺,而且會智能定位,即靈活地判斷它應該出現在哪邊。默認是在元素右邊彈出
codelayui.code
- //eg1
- layer.tips('只想提示地精准些', '#id');
- //eg 2
- $('#id').on('click', function(){
- var that = this;
- layer.tips('只想提示地精准些', that); //在元素的事件回調體中,follow直接賦予this即可
- });
- //eg 3
- layer.tips('在上面', '#id', {
- tips: 1
- });
上面主要是一些彈層的調用方式,而下面介紹的是一些輔助性的方法
關於它似乎沒有太多介紹的必要,唯一讓你疑惑的,可能就是這個index了吧。事實上它非常容易得到。
codelayui.code
- //當你想關閉當前頁的某個層時
- var index = layer.open();
- var index = layer.alert();
- var index = layer.load();
- var index = layer.tips();
- //正如你看到的,每一種彈層調用方式,都會返回一個index
- layer.close(index); //此時你只需要把獲得的index,輕輕地賦予layer.close即可
- //如果你想關閉最新彈出的層,直接獲取layer.index即可
- layer.close(layer.index); //它獲取的始終是最新彈出的某個層,值是由layer內部動態遞增計算的
- //當你在iframe頁面關閉自身時
- var index = parent.layer.getFrameIndex(window.name); //先得到當前iframe層的索引
- parent.layer.close(index); //再執行關閉
如果你很懶,你不想去獲取index你只想關閉。那么closeAll真的可以幫上你。如果你不指向層類型的話,它會銷毀掉當前頁所有的layer層。當然,如果你只想關閉某個類型的層,那么你可以
codelayui.code
- layer.closeAll(); //瘋狂模式,關閉所有層
- layer.closeAll('dialog'); //關閉信息框
- layer.closeAll('page'); //關閉所有頁面層
- layer.closeAll('iframe'); //關閉所有的iframe層
- layer.closeAll('loading'); //關閉加載層
- layer.closeAll('tips'); //關閉所有的tips層
該方法對loading層和tips層無效。參數index為層的索引,cssStyle允許你傳入任意的css屬性
codelayui.code
- //重新給指定層設定width、top等
- layer.style(index, {
- width: '1000px',
- top: '10px'
- });
使用方式:layer.title('標題變了', index)
當你試圖在當前頁獲取iframe頁的DOM元素時,你可以用此方法。selector即iframe頁的選擇器
codelayui.code
- layer.open({
- type: 2,
- content: 'test/iframe.html',
- success: function(layero, index){
- var body = layer.getChildFrame('body', index);
- var iframeWin = window[layero.find('iframe')[0]['name']]; //得到iframe頁的窗口對象,執行iframe頁的方法:iframeWin.method();
- console.log(body.html()) //得到iframe頁的body內容
- body.find('input').val('Hi,我是從父頁來的')
- }
- });
此方法一般用於在iframe頁關閉自身時用到。
codelayui.code
- //假設這是iframe頁
- var index = parent.layer.getFrameIndex(window.name); //先得到當前iframe層的索引
- parent.layer.close(index); //再執行關閉
調用該方法時,iframe層的高度會重新進行適應
似乎不怎么常用的樣子。使用方式:layer.iframeSrc(index, 'http://sentsin.com')
非常強大的一個方法,雖然一般很少用。但是當你的頁面有很多很多layer窗口,你需要像Window窗體那樣,點擊某個窗口,該窗體就置頂在上面,那么setTop可以來輕松實現。它采用巧妙的邏輯,以使這種置頂的性能達到最優
codelayui.code
- //通過這種方式彈出的層,每當它被選擇,就會置頂。
- layer.open({
- type: 2,
- shade: false,
- area: '500px',
- maxmin: true,
- content: 'http://www.layui.com',
- zIndex: layer.zIndex, //重點1
- success: function(layero){
- layer.setTop(layero); //重點2
- }
- });
(這三個醬油又一次被並列 ==。)一般用於在自定義元素上觸發最大化、最小化和全屏。
請注意,從2.3開始,無需通過layer.config來加載拓展模塊。如果您是之前版本,則需通過下述方式來加載
codelayui.code
- layer.config({
- extend: 'extend/layer.ext.js'
- });
prompt的參數也是向前補齊的。options不僅可支持傳入基礎參數,還可以傳入prompt專用的屬性。當然,也可以不傳。yes攜帶value 表單值index 索引elem 表單元素
codelayui.code
- //prompt層新定制的成員如下
- {
- formType: 1, //輸入框類型,支持0(文本)默認1(密碼)2(多行文本)
- value: '', //初始時的值,默認空字符
- maxlength: 140, //可輸入文本的最大長度,默認500
- }
- //例子1
- layer.prompt(function(value, index, elem){
- alert(value); //得到value
- layer.close(index);
- });
- //例子2
- layer.prompt({
- formType: 2,
- value: '初始值',
- title: '請輸入值',
- area: ['800px', '350px'] //自定義文本域寬高
- }, function(value, index, elem){
- alert(value); //得到value
- layer.close(index);
- });
tab層只單獨定制了一個成員,即tab: [],這個好像沒有什么可介紹的,簡單粗暴看例子
codelayui.code
- layer.tab({
- area: ['600px', '300px'],
- tab: [{
- title: 'TAB1',
- content: '內容1'
- }, {
- title: 'TAB2',
- content: '內容2'
- }, {
- title: 'TAB3',
- content: '內容3'
- }]
- });
相冊層,也可以稱之為圖片查看器。它的出場動畫從layer內置的動畫類型中隨機展現。photos支持傳入json和直接讀取頁面圖片兩種方式。如果是json傳入,如下:
codelayui.code
- $.getJSON('/jquery/layer/test/photos.json', function(json){
- layer.photos({
- photos: json
- ,anim: 5 //0-6的選擇,指定彈出圖片動畫類型,默認隨機(請注意,3.0之前的版本用shift參數)
- });
- });
- //而返回的json需嚴格按照如下格式:
-
codelayui.code
- {
- "title": "", //相冊標題
- "id": 123, //相冊id
- "start": 0, //初始顯示的圖片序號,默認0
- "data": [ //相冊包含的圖片,數組格式
- {
- "alt": "圖片名",
- "pid": 666, //圖片id
- "src": "", //原圖地址
- "thumb": "" //縮略圖地址
- }
- ]
- }
如果是直接從頁面中獲取圖片,那么需要指向圖片的父容器,並且你的img可以設定一些規定的屬性(但不是必須的)。
codelayui.code
- //HTML示例
- <div id="layer-photos-demo" class="layer-photos-demo">
- <img layer-pid="圖片id,可以不寫" layer-src="大圖地址" src="縮略圖" alt="圖片名">
- <img layer-pid="圖片id,可以不寫" layer-src="大圖地址" src="縮略圖" alt="圖片名">
- </div>
- <script>
- //調用示例
- layer.photos({
- photos: '#layer-photos-demo'
- ,anim: 5 //0-6的選擇,指定彈出圖片動畫類型,默認隨機(請注意,3.0之前的版本用shift參數)
- });
- </script>
第二種方式的圖片查看器顯然更加簡單,因為無需像第一種那樣返回規定的json,但是他們還是有各自的應用場景的,你可以按照你的需求進行選擇。另外,photos還有個tab回調,切換圖片時觸發。
codelayui.code
- layer.photos({
- photos: json/選擇器,
- tab: function(pic, layero){
- console.log(pic) //當前圖片的一些信息
- }
- });
完