layer

layer是一款非常好用的插件,相信很多小伙伴都使用过,插件使用layer v3.1.1,文档地址:https://layui.gitee.io/v2/layer/。为了更合适光年模板,这里对插件做了一些调整,去除了一些图片,调整为字体图标,调整了颜色搭配。

弹窗动画完成后,谷歌浏览器下有一个hover的bug,鼠标移到最后一个按钮时,字有1px的移动。

使用弹窗

$('#example-1').click(function() {
    layer.alert('钱月英酬神还愿 冯子清误入桃园');
});

使用图标

为了更易识别,这里将图标的设置值改为:successerrordoubtlockcrysmilewarning

<p id="example-icon">
  <button class="btn btn-primary" data-icon="success">正确</button>
  <button class="btn btn-danger" data-icon="error">错误</button>
  <button class="btn btn-yellow" data-icon="doubt">疑问</button>
  <button class="btn btn-secondary" data-icon="lock">锁定</button>
  <button class="btn btn-pink" data-icon="cry">哭脸</button>
  <button class="btn btn-success" data-icon="smile">笑脸</button>
  <button class="btn btn-warning" data-icon="warning">警告</button>
</p>

// 使用图标
$('#example-icon').find('.btn').click(function() {
    layer.alert('赠金扇冯旭得意 拜天地翠秀许婚', {
      icon: $(this).data('icon'),
    })
});

询问框

layer.confirm('游西湖林璋遇故 卖宝剑马云逢凶?', {
    btn: ['重要', '奇葩'] //按钮
}, function(){
    layer.msg('的确很重要', {icon: 'success'});
}, function(){
    layer.msg('也可以这样', {
        time: 20000, //20s后自动关闭
        btn: ['明白了', '知道了']
    });
});

提示层

layer.msg('马云大闹五柳园 汤彪仗义赠金帛');
layer.msg('诸葛亮智算华容 关云长义释曹操', function(){
    //关闭后的操作
});

风格

这里新增了弹窗的样式皮肤:lyear-skin-primarylyear-skin-successlyear-skin-infolyear-skin-warninglyear-skin-dangerlyear-skin-secondarylyear-skin-purplelyear-skin-pinklyear-skin-cyanlyear-skin-yellowlyear-skin-brownlyear-skin-dark

<div id="example-skin">
  <button class="btn btn-primary" data-skin="lyear-skin-primary">主色</button>
  <button class="btn btn-success" data-skin="lyear-skin-success">成功</button>
  <button class="btn btn-info" data-skin="lyear-skin-info">信息</button>
  <button class="btn btn-warning" data-skin="lyear-skin-warning">警告</button>
  <button class="btn btn-danger" data-skin="lyear-skin-danger">错误</button>
  <button class="btn btn-secondary" data-skin="lyear-skin-secondary">灰色</button>
  <button class="btn btn-purple" data-skin="lyear-skin-purple">紫色</button>
  <button class="btn btn-pink" data-skin="lyear-skin-pink">粉红</button>
  <button class="btn btn-cyan" data-skin="lyear-skin-cyan">青色</button>
  <button class="btn btn-yellow" data-skin="lyear-skin-yellow">黄色</button>
  <button class="btn btn-brown" data-skin="lyear-skin-brown">棕色</button>
  <button class="btn btn-dark" data-skin="lyear-skin-dark">黑色</button>
</div>

// 风格
$('#example-skin').find('.btn').click(function() {
    layer.alert('真才子走笔成章 假斯文揉碎肚肠', {
        skin: $(this).data('skin'),
    });
});

捕获页

  • 第06回 姚夏封广陵风鉴 常万青南海朝山
  • 第07回 朱翰林代为月老 冯子清聘定月英
  • 第08回 魏家妇人前卖俏 花文芳黑夜偷情
<div class="test-example-4">
  <ul class="list-unstyled p-3 mb-0">
    <li>第06回 姚夏封广陵风鉴 常万青南海朝山</li>
    <li>第07回 朱翰林代为月老 冯子清聘定月英</li>
    <li>第08回 魏家妇人前卖俏 花文芳黑夜偷情</li>
  </ul>
</div>
<button class="btn btn-default" id="example-4">捕获页</button>
            
// 捕获页
$('#example-4').click(function() {
    layer.open({
        type: 1,
        shade: false,
        title: false, //不显示标题
        content: $('.test-example-4'), //捕获的元素,注意:最好该指定的元素要存放在body最外层,否则可能被其它的相对元素所影响
        cancel: function(){
            layer.msg('捕获就是从页面已经存在的元素上,包裹layer的结构', {time: 5000, icon: 'success'});
        }
    });
});

页面层

$('#example-5').click(function() {
    layer.open({
        type: 1,
        skin: 'layui-layer-rim',  // 加上边框
        area: ['420px', '240px'], // 宽高
        content: '<div class="p-3">魏临川于中取利 花文芳将计就计</div>'
    });
});

tips层

$('#example-6').click(function() {
    layer.tips('Hi,我是tips', '#example-6');
});

iframe层

$('#example-7').click(function() {
    layer.open({
        type: 2,
        title: 'Light Year Admin',
        shadeClose: true,
        shade: 0.5,
        area: ['380px', '90%'],
        content: 'http://lyear.itshubao.com' //iframe的url
    });
});

iframe窗

