彈層組件文檔 - layui.layer

layer 至今仍做爲 layui 的表明做,她的受衆普遍並不是偶然,而是這數年來的堅持、不棄的執念,將那些不屑的眼光轉化爲應得的尊重,不斷完善和維護、不斷建設和提高社區服務,在 Web 開發者的圈子裏口口相傳,乃至於成爲今天的 layui 最強勁的源動力。目前, layer已成爲國內最多人使用的 Web 彈層組件GitHub 天然Stars 5000+,官網累計下載量達50w+,大概有30萬不一樣規模的 Web 平臺使用過 layer。 

之因此列舉上面這些數字,並不是是在誇誇其談,而是懂 layer 的人都知道,這是一種怎樣不易的沉澱。而因爲 layer 在 layui 體系中的位置比較特殊,甚至讓不少人都誤覺得 layui = layer ui,因此再次強調 layer 只是做爲 layui 的一個彈層模塊,因爲其用戶基數較大,因此至今仍把她做爲獨立組件來維護。不過請注意:不管是獨立的 layer,仍是做爲內置模塊的 layer,文檔都以本頁爲準。
模塊加載名稱: layer,獨立版本: layer.layui.com
使用場景

因爲layer能夠獨立使用,也能夠經過Layui模塊化使用。因此請按照你的實際需求來選擇。css

場景 用前準備 調用方式
1. 做爲獨立組件使用 若是你只是單獨想使用 layer,你能夠去 layer 獨立版本官網下載組件包。你須要在你的頁面引入jQuery1.8以上的任意版本,並引入layer.js 經過script標籤引入layer.js後,直接用便可。 參考:快速上手
2. layui 模塊化使用 若是你使用的是 layui,那麼你直接在官網下載 layui 框架便可,無需引入 jQuery 和 layer.js,但須要引入layui.csslayui.js 經過layui.use('layer', callback)加載模塊

做爲獨立組件使用 layer  

引入好layer.js後,直接用便可
<script src="layer.js"></script>
<script>
layer.msg('hello');
</script>

 

在 layui 中使用 layer

  

layui.use('layer', function(){
var layer = layui.layer;
layer.msg('hello');
});

 

除了上面有所不一樣,其它都徹底一致。html

基礎參數

咱們提到的基礎參數主要指調用方法時用到的配置項,如:layer.open({content: ''})layer.msg('', {time: 3})等,其中的content和time便是基礎參數,以鍵值形式存在,基礎參數可合理應用於任何層類型中,您不須要全部都去配置,大多數都是可選的。而其中的layer.open、layer.msg就是內置方法。注意,從2.3開始,無需經過layer.config來加載拓展模塊jquery

type - 基本層類型

類型:Number,默認:0git

layer提供了5種層類型。可傳入的值有:0(信息框,默認)1(頁面層)2(iframe層)3(加載層)4(tips層)。 若你採用layer.open({type: 1})方式調用,則type爲必填項(信息框除外)github

title - 標題

類型:String/Array/Boolean,默認:'信息'web

title支持三種類型的值,若你傳入的是普通的字符串,如title :'我是標題',那麼只會改變標題文本;若你還須要自定義標題區域樣式,那麼你能夠title: ['文本', 'font-size:18px;'],數組第二項能夠寫任意css樣式;若是你不想顯示標題欄,你能夠title: falseajax

content - 內容

類型:String/DOM/Array,默認:''json

content可傳入的值是靈活多變的,不只能夠傳入普通的html內容,還能夠指定DOM,更能夠隨着type的不一樣而不一樣。譬如:數組

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,將來咱們還會選擇性地內置更多,但更推薦您本身來定義。如下是一個自定義風格的簡單例子

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'

在默認狀態下,layer是寬高都自適應的,但當你只想定義寬度時,你能夠area: '500px',高度仍然是自適應的。當你寬高都要定義時,你能夠area: ['500px', '300px']

offset - 座標

類型:String/Array,默認:垂直水平居中

offset默認狀況下不用設置。但若是你不想垂直水平居中,你還能夠進行如下賦值:

備註
offset: 'auto' 默認座標,即垂直水平居中
offset: '100px' 只定義top座標,水平保持居中
offset: ['100px', '50px'] 同時定義top、left座標
offset: 't' 快捷設置頂部座標
offset: 'r' 快捷設置右邊緣座標
offset: 'b' 快捷設置底部座標
offset: 'l' 快捷設置左邊緣座標
offset: 'lt' 快捷設置左上角
offset: 'lb' 快捷設置左下角
offset: 'rt' 快捷設置右上角
offset: 'rb' 快捷設置右下角
icon - 圖標。信息框和加載層的私有參數

