1. 程式人生 > >初識前端框架:Layui

初識前端框架:Layui

官方的解釋:

Layui 是一款採用自身模組規範編寫的國產前端UI框架,遵循原生HTML/CSS/JS的書寫與組織形式,門檻極低,拿來即用。其外在極簡,卻又不失飽滿的內在,體積輕盈,元件豐盈,從核心程式碼到API的每一處細節都經過精心雕琢,非常適合介面的快速開發。layui還很年輕,首個版本釋出於2016年金秋,她區別於那些基於MVVM底層的UI框架,卻並非逆道而行,而是信奉返璞歸真之道,準確地說,她更多是為服務端程式設計師量身定做,你無需涉足各種前端工具的複雜配置,只需面對瀏覽器本身,讓一切你所需要的元素與互動、從這裡信手拈來。

Layui相容除IE6/7以外的全部瀏覽器,並且多數結構支援響應式

下面將會介紹幾個簡單的功能。

他的引用是非常簡單的,可以在頁面中直接引用下載下來的檔案,只要引用CSS檔案和JS檔案即可。

1 <link rel="stylesheet" href="./css/layui.css" media="all">
2 <script src="./layui.js"></script>

路徑請自行更改。

其中引用的js需要說明一下,我現在引用的是全部的JS,也就是各個模組都有,不用單獨的去選擇。在官網下載的檔案中有個JS的資料夾,裡面有各個模組的JS,如果你只是應用了layui 的一個或少數幾個模組,可以自己單獨引入!請看一下程式碼:

 

<script><!--這個script需要寫在你用layui的js之後-->
layui.use(['layer', 'laypage', 'element'], function() {//這裡面layui.use()是必須的,你要呼叫人家的東西,一定要遵守人家的規則;其中有兩個引數,第一個是你要呼叫的模組,其中你呼叫的模組必須是你上面引用
                                //js中有的,如果你很懶,就和我一樣,直接呼叫全部封裝好的JS

});
</script>

 

可以看到我總共呼叫了三個模組,所以我要把它寫在陣列中,如果你僅僅是呼叫了一個模組,那麼你可以不用陣列,直接用引號引起來就可以了。而後咱們要寫的程式碼就要寫在function裡面了。

 

layui.use(['layer', 'laypage', 'element'], function() {
    var layer = layui.layer,
        laypage = layui.laypage,
        element = layui.element();
         //向世界問個好
        layer.msg('Hello World');
        //監聽Tab切換
        element.on('tab(demo)', function(data) {
            layer.msg('切換了:' + this.innerHTML);
        });
        //分頁
        laypage({
            cont: 'pageDemo' //分頁容器的id
                        ,
            pages: 12 //總頁數
                        ,
            skin: '#008cee' //自定義選中色值
                        ,
            skip: true //開啟跳頁
                        ,
            jump: function(obj, first) {
                if(!first) {
                   layer.msg(JSON.stringify(obj.curr));
                }
            }
         });  
});                             

 

這裡主要是實現的三個功能,一個是彈窗提示,另外兩個是監聽tab切換和分頁功能!其中的引數的作用在程式碼中已經標註,這裡就不做詳細的介紹了。

  還有就是一個alert功能的彈窗,我把它封裝成了一個函式。

 1 function alert1() {
 2                     layer.open({
 3                          skin: 'demo-class',
 4                          type:1,//加上這句話才能點選多次的時候有效,否則第二次點選的時候不能正確的彈出
 5                          area: ["300px","200px"],//彈窗的大小
 6                         content: $('#img'),
 7                         //btnAlign: 'c'//控制下面兩個按鈕顯示的位置
 8                         title: "這是彈出框的標題",
 9                         //btn: ['確定', '取消'],//這是彈出框的按鈕
10                         shadeClose:true,//點選遮罩層同樣能關閉彈窗
11                         yes: function(index, layero) {
12                             //按鈕【按鈕一】的回撥
13 
14                             console.log(JSON.stringify(layero))
15                             layer.close(index);//點選確定之後,需要這句話才能關閉
16                         },
17                         btn2: function(index, layero) {
18                             //按鈕【按鈕二】的回撥
19                             console.log(JSON.stringify(layero))
20 
21                             //return false 開啟該程式碼可禁止點選該按鈕關閉
22                         },
23                         btn3: function(index, layero) {
24                             //按鈕【按鈕三】的回撥
25 
26                             //return false 開啟該程式碼可禁止點選該按鈕關閉
27                         },
28                         cancel: function() {
29                             //右上角關閉回撥
30 
31                             //return false 開啟該程式碼可禁止點選該按鈕關閉
32                         }
33                     });
34                 }

你需要在你需要的地方調起函式就可以了。

