預(yù)加載总棵、延遲加載鳍寂、瀑布流、拖拽

1.預(yù)加載-圖片:

自己偷偷地加載
預(yù)加載的原理
     var img =  new Image()
     img.src = '';
     //頁面上放很多img情龄,設(shè)置成隱藏

     img.onload=function(){
        //加載完成了
     };
     img.onerror = funciton(){
        //加載出錯(cuò)了
     }

例子:
    <style>
        #div1{
            width:800px;
            height: 50px;
            background: #ccc;
            position: relative;

        }
        #div2{
            width: 1px;
            height: 100%;
            background: red;
            position: absolute;
            left: 0;
            top:0;
        }
    </style>
    <script>
        window.onload = function(){
            var oDiv1 = document.getElementById('div1');
            var oDiv2 = document.getElementById('div2');

            var count = 1;
            for(var  i = 0; i < 77; i++){

                var img = new Image();
                //img.src = 'images/'+i+'.jpg';
                img.src = 'http://www.zhinengshe.com/works/3525/img/'+i+'.jpg';

                img.onload = function(){
                    count++;
                    var scale = count / 77;
                    oDiv2.style.width = oDiv1.offsetWidth * scale + 'px';

                };

                if(count == 77){
                    //alert('加載完了迄汛!');
                }
            }};



    </script>
</head>
<body>
<div id="div1">
    <div id="div2"></div>
</div>
</body>


2.延遲加載

延遲加載:
    obj.offsetTop < 可視區(qū)高度 + 滾動(dòng)距離;
    obj.offsetTop < document.documentElement.clientHeight +
        (document.documentElement.scrollTop || document.body.scrollTop);

例子:
    <style>
        *{margin:0;padding:0;list-style:none;}
        li{
            width: 200px;
            height: 200px;
            border: 1px solid #000;
            float: left;
            margin:10px;
        }
        img{
            width: 100%;
            height:100%;

        }
    </style>
    <script>
        window.onresize =  window.onscroll =  window.onload = function(){
            var aImg = document.getElementsByTagName('img');

            for(var i = 0; i < aImg.length; i++){
                //可視區(qū)高度
                var clientHeight = document.documentElement.clientHeight;
                //滾動(dòng)距離
                var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;

                if(aImg[i].offsetTop < (clientHeight+scrollTop)){
                    //加載aImg[i]
                    //console.log(aImg[i].getAttribute('_src'));
                    aImg[i].src = aImg[i].getAttribute('_src');
                }
            }



        };
    </script>
</head>
<body>
<ul>
    <li><img _src="img/b1.jpg"  alt=""></li>
    <li><img _src="img/b2.jpg" alt=""></li>
    <li><img _src="img/b3.jpg" alt=""></li>
    <li><img _src="img/b4.jpg" alt=""></li>
    <li><img _src="img/b5.jpg" alt=""></li>
    <li><img _src="img/b6.jpg" alt=""></li>
    <li><img _src="img/b7.jpg" alt=""></li>
    <li><img _src="img/b8.jpg" alt=""></li>
    <li><img _src="img/b9.jpg" alt=""></li>
    <li><img _src="img/b10.jpg" alt=""></li>
</ul>

</body>

3.瀑布流

瀑布流:

物體大小:

    高度:
        obj.offsetHeight
        obj.scrollHeight
            當(dāng)內(nèi)容高度大于盒模型高度時(shí)-->內(nèi)容高度
            當(dāng)內(nèi)容高度小于盒模型高度時(shí)-->盒模型高度

瀑布流求ul最短
    var arr = [];
    arr.push(1,3,9,2,100);
    arr.push(div1,div2,div3..);
    arr.push(小明,班長);

    arr.sort(function(){
        //默認(rèn)只會(huì)比字符串  字典序
        //想比數(shù)字骤视,還是按字典序  n1,n2-->  n1-n2
        
    });
    arr.sort(function(n1,n2){
        return n1-n2;
    });
    arr.sort(function(人1鞍爱,人2){
        return 人1.身高-人2.身高;
    });

    arrUl = [ul1,ul2,ul3];
    arrUL.sort(function(ULa,ULb){
        return ULa.offsetHeight -  ULb.offsetHeight;
    });

