楊校老師課堂之JavaScript右下角廣告彈框教程


案例制作思路:

  1、先制作界面

    添加一個盒子包含一個按鈕,使盒子絕對定位在右上角

    添加一個大盒子,同理,將盒子居於左下角;其中內部包含一個頂端盒子和底部盒子

            頂端盒子因為是屬於大盒子內部的存在,所以寬度是占滿整個大盒子的寬度,內部文本設置字體12號、居中顯示、加粗

           底部盒子因為也是屬於大盒子內部的存在,所以寬度也是占滿整個大盒子的寬度,內部文本設置字體12號、居中顯示、加粗、行高等

       2、經思考分析,因為頁面是在打開后3秒中進行跳轉,所以需要一個延遲定時器(SetTimeout(code,millisec); code是代表一個函數的引用,millisec代表定時的毫秒數) 。所以頁面一打開是沒有廣告存在的,所以在大盒子的css中不存在高度的設置,另設置了隱藏顯示的屬性!

  3、獲取盒子的位置,並且設置其高度,進行接收。但是因為后的是一個對象,需要將對象進行轉換成為數字。

  4、如果該數字等於0 ,表示該盒子處於隱藏的狀態,則將其通過display屬性中的block塊狀 來顯現出來。【此時在右下角已然存在盒子了,只不過高度為0,需要放大進行查看】

  5、接下來,我們來操作盒子的高度問題。

    解決方案:我們可以通過定時器去完成盒子的高度設置。

          5.1.1、獲取盒子

          5.1.2、獲取盒子的高度

          5.1.3、判斷接收到的參數是盒子高度遞增或遞減,若是遞增參數,則需要判斷盒子是否依然顯示,若沒有,將其遞增顯示,否則清除遞增定時器。  若是遞減參數,則需要判斷盒子是否依然顯示,若顯示,將其遞減到0,否則清除遞增定時器並且隱藏盒子。

      

預覽效果圖:

 

 

Html代碼:

<html>
    </head>
    <body>
        <div id="div">
            <button onclick="tips_pop()">3秒后會在右下角自動彈出窗口,如果沒有彈出請點擊這個按鈕</button>
        </div>
        <!--大盒子-->
        <div id="ad">
            
            <!--頂端小盒子-->
            <div class="toppop">
                <b>您有新的短消息!</b><span onclick="tips_pop()">X</span>
            </div>
            
            <!--底端小盒子-->
            <div class="bottompop">1條未讀信息(...)</div>
            
        </div>
    </body>
</html>

 

Css代碼:

#div{                     /*按鈕盒子*/
                position: absolute;  /*大盒子的定位為絕對定位*/
                right: 0;            /*大盒子距離右方為0像素*/
                top: 0;              /*大盒子距離上方為0像素*/
            }
            #ad{             /*大盒子*/
                width: 200px;        /*大盒子的寬度*/
                height: 0;           /*大盒子的高度*/
                border: 1px solid #666;/*邊框線為1像素  實線 灰黑色*/
                position:absolute;   /*大盒子的定位為絕對定位*/
                bottom: 0px;        /*大盒子距離下方為0像素*/
                right: 0px;         /*大盒子距離右方為0像素*/
                display: none;      /*不顯示*/
            }
            .toppop{          /*頂端盒子*/
                width: 100%;        /*寬度自動適應到最寬*/
                height: 22px;       /*上面的盒子高22像素*/
                background: gold;   /*背景顏色為金黃色*/
                text-align: center; /*字體居中*/
                font-size: 12px;    /*字號為12像素*/
            }
            .toppop span{       /*頂端盒子 中的 X*/
                position: absolute; /*位置:絕對定位*/
                right: 0;           /*距離右側邊距為0*/
                top: -1px;          /*距離頂端距離為-1像素*/
                color: #fff;        /*“X”的顏色為白色*/
                cursor: pointer;    /*cursor 代表的是光標的類型;pointer代表 的是 一只小手*/
            }
            .bottompop{        /*底端盒子*/
                width: 100%;        /*寬度自動適應到最寬*/
                height: 88px;       /*下面的盒子高88像素*/
                font-size: 12px;    /*字號為12像素*/
                text-align: center; /*字體居中*/
                font-weight: 900px; /*字體為粗體*/
                color: #ff0000;     /*顏色為紅色*/
                line-height: 80px;  /*字體的行高為80像素*/

 

JavaScript代碼:

<script type="text/javascript">
        window.onload = function(){            // 頁面加載
            document.getElementById("ad").style.height = '0px'
                                // setTimeout() 方法用於在指定的毫秒數后調用函數或計算表達式。
            setTimeout("tips_pop()",3000);       // 設置定時器(每過3秒執行一次tips_pop)
        }
        
        function tips_pop(){
            var Msgpop = document.getElementById("ad");
                                // parseInt() 函數可解析一個對象,並返回一個整數
            var popH   = parseInt(Msgpop.style.height) // 將對象的高度轉換成為數字
            if(popH == 0){                //如果盒子的高度等於0  ,表示看不到  所以 處於一個隱藏狀態
                Msgpop.style.display="block";     //如果等於0,則去顯示出來
                show = setInterval("changeH('up')",3)// 設置定時器(顯示的函數)
            }else{
                hide = setInterval("changeH('down')",3)// 設置定時器(隱藏的函數)
            }
        }
        
        function changeH(str){
            var Msgpop = document.getElementById("ad");//Msgpop 代表的是大盒子
            var popH   = parseInt(Msgpop.style.height);//將對象的高度轉換成為數字
                                       //popH  代表盒子的高度  [是數字]
            if(str == 'up'){                // 判斷接受的參數是否是 up  如果是  則執行下方內容
                if(popH <= 100){
                                        //JavaScript toString()把數字轉換為字符串: 
                    Msgpop.style.height =  (popH + 4).toString() + 'px';//設置大盒子的高度
                }else{
                    clearInterval(show);
                }
            }
            if(str == 'down'){
                if(popH>=4){
                    Msgpop.style.height =  (popH - 4).toString() + 'px';//設置大盒子的高度
                }else{
                    clearInterval(hide);        // 清除定時器(隱藏的函數)
                    Msgpop.style.display = 'none';   //隱藏該盒子 div
                }
            }
        }
        

 

分割線 
作者: 楊校

出處: http://www.cnblogs.com/xiaoxiao5016

分享是快樂的,也見證了個人成長歷程,文章大多都是工作經驗總結以及平時學習積累,基於自身認知不足之處在所難免,也請大家指正,共同進步。

本文版權歸作者所有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出, 如有問題, 可郵件(397583050@qq.com)咨詢。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM