为了账号安全,请及时绑定邮箱和手机立即绑定

CSS&JavaScript&jQuery响应式弹窗实现

前端菜鸟,用三种方法写了一种响应式居中的弹窗效果,关闭按钮自行添加,这里没写。其中借鉴了一些别人的代码,80%的原创度。下面开始吧。

一、css

<button id="btn"></button>
<div id="wrap">
<div id="box"></div>
</div>
body{
  height:2000px;
}
#wrap{
  width:100%;
  max-width:100%;
  height:100%;
  display:flex;
  justify-content:center;
  align-items:center;
  position:fixed;
  top:0;
  left:0;
}
#box{
  width:300px;
  height:300px;
  background-color:red;
}

注:css中运用到的知识点有flex布局,宽高百分比,固定定位。

二、JavaScript

 //窗口加载完毕后执行
        window.onload = function(){
            var oBtn = document.getElementById('btn');
            oBtn.onclick = function(){
                pop();
            };
            //pop();
        };

        //滚动条发生变化时执行
        window.onscroll = function(){
            pop();
        };

        //窗口大小改变时执行
        window.onresize = function(){
            pop();
        };

        //弹窗事件
        function pop (){
            var scrollTop = document.body.scrollTop;//滚动条到顶部
            var oBox = document.getElementById('box');
            oBox.style.display = 'block';

            oBox.style.top=document.documentElement.clientHeight/2-oBox.offsetHeight/2+scrollTop+'px';
            oBox.style.left=document.documentElement.clientWidth/2-oBox.offsetWidth/2+'px';
        }

JavaScript中用到了函数的调用,以及元素页面宽高,滚动条高度等知识点。

三、jQuery

window.onload = function(){

            //点击按钮创建元素
            $('#btn').click(function(){

                var oBox = $('<div><span>X</span></div>');
                $('body').append(oBox);

                oBox.css('left',($(window).width()-oBox.outerWidth())/2);
                oBox.css('top',($(window).height()-oBox.outerHeight())/2);
                close();

           $(window).on('resize scroll', function(){
               oBox.css('left',($(window).width()-oBox.outerWidth())/2+$(window).scrollLeft());
               oBox.css('top',($(window).height()-oBox.outerHeight())/2+$(window).scrollTop());
               close();
           });

                //关闭按钮
                function close(){
                    $('span').click(function(){
                        oBox.css('display','none');
                    });
                }
            });

       };

jQuery用到了元素的创建,其余的和原生差不多。

后两种方法的核心思路就是触发一个事件函数时,元素绝对定位的top和left值始终等于窗口大小和元素宽高的差的二分之一再加上滚动条到页面顶部的距离。

点击查看更多内容
2人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消