网站首页 文章专栏 layer弹出层根据浏览器窗口大小自适应页面
layer弹出层根据浏览器窗口大小自适应页面

layer弹出层根据浏览器窗口大小自适应页面


 前言 :layer是一款很优秀的弹出层工具,可以很方便的弹出自定义大小的页面,然而当设置固定大小后,当浏览器变更大小后不会自适应的变化大小,导致在电脑端浏览器显示正常的弹窗,到手机浏览器就出问题了,本文给出了这一解决方案。



1,首先看一下layer是怎么使用弹出层的。

layui.use(['layer','form', 'layedit'], function () {
   var layer = layui.layer;
    layer.open({
        type: 1,
        title: ['请填写你的信息吧', 'font-size:18px;'],    // 弹出页面的标题
        content: $("#id"),    // 为要弹出层的id
        area: ['600px', '300px'],    // 长,宽
        offset: '30%'            // 弹出的位置,还有很多其他属性,这里就不一一介绍了
    });
});


解决方案一:当遇到这个问题时,第一想法就是不用具体的像素,用百分比,结果证明确实针对不同电脑端的浏览器可以,但是还不行,普通电脑浏览器都是横着的长方形的,但是手机浏览器是竖着的长方形,用百分比电脑适应了,手机端就不行了。


解决方案二:根据当前页面高度计算好以后,再填入高度。貌似可以,但是有点麻烦,而且我们弹出层本身就是在方法里面,再去做计算太复杂,且不够通用。


解决方案三:由方案二演化而来,根据页面当前高度长度,制定不同的弹出大小,代码如下。


写一个方法,判断页面大小
function screen() {
    //获取当前窗口的宽度
    var $ = layui.jquery;    // 这个是因为我没用jquery,layui自带jquery,需要声明下
    var width = $(window).width();
    if (width > 1200) {
        return 3;   //大屏幕
    } else if (width > 992) {
        return 2;   //中屏幕
    } else if (width > 768) {
        return 1;   //小屏幕
    } else {
        return 0;   //超小屏幕
    }
}

(1)$(window).width()需要引用jquery.js文件,它是jquery方法。而window.innerWidth是js方法,不需要引用jquery.js文件。
(2)  window.innerWidth获取当前窗口的宽度(包含滚动条),$(window).width()获取当前窗口的宽度(不包含滚动条)。
(3)  window.innerWidth在IE8浏览器是无效的。

然后在需要弹出的地方这么使用:(重点在第6行)

layui.use(['layer','form', 'layedit'], function () {
   var layer = layui.layer;
    layer.open({
        type: 1,
        title: ['请填写你的信息吧', 'font-size:18px;'],    // 弹出页面的标题
        content: $("#id"),    // 为要弹出层的id
        area: screen() < 2 ? ['90%', '30%'] : ['600px', '250px'],   // 长,宽
        offset: '30%'            // 弹出的位置,还有很多其他属性,这里就不一一介绍了
    });
});


当遇到小页面时,也就是手机端,那么使用百分比形式的,当遇到电脑端的就用固定的大小。


经检测,基本满足使用场景。





版权声明:本文由星尘阁原创出品,转载请注明出处!

本文链接:http://www.52xingchen.cn/detail/41




赞助本站,网站的发展离不开你们的支持!
来说两句吧
大侠留个名吧,或者可以使用QQ登录。
: 您已登陆!可以继续留言。
最新评论