<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
        主站蜘蛛池模板: 亚洲w码欧洲s码免费| 久久精品亚洲视频| 亚洲欧洲av综合色无码| 中文字幕在线观看免费视频| 亚洲AV无码一区二区乱子伦| 一级毛片免费视频| 亚洲国产精品人久久| 最近新韩国日本免费观看| 亚洲美女一区二区三区| 免费观看无遮挡www的小视频| 亚洲精品视频在线观看视频| 亚洲三级在线免费观看| 在线综合亚洲中文精品| 最新69国产成人精品免费视频动漫 | 91久久青青草原线免费| 亚洲视频中文字幕| 好先生在线观看免费播放| 亚洲色最新高清av网站| 国产真实伦在线视频免费观看| 全部一级一级毛片免费看| 国产成人A人亚洲精品无码| 无码AV片在线观看免费| 亚洲精品福利网站| 女人18毛片水真多免费播放| 日韩毛片免费一二三| 亚洲国产精品无码专区影院| 99久久国产热无码精品免费| 亚洲成a人无码亚洲成av无码| 亚洲高清免费视频| 久久伊人免费视频| 亚洲熟女综合一区二区三区| 亚洲精品国产电影| 久久精品人成免费| 亚洲AV无码成人精品区日韩| 亚洲福利视频一区二区| 无码精品国产一区二区三区免费| 久久亚洲精品国产精品婷婷| 在线观看亚洲av每日更新| 国产精品免费观看| h片在线播放免费高清| 亚洲丰满熟女一区二区v|