例子:
    <style>
        *{margin:0;padding:0;list-style:none;}
        ul{
            width: 200px;
            border:1px solid #000;
            float:left;
            margin:10px;
        }
        li{
            width: 180px;
            height: 200px;
            background: red;
            margin:10px;
        }
    </style>
    <script>
        function rnd(n,m){return parseInt(Math.random()*(m-n)) + n;}
        window.onload = function(){
            var aUl = document.getElementsByTagName('ul');

            function createLI(){
                var oLi = document.createElement('li');
                oLi.style.height = rnd(100,500) + 'px';
                oLi.style.background = 'rgb('+rnd(0,256)+','+rnd(0,256)+','+rnd(0,256)+')';
                return oLi;
            }
            function createLI20(){
                for(var i = 0; i < 20; i++){
                    var oLi = createLI();
                    var arrUl = [];
                    for(var j = 0; j<aUl.length; j++){
                        arrUl.push(aUl[j]);
                    }

                    arrUl.sort(function(n1,n2){
                        return n1.offsetHeight - n2.offsetHeight;
                    });
                    arrUl[0].appendChild(oLi)
                }
            }

            //如果走到最后了,再弄20個(gè)li专酗,加到頁面上
            createLI20();
            //當(dāng)整個(gè)頁面的高度 >  可視區(qū)+滾動(dòng)距離
            //alert(document.documentElement.scrollHeight);

            window.onscroll = function(){
                //可視區(qū)高度
                var clientH = document.documentElement.clientHeight;
                //滾動(dòng)距離
                var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;

                //可視區(qū)底邊
                var clientBottom = clientH + scrollTop;
                //頁面內(nèi)容高度
                var pageHeight = document.documentElement.scrollHeight;
                document.title = pageHeight + ',' + clientBottom;
                if(pageHeight <= clientBottom){
                    alert(pageHeight + ',' + clientBottom);
                    createLI20();
                }
            };
        };
    </script>
</head>
<body>
<ul></ul>
<ul></ul>
<ul></ul>
</body>

4.拖拽

拖拽:
    大象放冰箱:
        1)打開冰箱門
        2)把大象放進(jìn)去
        3)把門關(guān)上
    拖拽:
        1)鼠標(biāo)按下
        2)鼠標(biāo)移動(dòng)
        3)鼠標(biāo)松開
    新事件:
        按下:  onmousedown
        移動(dòng):  onmousemove
        松開:  onmouseup

阻止默認(rèn)行為:
    return false;
        兼容:chrome  ff  ie9+
    針對(duì)低級(jí)瀏覽器:
        事件捕獲
            obj.setCapture();
磁性吸附例子:
   <style>
        *{margin:0; padding:0;}
        #div1{
            width: 100px;
            height: 100px;
            background: red;
            position: absolute;
            left:200px;
            top:200px;
        }
    </style>
    <script>
        window.onload = function(){
            var oDiv = document.getElementById('div1');
            oDiv.onmousedown = function(ev){
                var oEvent = ev || event;
                var disX = oEvent.clientX - oDiv.offsetLeft;
                var disY = oEvent.clientY - oDiv.offsetTop;
                document.onmousemove = function(ev){
                    var oEvent = ev || event;
                    var l = oEvent.clientX - disX;
                    var t = oEvent.clientY  - disY;

                    if(l <= 100){
                        l = 0;
                    }
                    if (l >= (document.documentElement.clientWidth - oDiv.offsetWidth-100)){
                        l = document.documentElement.clientWidth - oDiv.offsetWidth;
                    }
                    if(t <= 100){
                        t = 0;
                    }
                    if(t >= (document.documentElement.clientHeight - oDiv.offsetHeight-100)){
                        t = document.documentElement.clientHeight - oDiv.offsetHeight;
                    }


                    oDiv.style.left = l + 'px';
                    oDiv.style.top = t + 'px';
                };
                document.onmouseup = function(){
                    document.onmousemove = null;
                    document.onmouseup = null;
                    oDiv.releaseCapture && oDiv.releaseCapture();
                };
                oDiv.setCapture && oDiv.setCapture();
                return false;

            };
        };
    </script>
</head>
<body>
<div id="div1"></div>
</body>

