<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        javascript實現瀑布流自適應遇到的問題及解決方案_javascript技巧

        來源:懂視網 責編:小采 時間:2020-11-27 21:33:38
        文檔

        javascript實現瀑布流自適應遇到的問題及解決方案_javascript技巧

        javascript實現瀑布流自適應遇到的問題及解決方案_javascript技巧:這幾天看了Amy老師的用javascript實現瀑布流,我跟著把代碼敲出來。發現這樣寫只能第一次載入時適應屏幕,以后改變窗口大小就不能做到自適應了。 于是我想到了用window.onresize來使得瀑布流函數從新加載來達到目的, 代碼如下: window.onloa
        推薦度:
        導讀javascript實現瀑布流自適應遇到的問題及解決方案_javascript技巧:這幾天看了Amy老師的用javascript實現瀑布流,我跟著把代碼敲出來。發現這樣寫只能第一次載入時適應屏幕,以后改變窗口大小就不能做到自適應了。 于是我想到了用window.onresize來使得瀑布流函數從新加載來達到目的, 代碼如下: window.onloa
        這幾天看了Amy老師的用javascript實現瀑布流,我跟著把代碼敲出來。發現這樣寫只能第一次載入時適應屏幕,以后改變窗口大小就不能做到自適應了。

        于是我想到了用window.onresize來使得瀑布流函數從新加載來達到目的,

        代碼如下:
        window.onload=function(){
        //瀑布流函數
        waterfall('content','box');
        //模擬數據加載
        var dataInt = {"data":[{"src":"01.jpg"},{"src":"02.jpg"},{"src":"03.jpg"},{"src":"04.jpg"},{"src":"05.jpg"},{"src":"06.jpg"},{"src":"07.jpg"}]}
        //當屏幕大小改變時從新執行瀑布流函數 達到從新適應的作用
        window.onresize=function(){
        // waterfall('content','box');
        setTimeout(function() {waterfall('content','box');}, 200);
        }
        window.onscroll=function(){
        if(checkScroll()){
        var oparent = document.getElementById('content');
        //將熏染的數據添加入html中
        for(var i=0;i var obox = document.createElement("div");
        obox.className = "box";
        oparent.appendChild(obox);
        var opic = document.createElement("div");
        opic.className = "pic";
        obox.appendChild(opic);
        var oImg = document.createElement("img");
        oImg.src="img/"+dataInt.data[i].src;
        opic.appendChild(oImg);
        }
        waterfall('content','box');
        }
        }
        }

        當屏幕縮小時是可以的,但是從縮小的放大就出現了BUG

        看沒看到后面幾列的頂部回不來了,
        于是我打開開發工具看是怎么回事,

        第3 4 5個div中不應該有style,是因為縮小的時候給他添加上去的,而放大了他沒有清除所以保留下來了就會出現這個樣子于是:我在瀑布流函數里加了句aBox[i].style.cssText ='';使得每次進來都清空style

        代碼如下:
        function waterfall(parent,box){
        //將content下所有class box取出來
        var aParent = document.getElementById(parent);
        var aBox = getBclass(aParent,box);
        //獲取盒子的寬度
        var aBoxW = aBox[0].offsetWidth;
        //用瀏覽器的可是寬度除以box寬度 得到列數
        var cols = Math.floor(document.documentElement.clientWidth/aBoxW);
        //設定 content的寬度 和居中
        aParent.style.cssText = 'width:'+aBoxW*cols+'px;height:auto;position: relative; margin:0 auto;padding-right:15px';
        //創建每一列的高度數組
        var hArr=[];
        for(var i=0; i aBox[i].style.cssText ='';
        if(i hArr.push(aBox[i].offsetHeight);
        }else{
        var minH = Math.min.apply(null,hArr);
        var index = getMinIndex(hArr,minH); //找出高最矮的 索引值
        //console.log(aBoxW);
        aBox[i].style.position = 'absolute';
        aBox[i].style.top = minH+'px';
        aBox[i].style.left = aBoxW*index+'px';
        hArr[index]+=aBox[i].offsetHeight;
        }
        }
        }

        這樣就解決了縮小后回不來的BUG,可以正常自適應了

        最后我把整個的javascript 貼出來

        代碼如下:
        window.onload=function(){
        //瀑布流函數
        waterfall('content','box');
        //模擬數據加載
        var dataInt = {"data":[{"src":"01.jpg"},{"src":"02.jpg"},{"src":"03.jpg"},{"src":"04.jpg"},{"src":"05.jpg"},{"src":"06.jpg"},{"src":"07.jpg"}]}
        //當屏幕大小改變時從新執行瀑布流函數 達到從新適應的作用
        window.onresize=function(){
        // waterfall('content','box');
        setTimeout(function() {waterfall('content','box');}, 200);
        }
        window.onscroll=function(){
        if(checkScroll()){
        var oparent = document.getElementById('content');
        //將熏染的數據添加入html中
        for(var i=0;i var obox = document.createElement("div");
        obox.className = "box";
        oparent.appendChild(obox);
        var opic = document.createElement("div");
        opic.className = "pic";
        obox.appendChild(opic);
        var oImg = document.createElement("img");
        oImg.src="img/"+dataInt.data[i].src;
        opic.appendChild(oImg);
        }
        waterfall('content','box');
        }
        }

        }
        function waterfall(parent,box){
        //將content下所有class box取出來
        var aParent = document.getElementById(parent);
        var aBox = getBclass(aParent,box);

        //獲取盒子的寬度
        var aBoxW = aBox[0].offsetWidth;
        //用瀏覽器的可是寬度除以box寬度 得到列數
        var cols = Math.floor(document.documentElement.clientWidth/aBoxW);
        //設定 content的寬度 和居中
        aParent.style.cssText = 'width:'+aBoxW*cols+'px;height:auto;position: relative; margin:0 auto;padding-right:15px';
        //創建每一列的高度數組
        var hArr=[];
        for(var i=0; i aBox[i].style.cssText ='';
        if(i hArr.push(aBox[i].offsetHeight);
        }else{
        var minH = Math.min.apply(null,hArr);
        var index = getMinIndex(hArr,minH); //找出高最矮的 索引值
        //console.log(aBoxW);
        aBox[i].style.position = 'absolute';
        aBox[i].style.top = minH+'px';
        aBox[i].style.left = aBoxW*index+'px';
        hArr[index]+=aBox[i].offsetHeight;
        }
        }
        }
        //根據class獲取到元素
        function getBclass(parent,className){
        var boxarr = new Array(); //用來存儲獲取到的class
        //console.log(parent.prototype);
        allElement=parent.getElementsByTagName('*');
        for(var i=0;i if(allElement[i].className == className){
        boxarr.push(allElement[i]);
        }
        }
        return boxarr;
        }

        //找出高最矮的 索引值
        function getMinIndex(arr,value){
        for(var i in arr){
        if (arr[i]==value){
        return i;
        }
        }
        }
        //建立一個檢測輪輪滑動是否成立的函數 返回真假
        function checkScroll(){
        var oparent = document.getElementById("content");
        var oBox = getBclass(oparent,'box');
        var lastoBoxTop = oBox[oBox.length-1].offsetTop+Math.floor(oBox[oBox.length-1].offsetHeight/2);
        //console.log(lastoBoxTop);
        var scrollTop = document.body.scrollTop||document.documentElement.scrollTop;
        var height = document.body.clientHeight||document.documentElement.clientHeight;
        //console.log(scrollTop);
        return(lastoBoxTop }

        css文件貼出來

        代碼如下:
        *{margin: 0;padding: 0;}
        body{background-color: #eee;}
        .content{
        position: relative;
        }
        .box{
        padding: 15px 0 0 15px;
        float: left;
        }
        .pic{
        padding: 10px;
        border: 1px solid #ccc;
        box-shadow: 0 0 5px #CCCCCC;
        border-radius: 5px;
        background: #fff;
        }
        .pic img{
        width: 220px;
        height: auto;
        border: 1px solid #eee;
        }

        html文件貼出來

        代碼如下:




        javascript瀑布流

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        javascript實現瀑布流自適應遇到的問題及解決方案_javascript技巧

        javascript實現瀑布流自適應遇到的問題及解決方案_javascript技巧:這幾天看了Amy老師的用javascript實現瀑布流,我跟著把代碼敲出來。發現這樣寫只能第一次載入時適應屏幕,以后改變窗口大小就不能做到自適應了。 于是我想到了用window.onresize來使得瀑布流函數從新加載來達到目的, 代碼如下: window.onloa
        推薦度:
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲精品欧洲精品| 亚洲综合伊人久久大杳蕉| 亚洲一区二区久久| 91高清免费国产自产| 亚洲AV成人无码天堂| 成年私人影院免费视频网站| 亚洲成aⅴ人片久青草影院按摩| 女人让男人免费桶爽30分钟| 久久亚洲精品无码gv| www.亚洲精品.com| 两性色午夜免费视频| 亚洲成人在线网站| 永久免费视频网站在线观看| 亚洲免费人成视频观看| 亚洲人成网77777色在线播放| 中国国语毛片免费观看视频| 亚洲国产精品人久久| 成人免费观看一区二区| 亚洲国产精品自在自线观看| 亚洲av再在线观看| 免费高清国产视频| 久久久久久亚洲精品影院| 亚洲AⅤ视频一区二区三区| 在线观看片免费人成视频无码| 亚洲美女视频网址| 午夜两性色视频免费网站| 一个人看www免费高清字幕| 亚洲今日精彩视频| 日本久久久免费高清| 成全视成人免费观看在线看| 亚洲三级视频在线| 国产精品亚洲高清一区二区| 91大神免费观看| 羞羞网站免费观看| 内射干少妇亚洲69XXX| 国产成人aaa在线视频免费观看| a级毛片免费完整视频| 亚洲日韩AV一区二区三区中文| 77777亚洲午夜久久多人| 99re热免费精品视频观看| 亚洲精品黄色视频在线观看免费资源|