QQ弹窗功能中遇到的问题及如何实现

遇到的问题一:窗口一直抖动

  overflow-y: scroll;//让滚动条始终存在

遇到的问题二:出现底部滚动条

  overflow-x:hidden;//让底部滚动条隐藏

遇到的问题三:忘记修改值

         .ad{
            position: fixed;
            right: 0;
            bottom: 0;
            width: 576px;
            /*高度一开始设为324px好调位置,最后要设为0*/
            height:0;
            border: 1px solid black;
            }

遇到的问题四:把关闭id要执行的操作放外面

var allHeiht=324;
//关闭 是让这个Clss效果隐藏掉
var Close=setInterval(CloseFunc,1);//导致功能没走
myClose.onclick=function () {
    function CloseFunc() {
        if(allHeiht<=324){
            allHeiht-=1;
            myAD.style.height=allHeiht+"px";//字符串
        }else if(allHeiht==0){
            myAD.style.display="none";
            clearInterval(Close);
        }
    }
}

遇到的问题五:加载完就显示出弹窗,延迟没有设置成功,两个功能没有区分清楚,不会用

//一般情况下setTimeout用于延迟执行某方法或功能,
//setInterval则一般用于刷新表单,对于一些表单的假实时指定时间刷新同步
var show=setTimeout(adShowFunc,3000);
function adShowFunc() {
        if(adHeight<324){
            adHeight+=2;
            myAD.style.height=adHeight+"px";//字符串
        }else{
            myAD.style.height="324px";
            clearInterval(show);
        }
}
setTimeout(adShowFunc,1000);
window.onload=function () {
    show=setInterval(adShowFunc,5);
    }

获得老师的帮助:函数外设置延迟时间3秒执行,函数内实时刷新

//一般情况下setTimeout用于延迟执行某方法或功能,
//setInterval则一般用于刷新表单,对于一些表单的假实时指定时间刷新同步
var timer=setTimeout(adShowFunc,3000);
function adShowFunc() {
    var show = setInterval(function() {
        if(adHeight<324){
            adHeight+=2;
            myAD.style.height=adHeight+"px";//字符串
        }else{
            myAD.style.height="324px";
            clearInterval(show);
        }
    }, 2);
}

最终实现代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>弹窗功能学习</title>
    <style type="text/css">
        body{
            width: 100%;
            height:1000px;
            overflow-y: scroll;
            overflow-x:hidden;
            background-color: #1abc9c;
        }

        .ad{
            position: fixed;
            right: 0;
            bottom: 0;
            width: 576px;
            /*高度一开始设为324px好调位置,最后要设为0*/
            height:0;
            border: 1px solid black;

        }
        .btn{
            position: absolute;
            top:0;
            right:0;
            cursor: pointer;
        }
        .bg{

            width: 576px;

        }
    </style>
</head>
<body>


<div id="myAD" class="ad">
    <img id="myClose" class="btn" src="images/jiahao.png" alt="">
    <a href="#"><img class="bg" src="images/bg2.png" alt=""></a>
</div>
<script type="text/javascript">

    var myAD=document.getElementById("myAD");
    var myClose=document.getElementById("myClose");
    var adHeight=0;
    var allHeiht=324;
    var timer=setTimeout(adShowFunc,10000);


    //关闭 是让这个Clss效果隐藏掉
    myClose.onclick=function () {
        var Close=setInterval(CloseFunc,1);
        function CloseFunc() {
            if(allHeiht<=324){
                allHeiht-=1;
                myAD.style.height=allHeiht+"px";//字符串
            }else if(allHeiht==0){
                myAD.style.display="none";
                clearInterval(Close);
            }
        }
    }

    function adShowFunc() {
        var show = setInterval(function() {
            if(adHeight<324){
                adHeight+=2;
                myAD.style.height=adHeight+"px";//字符串
            }else{
                myAD.style.height="324px";
                clearInterval(show);
            }
        }, 2);
        


    }
    // setTimeout(adShowFunc,5000);
    // window.οnlοad=function () {
    //     show=setInterval(adShowFunc,5);
    // }

</script>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值