虛線框拖拽
    <style>
        *{margin:0; padding:0;}
        #div1{
            width: 100px;
            height: 100px;
            background: yellow;
            position: absolute;
        }
    </style>
    <script>
        window.onload = function(){
            var oDiv = document.getElementById('div1');

            var border = 3;
            oDiv.onmousedown = function(ev){
                var oEvent = ev || event;

                //創(chuàng)建一個(gè)虛線框 div 有邊框
                var newDiv = document.createElement('div');
                newDiv.style.width = oDiv.offsetWidth - border*2 + 'px';
                newDiv.style.height = oDiv.offsetHeight - border*2 + 'px';
                newDiv.style.position = 'absolute';
                newDiv.style.left = oDiv.offsetLeft + 'px';
                newDiv.style.top = oDiv.offsetTop + 'px';
                newDiv.style.border = border + 'px dashed red';

                document.body.appendChild(newDiv);

                var disX = oEvent.clientX - oDiv.offsetLeft;
                var disY = oEvent.clientY - oDiv.offsetTop;
                document.onmousemove = function(ev){
                    var oEvent = ev || event;
                    var l = oEvent.clientX - disX;
                    var t = oEvent.clientY  - disY;

                    if(l <= 0){
                        l = 0;
                    }
                    if (l >= (document.documentElement.clientWidth - oDiv.offsetWidth)){
                        l = document.documentElement.clientWidth - oDiv.offsetWidth;
                    }
                    if(t <= 0){
                        t = 0;
                    }
                    if(t >= (document.documentElement.clientHeight - oDiv.offsetHeight)){
                        t = document.documentElement.clientHeight - oDiv.offsetHeight;
                    }


                    newDiv.style.left = l + 'px';
                    newDiv.style.top = t + 'px';
                };
                document.onmouseup = function(){
                    oDiv.style.left = newDiv.offsetLeft + 'px';
                    oDiv.style.top = newDiv.offsetTop + 'px';
                    document.body.removeChild(newDiv);


                    document.onmousemove = null;
                    document.onmouseup = null;
                    oDiv.releaseCapture && oDiv.releaseCapture();
                };
                oDiv.setCapture && oDiv.setCapture();
                return false;

            };
        };
    </script>
</head>
<body>
<div id="div1"></div>
</body>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末睹逃,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子祷肯,更是在濱河造成了極大的恐慌沉填,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,548評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件佑笋,死亡現(xiàn)場離奇詭異翼闹,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)允青,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門橄碾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來卵沉,“玉大人,你說我怎么就攤上這事法牲∈泛梗” “怎么了?”我有些...
    開封第一講書人閱讀 167,990評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵拒垃,是天一觀的道長停撞。 經(jīng)常有香客問我,道長悼瓮,這世上最難降的妖魔是什么戈毒? 我笑而不...
    開封第一講書人閱讀 59,618評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮横堡,結(jié)果婚禮上埋市,老公的妹妹穿的比我還像新娘。我一直安慰自己命贴,他們只是感情好道宅,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,618評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著胸蛛,像睡著了一般污茵。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上葬项,一...
    開封第一講書人閱讀 52,246評(píng)論 1 308
  • 那天泞当,我揣著相機(jī)與錄音,去河邊找鬼民珍。 笑死襟士,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的穷缤。 我是一名探鬼主播敌蜂,決...
    沈念sama閱讀 40,819評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼箩兽,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼津肛!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起汗贫,我...
    開封第一講書人閱讀 39,725評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤身坐,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后落包,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體部蛇,經(jīng)...
    沈念sama閱讀 46,268評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,356評(píng)論 3 340
  • 正文 我和宋清朗相戀三年咐蝇,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了涯鲁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,488評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖抹腿,靈堂內(nèi)的尸體忽然破棺而出岛请,到底是詐尸還是另有隱情,我是刑警寧澤警绩,帶...
    沈念sama閱讀 36,181評(píng)論 5 350
  • 正文 年R本政府宣布崇败,位于F島的核電站,受9級(jí)特大地震影響肩祥,放射性物質(zhì)發(fā)生泄漏后室。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,862評(píng)論 3 333
  • 文/蒙蒙 一混狠、第九天 我趴在偏房一處隱蔽的房頂上張望岸霹。 院中可真熱鬧,春花似錦将饺、人聲如沸松申。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽贸桶。三九已至,卻和暖如春桌肴,著一層夾襖步出監(jiān)牢的瞬間皇筛,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評(píng)論 1 272
  • 我被黑心中介騙來泰國打工坠七, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留水醋,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,897評(píng)論 3 376
  • 正文 我出身青樓彪置,卻偏偏與公主長得像拄踪,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子拳魁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,500評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容