類型:Number,默認:-1(信息框)/0(加載層)

信息框默認不顯示圖標。當你想顯示圖標時,默認皮膚能夠傳入0-6若是是加載層,能夠傳入0-2。如:

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(){},以此類推。如:

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提供了兩種風格的關閉按鈕,可經過配置12來展現,若是不顯示,則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:1type:2有效。默認不顯示最大小化按鈕。須要顯示配置maxmin: true便可

fixed - 固定

類型:Boolean,默認:true

即鼠標滾動時,層是否固定在可視區域。若是不想,設置fixed: false便可

resize - 是否容許拉伸

類型:Boolean,默認:true

默認狀況下,你能夠在彈層右下角拖動來拉伸尺寸。若是對指定的彈層屏蔽該功能,設置 false便可。該參數對loading、tips層無效

resizing - 監聽窗口拉伸動做

類型:Function,默認:null

當你拖拽彈層右下角對窗體進行尺寸調整時,若是你設定了該回調,則會執行。回調返回一個參數:當前層的DOM對象

code

  

resizing: function(layero){
console.log(layero);
}

 

scrollbar - 是否容許瀏覽器出現滾動條

類型:Boolean,默認:true

默認容許瀏覽器滾動,若是設定scrollbar: false,則屏蔽

maxWidth - 最大寬度

類型:Number,默認:360

請注意:只有當area: 'auto'時,maxWidth的設定纔有效。

maxHeight - 最大高度

類型:Number,默認:無

請注意:只有當高度自適應時,maxHeight的設定纔有效。

zIndex - 層疊順序

類型:,默認: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當前層索引。如:

code  

layer.open({
content: '測試回調',
success: function(layero, index){
console.log(layero, index);
}
});

 

yes - 肯定按鈕回調方法

類型:Function,默認:null

該回調攜帶兩個參數,分別爲當前層索引、當前層DOM對象。如:

code  

layer.open({
content: '測試回調',
yes: function(index, layero){
//do something
layer.close(index); //若是設定了yes回調,需進行手工關閉
}
});

 

cancel - 右上角關閉按鈕觸發的回調

類型:Function,默認:null

該回調攜帶兩個參數,分別爲:當前層索引參數(index)、當前層的DOM對象(layero),默認會自動觸發關閉。若是不想關閉,return false便可,如;

code  

cancel: function(index, layero){
if(confirm('肯定要關閉麼')){ //只有當點擊confirm框的肯定時,該層纔會關閉
layer.close(index)
}
return false;
}

 

end - 層銷燬後觸發的回調

類型:Function,默認:null

不管是確認仍是取消,只要層被銷燬了,end都會執行,不攜帶任何參數。

full/min/restore -分別表明最大化、最小化、還原 後觸發的回調

類型:Function,默認:null

攜帶一個參數,即當前層DOM

layer.config(options) - 初始化全局配置

這是一個能夠重要也能夠不重要的方法,重要的是,它的權利真的很大,尤爲是在模塊化加載layer時,你會發現你必需要用到它。它不只能夠配置一些諸如路徑、加載的模塊,甚至還能夠決定整個彈層的默認參數。而說它不重要,是由於多數狀況下,你會發現,你彷佛不是那麼十分須要它。但你真的須要認識一下這位夥計。

若是您是採用seajs或者requirejs加載layer,你須要執行該方法來完成初始化的配置。好比:

code  

layer.config({
path: '/res/layer/' //layer.js所在的目錄,能夠是絕對目錄,也能夠是相對目錄
});
//這樣的話,layer就會去加載一些它所須要的配件,好比css等。
//固然,你即使不用seajs或者requirejs,也能夠經過上述方式設定路徑

 

若是你是採用<script src="?a.js&layer.js">這種合併的方式引入layer,那麼您須要在script標籤上加一個自定義屬性merge="true"。如:

code  

<script src="?a.js&layer.js" merge="true">
這樣的話,layer就不會去自動去獲取路徑,但你須要經過如下方式來完成初始化的配置
layer.config({
path: '/res/layer/' //layer.js所在的目錄,能夠是絕對目錄,也能夠是相對目錄
});

 

注意:若是採用 layui 加載 layer,無需設置 path。因此前置工做都是自動完成。