介紹了這麼多,發現少了一個地方就是HTML文件,所以就直接把所有的原始碼直接貼在下面,只要複製到本地,並且修改一下路徑就可以了!

 

 

  1 <!DOCTYPE html>
  2 <html>
  3 
  4     <head>
  5         <meta charset="utf-8">
  6         <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
  7         <title>layui線上除錯</title>
  8         <link rel="stylesheet" href="./css/layui.css" media="all">
  9         <style>
 10             body {
 11                 margin: 10px;
 12             }
 13             
 14             body .demo-class .layui-layer-title {
 15                 background: #c00;
 16                 color: #fff;
 17                 border: none;
 18             }
 19             
 20             body .demo-class .layui-layer-btn {
 21                 border-top: 1px solid #E9E7E7
 22             }
 23             
 24             body .demo-class .layui-layer-btn a {
 25                 background: #333;
 26             }
 27             
 28             body .demo-class .layui-layer-btn .layui-layer-btn1 {
 29                 background: #999;
 30             }
 31         </style>
 32     </head>
 33 
 34     <body>
 35         <img id="img" style="display: none;" src="images/face/70.gif">
 36         <blockquote class="layui-elem-quote">
 37             溫馨提示:如果最左側的導航的高度超出了你的螢幕,你可以將滑鼠移入導航區域,然後滑動滑鼠滾輪即可
 38         </blockquote>
 39 
 40         <div class="layui-tab layui-tab-card" lay-filter="demo" style="height: 300px;">
 41             <ul class="layui-tab-title">
 42                 <li class="layui-this">演示說明</li>
 43                 <li>標題一</li>
 44                 <li>標題二</li>
 45                 <li>標題三</li>
 46             </ul>
 47             <div class="layui-tab-content">
 48                 <div class="layui-tab-item layui-show">
 49                     在這裡,你將以最直觀的形式體驗Layui!在編輯器中可以執行layui相關的一切程式碼。
 50                     <br>你也可以點選左側導航針對性地試驗我們提供的示例。
 51                 </div>
 52                 <div class="layui-tab-item">內容1</div>
 53                 <div class="layui-tab-item">內容2</div>
 54                 <div class="layui-tab-item">內容3</div>
 55             </div>
 56         </div>
 57         <div id="box_02">box_02</div>
 58         <div id="pageDemo"></div>
 59 
 60         <script src="./layui.js"></script>
 61         <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
 62         <script>
 63             layui.use(['layer', 'laypage', 'element'], function() {
 64                 var layer = layui.layer,
 65                     laypage = layui.laypage,
 66                     element = layui.element();
 67 
 68                 //向世界問個好
 69                 layer.msg('Hello World');
 70 
 71                 //監聽Tab切換
 72                 element.on('tab(demo)', function(data) {
 73                     layer.msg('切換了:' + this.innerHTML);
 74 
 75                 });
 76 
 77                 //分頁
 78                 laypage({
 79                     cont: 'pageDemo' //分頁容器的id
 80                         ,
 81                     pages: 12 //總頁數
 82                         ,
 83                     skin: '#008cee' //自定義選中色值
 84                         ,skip: true //開啟跳頁
 85                         ,
 86                     jump: function(obj, first) {
 87                         if(!first) {
 88                             layer.msg(JSON.stringify(obj.curr));
 89 
 90                             
 91                         }
 92                     }
 93                 });
 94 
 95                 function alert1() {
 96                     layer.open({
 97                          skin: 'demo-class',
 98                          type:1,//加上這句話才能點選多次的時候有效,否則第二次點選的時候不能正確的彈出
 99                          area: ["300px","200px"],//彈窗的大小
100                         content: $('#img'),
101                         //btnAlign: 'c'//控制下面兩個按鈕顯示的位置
102                         title: "這是彈出框的標題",
103                         //btn: ['確定', '取消'],//這是彈出框的按鈕
104                         shadeClose:true,//點選遮罩層同樣能關閉彈窗
105                         yes: function(index, layero) {
106                             //按鈕【按鈕一】的回撥
107 
108                             console.log(JSON.stringify(layero))
109                             layer.close(index);//點選確定之後,需要這句話才能關閉
110                         },
111                         btn2: function(index, layero) {
112                             //按鈕【按鈕二】的回撥
113                             console.log(JSON.stringify(layero))
114 
115                             //return false 開啟該程式碼可禁止點選該按鈕關閉
116                         },
117                         btn3: function(index, layero) {
118                             //按鈕【按鈕三】的回撥
119 
120                             //return false 開啟該程式碼可禁止點選該按鈕關閉
121                         },
122                         cancel: function() {
123                             //右上角關閉回撥
124 
125                             //return false 開啟該程式碼可禁止點選該按鈕關閉
126                         }
127                     });
128                 }
129                 $('#box_02').click(function() {
130                     alert1();
131                 })
132             });
133         </script>
134     </body>
135 
136 </html>