国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > AJAX > 正文

JS通過ajax + 多列布局 + 自動加載實現瀑布流效果

2024-09-01 08:34:00
字體:
來源:轉載
供稿:網友

Ajax

•說明:本文效果是無限加載的,意思就是你一直滾動就會一直加載圖片出現,通過鼠標滾動距離來判斷的,所以不是說的那種加載一次就停了的那種,那種demo下次我會再做一次

css部分用的是html5+css3的新屬性,圖片會自動添加到每行的最頂端上去,而不是用js去判斷。去除了一些js計算的麻煩。

css部分:

 * {      margin: 0;      padding: 0;      box-sizing: border-box;    }    body {      background: #352323 url(images/a.png);    }    img {      display: block;    }    section {      max-width: 95%;      margin: 0 auto;      overflow: hidden;      column-count: 5;      column-gap: 0;      column-fill: auto;    }    figure {      border: 2px solid pink;      margin: 0 5px 10px;      break-inside: avoid;      padding: 5px;    }    figure img {      width: 100%;    }    figcaption {      padding: 10px 0;      text-align: center;      font-weight: 900;      color: #a77869;    }

html部分:

通過js插入節點,因為后臺不知道多少張圖片

 <section>    <!-- <figure>      <img src="images/1.jpg"      <figcaption>往后余生,風雪是你</figcaption>    </figure> --></section>

js有兩個部分,一個是我封裝的ajax函數,和一些判斷函數

第一部分

window.onload = function() {    var section = document.getElementsByTagName('section')[0];    //運行ajax函數;    ajax('get', 'active.php', 'num=10', function(data) {      //解析json對象      let img_data = JSON.parse(data);      console.log(img_data);      //循環建多少圖片配多少標簽      for (let i = 0; i < img_data.length; i++) {        //建立figure標簽        let figure = document.createElement('figure');        //創建兩個子元素img和figcaption,并賦值        let img = document.createElement('img');        img.src = img_data[i];        let figcaption = document.createElement('figcaption');        figcaption.innerHTML = '往后余生,風雪是你';        //插節點        figure.appendChild(img);        figure.appendChild(figcaption);        section.appendChild(figure);      }    });    document.onscroll = function() {      var scrollTop = document.documentElement.scrollTop; //距離網頁高度      console.log(scrollTop);      // var ks = document.documentElement.clientHeight; //可是化窗口高度      var ks = window.innerHeight || document.documentElement.clientHeight; //可是化窗口高度/兼容方法      var ht = document.documentElement.offsetHeight; //html總高度      // console.log(ht);      if (scrollTop + 1 >= ht - ks) { //鼠標滾動的距離大于html總高度-窗口的距離(也就是html在可視窗口之下的總高度)時 觸發函數;        //執行函數        ajax('get', 'active.php', 'num=10', function(data) {          //解析json對象          let img_data = JSON.parse(data);          console.log(img_data);          //循環建多少圖片配多少標簽          for (let i = 0; i < img_data.length; i++) {            //建立figure標簽            let figure = document.createElement('figure');            //創建兩個子元素img和figcaption,并賦值            let img = document.createElement('img');            img.src = img_data[i];            let figcaption = document.createElement('figcaption');            figcaption.innerHTML = '往后余生,風雪是你';            //插節點            figure.appendChild(img);            figure.appendChild(figcaption);            section.appendChild(figure);          }        });      }    }  };

第二部分:

/** * ajax封裝 * @param {string} mehod請求數據方法 * @param {string} url 請求地址 * @param {string} data 請求參數 * @param {[functiong]} success [請求成功之后執行的函數0] * @return {[none]} none */function ajax(mehod, url, data, success) {  var xhr = null;  if (window.XMLHttpRequest) {    xhr = new XMLHttpRequest();  } else {    xhr = new ActiveXObject("Microsoft.xmlhttp")  }  //如果有參數get方法需要拼接字符串url+?+data  if (mehod === 'get' && data) {    url += '?' + data;  }  //open方法  xhr.open(mehod, url, true);  //send方法  if (mehod === 'get') {    xhr.send();  } else {    xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded');    xhr(data);  }  xhr.onreadystatechange = function() {    if (xhr.readyState === 4 && xhr.status === 200) {      success && success(xhr.responseText);    }  }

php后臺數據

因為主要功能偏向前端,所以后端就通過本地文件載入的

<?php header("Content-type:text/html;charset=utf-8");$num = $_GET['num']; // api調用者傳遞的需要的圖片頁數 $img = file("img.txt");// var_dump($img);$array_url = array();for($i=0;$i<$num;$i++){  $url = array_rand($img);  array_push($array_url,$img[$url]);}$a = json_encode($array_url);echo $a;

JS,ajax,多列布局,自動加載,瀑布流

總結

以上所述是小編給大家介紹的JS通過ajax + 多列布局 + 自動加載來實現瀑布流效果,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 米易县| 麻栗坡县| 雅安市| 涪陵区| 资讯 | 鄂伦春自治旗| 宁津县| 彰武县| 定结县| 江都市| 胶南市| 民和| 珲春市| 会东县| 扶风县| 高青县| 原阳县| 安化县| 固镇县| 苏尼特右旗| 乌兰察布市| 湛江市| 郯城县| 潼关县| 蓬安县| 建宁县| 贵德县| 上高县| 巫溪县| 玉溪市| 山阴县| 长岛县| 安宁市| 伊吾县| 崇明县| 阜新市| 桂东县| 霍州市| 兴安县| 克拉玛依市| 平阳县|