但layer.config的做用遠不止上述這樣。它還能夠配置層默認的基礎參數,如:

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.ready(callback) - 初始化就緒

因爲咱們的layer內置了輕量級加載器,因此你根本不須要單獨引入css等文件。可是加載老是須要過程的。當你在頁面一打開就要執行彈層時,你最好是將彈層放入ready方法中,如:

code  

//頁面一打開就執行彈層
layer.ready(function(){
layer.msg('很高興一開場就見到你');
});

 

我是華麗的醬油:介紹完上面兩位引導者,接下來咱們真正的主角閃亮登場了。此處應有掌聲 ^,^

layer.open(options) - 原始核心方法

基本上是露臉率最高的方法,無論是使用哪一種方式建立層,都是走layer.open(),建立任何類型的彈層都會返回一個當前層索引,上述的options便是基礎參數,另外,該文檔統一採用options做爲基礎參數的標識例子:

code  

var index = layer.open({
content: 'test'
});
//拿到的index是一個重要的憑據,它是諸如layer.close(index)等方法的必傳參數。

噢,請等等,上面這位主角的介紹篇幅怎麼看怎麼都以爲跟它的地位不符,做者在文檔中只給了它如此可憐的一塊地??這是由於,它真的已經大衆得不能再大衆了,你真正須要瞭解的,是它的內部器官,即上面一大篇幅介紹的各類基礎參數。 ←_←

layer.alert(content, options, yes) - 普通訊息框

它的彈出彷佛顯得有些高調,通常用於對用戶形成比較強烈的關注,相似系統alert,但卻比alert更靈便。它的參數是自動向左補齊的。經過第二個參數,能夠設定各類你所須要的基礎參數,但若是你不須要的話,直接寫回調便可。如

code  

//eg1
layer.alert('只想簡單的提示');
//eg2
layer.alert('加了個圖標', {icon: 1}); //這時若是你也還想執行yes回調,能夠放在第三個參數中。
//eg3
layer.alert('有了回調', function(index){
//do something
layer.close(index);
});

 

layer.confirm(content, options, yes, cancel) - 詢問框

相似系統confirm,但卻遠勝confirm,另外它不是和系統的confirm同樣阻塞你須要把交互的語句放在回調體中。一樣的,它的參數也是自動補齊的。

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);
});

 

layer.msg(content, options, end) - 提示框

咱們在源碼中用了相對較大的篇幅來定製了這個msg,目的是想將其打形成露臉率最高的提示框。而事實上個人確也在大量地使用它。由於它簡單,並且足夠得自覺,它不只佔據不多的面積,並且默認還會3秒後自動消失全部這一切都決定了我對msg的愛。所以我賦予了它許多可能在外形方面,它堅持簡陋的變化,在做用方面,它堅持零用戶操做。並且它的參數也是自動補齊的。

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
});

 

layer.load(icon, options) - 加載層

type:3的深度定製。load並不須要你傳太多的參數,但若是你不喜歡默認的加載風格,你還有選擇空間。icon支持傳入0-2若是是0,無需傳。另外特別注意一點:load默認是不會自動關閉的,由於你通常會在ajax回調體中關閉它。

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);

 

layer.tips(content, follow, options) - tips層

type:4的深度定製。也是我本人比較喜歡的一個層類型,由於它擁有和msg同樣的低調和自覺,並且會智能定位,即靈活地判斷它應該出如今哪邊。默認是在元素右邊彈出

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
});

 

上面主要是一些彈層的調用方式,而下面介紹的是一些輔助性的方法

layer.close(index) - 關閉特定層

關於它彷佛沒有太多介紹的必要,惟一讓你疑惑的,可能就是這個index了吧。事實上它很是容易獲得。

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); //再執行關閉

 

layer.closeAll(type) - 關閉全部層

若是你很懶,你不想去獲取index你只想關閉。那麼closeAll真的能夠幫上你。若是你不指向層類型的話,它會銷燬掉當前頁全部的layer層。固然,若是你只想關閉某個類型的層,那麼你能夠

code  

layer.closeAll(); //瘋狂模式,關閉全部層
layer.closeAll('dialog'); //關閉信息框
layer.closeAll('page'); //關閉全部頁面層
layer.closeAll('iframe'); //關閉全部的iframe層
layer.closeAll('loading'); //關閉加載層
layer.closeAll('tips'); //關閉全部的tips層

 

layer.style(index, cssStyle) - 從新定義層的樣式

該方法對loading層和tips層無效。參數index爲層的索引,cssStyle容許你傳入任意的css屬性

code  

//從新給指定層設定width、top等
layer.style(index, {
width: '1000px',
top: '10px'
});

 

layer.title(title, index) - 改變層的標題

使用方式:layer.title('標題變了', index)

layer.getChildFrame(selector, index) - 獲取iframe頁的DOM

當你試圖在當前頁獲取iframe頁的DOM元素時,你能夠用此方法。selector即iframe頁的選擇器

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,我是從父頁來的')
}
});

 

layer.getFrameIndex(windowName) - 獲取特定iframe層的索引

此方法通常用於在iframe頁關閉自身時用到。

code  

//假設這是iframe頁
var index = parent.layer.getFrameIndex(window.name); //先獲得當前iframe層的索引
parent.layer.close(index); //再執行關閉

 

layer.iframeAuto(index) - 指定iframe層自適應

調用該方法時,iframe層的高度會從新進行適應

layer.iframeSrc(index, url) - //重置特定iframe url

彷佛不怎麼經常使用的樣子。使用方式:layer.iframeSrc(index, 'http://sentsin.com')

layer.setTop(layero) -置頂當前窗口

很是強大的一個方法,雖然通常不多用。可是當你的頁面有不少不少layer窗口,你須要像Window窗體那樣,點擊某個窗口,該窗體就置頂在上面,那麼setTop能夠來輕鬆實現。它採用巧妙的邏輯,以使這種置頂的性能達到最優

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
}
});

 

layer.full()、layer.min()、layer.restore() - 手工執行最大小化

(這三個醬油又一次被並列 ==。)通常用於在自定義元素上觸發最大化、最小化和全屏。

請注意,從2.3開始,無需經過layer.config來加載拓展模塊。若是您是以前版本,則需經過下述方式來加載

code  

layer.config({
extend: 'extend/layer.ext.js'
});

 

layer.prompt(options, yes) - 輸入層

prompt的參數也是向前補齊的。options不只可支持傳入基礎參數,還能夠傳入prompt專用的屬性。固然,也能夠不傳。yes攜帶value 表單值index 索引elem 表單元素

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);
});

 

layer.tab(options) - tab層

tab層只單獨定製了一個成員,即tab: [],這個好像沒有什麼可介紹的,簡單粗暴看例子

code  

layer.tab({
area: ['600px', '300px'],
tab: [{
title: 'TAB1',
content: '內容1'
}, {
title: 'TAB2',
content: '內容2'
}, {
title: 'TAB3',
content: '內容3'
}]
});

 

layer.photos(options) - 相冊層

相冊層,也能夠稱之爲圖片查看器。它的出場動畫從layer內置的動畫類型中隨機展示。photos支持傳入json和直接讀取頁面圖片兩種方式。若是是json傳入,以下:

code  

$.getJSON('/jquery/layer/test/photos.json', function(json){
layer.photos({
photos: json
,anim: 5 //0-6的選擇,指定彈出圖片動畫類型,默認隨機(請注意,3.0以前的版本用shift參數)
});
});
//而返回的json需嚴格按照以下格式:
  1. code

  2. {
    "title": "", //相冊標題
    "id": 123, //相冊id
    "start": 0, //初始顯示的圖片序號,默認0
    "data": [ //相冊包含的圖片,數組格式
    {
    "alt": "圖片名",
    "pid": 666, //圖片id
    "src": "", //原圖地址
    "thumb": "" //縮略圖地址
    }
    ]
    }

     

若是是直接從頁面中獲取圖片,那麼須要指向圖片的父容器,而且你的img能夠設定一些規定的屬性(但不是必須的)。

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>

 

看看一個實例唄:

說好的,一塊兒Fly  LayIM  鳳姐是個好人  星空如此深邃

第二種方式的圖片查看器顯然更加簡單,由於無需像第一種那樣返回規定的json,可是他們仍是有各自的應用場景的,你能夠按照你的需求進行選擇。另外,photos還有個tab回調,切換圖片時觸發。

code  

layer.photos({
photos: json/選擇器,
tab: function(pic, layero){
console.log(pic) //當前圖片的一些信息
}
});

 

結語

合理地設定基礎參數,合理地選擇內置方法,合理的心態,合理地閱讀,只要一切都在合理的前提下,你纔會感知到layer許許多多使人愉悅的地方,她真的是否如你所願,取決於你對她瞭解的深遠。願layer能給你的web開發帶來一段美妙的旅程。別忘了在線調試。

相關文章
相關標籤/搜索