$('#example-8').click(function() {
    layer.open({
        type: 2,
        title: false,
        closeBtn: 0, //不显示关闭按钮
        shade: [0],
        area: ['340px', '215px'],
        offset: 'rb', //右下角弹出
        time: 2000, //2秒后自动关闭
        anim: 2,
        content: ['./data/card-reload.txt', 'no'], //iframe的url,no代表不显示滚动条
        end: function(){ //此处用于演示
            layer.open({
                type: 2,
                title: '很多时候,我们想最大化看,比如像这个页面。',
                shadeClose: true,
                shade: false,
                maxmin: true, //开启最大化最小化按钮
                area: ['893px', '600px'],
                content: '//lyear.itshubao.com/'
            });
        }
    });
});

加载层

这里将gif动画改为 css3 动画,风格仍然保留0-2。

$('#example-loading').find('.btn').click(function() {
    var index = layer.load($(this).data('effect'), { shade: false }); // 第一个参数为风格,支持0-2
    setTimeout(function(){
        layer.close(index)
    }, 3000);
});

loading层

$('#example-9').click(function() {
    var index = layer.load(0, { shade:  [0.1, '#000'] });  // 0.1透明度的白色背景
    setTimeout(function(){
        layer.close(index)
    }, 3000);
});

小tips

$('#example-10').click(function() {
    layer.tips('我是另外一个tips,只不过我长得跟之前那位稍有些不一样。', '#example-10', {
      tips: [1, '#33cabb'],
      time: 4000
    });
});

prompt层

$('#example-11').click(function() {
    layer.prompt({title: '输入任何口令,并确认', formType: 1}, function(pass, index){
        layer.close(index);
        layer.prompt({title: '随便写点啥,并确认', formType: 2}, function(text, index){
            layer.close(index);
            layer.msg('演示完毕!您的口令:'+ pass +'<br>您最后写下了:'+text);
      });
    });
});

相册层

$('#example-13').click(function() {
    var json = {
      "status": 1,
      "msg": "",
      "title": "JSON请求的相册",
      "id": 8,
      "start": 0,
      "data": [{
          "alt": "花", "pid": 109, "src": "//libs.itshubao.com/pic/small_007.jpg", "thumb": ""
        },
        {
          "alt": "油菜花", "pid": 110, "src": "//libs.itshubao.com/pic/medium_003.jpg", "thumb": ""
        },
        {
          "alt": "粉红", "pid": 111, "src": "images/gallery/1.jpg", "thumb": ""
        },
        {
          "alt": "牵牛花", "pid": 112, "src": "//libs.itshubao.com/pic/big_005.jpg", "thumb": ""
        },
        {
          "alt": "大娃",  "pid": 113, "src": "images/users/avatar-1.png", "thumb": ""
        }]
    };
    layer.photos({
        photos: json // 格式见API文档手册页
        , anim: 5 // 0-6的选择,指定弹出图片动画类型,默认随机
    });
});

信息框

模板信息框是白色背景的,你也可以用 bg-* 来增加信息框背景样式。

<div id="example-notice">
  <button class="btn btn-default">默认</button>
  <button class="btn btn-primary" data-bg="bg-primary">主色</button>
  <button class="btn btn-success" data-bg="bg-success">成功</button>
  <button class="btn btn-info" data-bg="bg-info">信息</button>
  <button class="btn btn-warning" data-bg="bg-warning">警告</button>
  <button class="btn btn-danger" data-bg="bg-danger">错误</button>
  <button class="btn btn-secondary" data-bg="bg-secondary">灰色</button>
  <button class="btn btn-purple" data-bg="bg-purple">紫色</button>
  <button class="btn btn-pink" data-bg="bg-pink">粉红</button>
  <button class="btn btn-cyan" data-bg="bg-cyan">青色</button>
  <button class="btn btn-yellow" data-bg="bg-yellow">黄色</button>
  <button class="btn btn-brown" data-bg="bg-brown">棕色</button>
  <button class="btn btn-dark" data-bg="bg-dark">黑色</button>
</div>

// 信息框
$('#example-notice').find('.btn').click(function() {
    layer.msg('不开心。。。', {
        icon: 'cry',
        skin: $(this).data('bg')
    });
});

自定义页面层

layer.open({
    type: 1,
    title: false,
    closeBtn: 0,
    shadeClose: true,
    skin: 'bg-success',
    content: '<div class="p-3"><h6>采桑子·时光只解催人老</h6>时光只解催人老,不信多情,长恨离亭,泪滴春衫酒易醒。<br>梧桐昨夜西风急,淡月胧明,好梦频惊,何处高楼雁一声?</div>'
});

tips层位置

$('#example-top').click(function() {
    layer.tips('上', $(this), {
        tips: [1, '#000']
    });
});
$('#example-right').click(function() {
    layer.tips('默认就是向右的', $(this));
});
$('#example-bottom').click(function() {
    layer.tips('下', $(this), {
        tips: 3
    });
});
$('#example-left').click(function() {
    layer.tips('在很久以前……', $(this), {
        tips: [4, '#33cabb'],
        time: 300000
    });
});
$('#example-more').click(function() {
    layer.tips('不会销毁之前的', $(this), {tipsMore: true});
});

弹出位置

$('#example-position').find('.btn').click(function() {
    var type = $(this).data('position'),
        text = $(this).text();
    
    layer.open({
        type: 1
        ,offset: $(this).data('position') //具体配置参考:http://www.layui.com/doc/modules/layer.html#offset
        ,id: 'LAY_demo'+type //防止重复弹出
        ,content: '
'+ text +'
' ,btn: '关闭全部' ,btnAlign: 'c' ,shade: 0 ,yes: function(){ layer.closeAll(); } }); });