一、效果图如下 上面的效果图,效果需求如下 1、还没加载图片的时候,默认显示加载图片背景图 2、刚开始进入页面,自动加载第一屏幕的图片 3、下拉界面,当一张图片容器完全显露出屏幕,即刻加载图片,替换背景图 4、加载图片的时候,有渐进显示图片效果 二、难点 1)如何Ajax请求数据 2)如何动态将json数据绑定到html中。 3)如何通过对图片的定位计算,触发图片懒加载机制 4)加分项,显示图片时有渐现的过渡动画 三、前期知识点 1)Ajax相关知识,XMLHttpRequest对象,所有现代的浏览器都支持此对象。 2)innerHTML,数据绑定使用字符串拼接的方式 3)HTML DOM getAttribute() 方法,返回自定属性名的属性值(主要是用于返回自定义属性的属性值) 4)图片的 onload事件,当图片的src属性的属性值为正确(即能成功加载图片),才能触发图片的onload事件 四、难点逐一攻破 1)如何Ajax请求数据 分四步走 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 // 1)首先创建一个Ajax对象 var xhr = new XMLHttpRequest; // 2)打开我们需要请求的数据的那个文件地址 // URL地址后面加随机数目的:清除每一次请求数据时候(get请求)产生的缓存 // 因为每次访问的地址不一样,样浏览器就不会尝试缓存来自服务器的响应,读取本地缓存的数据。 xhr.open('get', 'json/newsList.txt?' + Math.random(), false); // false代表同步 // 3)监听请求的状态 xhr.onreadystatechange = function () { if (xhr.readyState === 4 && /^2\d{2}$/.test(xhr.status)) { var val = xhr.responseText; jsonData = utils.jsonParse(val); } } // 4)发送请求 xhr.send(null); 2)如何动态将json数据绑定到html中。 字符串拼接的方式(数据绑定中最常用的方式),即通过使用innerHTML,对页面元素进行字符串拼接,再重新渲染到页面中 1 2 3 4 5 6 7 8 9 10 11 12 13 var str = ""; if (jsonData) { for (var i = 0, len = jsonData.length; i < len; i++) { var curData = jsonData[i]; str += '
  • '; str += '
    '; str += '

    ' + curData["title"] + '

    '; str += '

    ' + curData["desc"] + '

    '; str += '
    '; str += '